* accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
+ * 14 Apr 2012 - (mtc) Added support for boost::hash
+ * 28 Dec 2010 - (mtc) Added cbegin and cend (and crbegin and crend) for C++Ox compatibility.
* 10 Mar 2010 - (mtc) fill method added, matching resolution of the standard library working group.
* See <http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#776> or Trac issue #3168
* Eventually, we should remove "assign" which is now a synonym for "fill" (Marshall Clow)
// Handles broken standard libraries better than <iterator>
#include <boost/detail/iterator.hpp>
#include <boost/throw_exception.hpp>
+#include <boost/functional/hash_fwd.hpp>
#include <algorithm>
// FIXES for broken compilers
typedef std::ptrdiff_t difference_type;
// iterator support
- iterator begin() { return elems; }
- const_iterator begin() const { return elems; }
- iterator end() { return elems+N; }
- const_iterator end() const { return elems+N; }
+ iterator begin() { return elems; }
+ const_iterator begin() const { return elems; }
+ const_iterator cbegin() const { return elems; }
+
+ iterator end() { return elems+N; }
+ const_iterator end() const { return elems+N; }
+ const_iterator cend() const { return elems+N; }
// reverse iterator support
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
const_reverse_iterator rbegin() const {
return const_reverse_iterator(end());
}
+ const_reverse_iterator crbegin() const {
+ return const_reverse_iterator(end());
+ }
+
reverse_iterator rend() { return reverse_iterator(begin()); }
const_reverse_iterator rend() const {
return const_reverse_iterator(begin());
}
+ const_reverse_iterator crend() const {
+ return const_reverse_iterator(begin());
+ }
// operator[]
reference operator[](size_type i)
{
- BOOST_ASSERT( i < N && "out of range" );
+ BOOST_ASSERT_MSG( i < N, "out of range" );
return elems[i];
}
const_reference operator[](size_type i) const
{
- BOOST_ASSERT( i < N && "out of range" );
+ BOOST_ASSERT_MSG( i < N, "out of range" );
return elems[i];
}
typedef std::ptrdiff_t difference_type;
// iterator support
- iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); }
- const_iterator begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
- iterator end() { return begin(); }
- const_iterator end() const { return begin(); }
+ iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); }
+ const_iterator begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
+ const_iterator cbegin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
+
+ iterator end() { return begin(); }
+ const_iterator end() const { return begin(); }
+ const_iterator cend() const { return cbegin(); }
// reverse iterator support
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
const_reverse_iterator rbegin() const {
return const_reverse_iterator(end());
}
+ const_reverse_iterator crbegin() const {
+ return const_reverse_iterator(end());
+ }
+
reverse_iterator rend() { return reverse_iterator(begin()); }
const_reverse_iterator rend() const {
return const_reverse_iterator(begin());
}
+ const_reverse_iterator crend() const {
+ return const_reverse_iterator(begin());
+ }
// operator[]
reference operator[](size_type /*i*/)
static reference failed_rangecheck () {
std::out_of_range e("attempt to access element of an empty array");
boost::throw_exception(e);
-#if defined(BOOST_NO_EXCEPTIONS) || !defined(BOOST_MSVC)
+#if defined(BOOST_NO_EXCEPTIONS) || (!defined(BOOST_MSVC) && !defined(__PATHSCALE__))
//
// We need to return something here to keep
// some compilers happy: however we will never
x.swap(y);
}
- // Specific for boost::array: simply returns its elems data member.
+#if defined(__SUNPRO_CC)
+// Trac ticket #4757; the Sun Solaris compiler can't handle
+// syntax like 'T(&get_c_array(boost::array<T,N>& arg))[N]'
+//
+// We can't just use this for all compilers, because the
+// borland compilers can't handle this form.
+ namespace detail {
+ template <typename T, std::size_t N> struct c_array
+ {
+ typedef T type[N];
+ };
+ }
+
+ // Specific for boost::array: simply returns its elems data member.
+ template <typename T, std::size_t N>
+ typename detail::c_array<T,N>::type& get_c_array(boost::array<T,N>& arg)
+ {
+ return arg.elems;
+ }
+
+ // Specific for boost::array: simply returns its elems data member.
+ template <typename T, std::size_t N>
+ typename const detail::c_array<T,N>::type& get_c_array(const boost::array<T,N>& arg)
+ {
+ return arg.elems;
+ }
+#else
+// Specific for boost::array: simply returns its elems data member.
template <typename T, std::size_t N>
T(&get_c_array(boost::array<T,N>& arg))[N]
{
{
return arg.elems;
}
-
+#endif
+
#if 0
// Overload for std::array, assuming that std::array will have
// explicit conversion functions as discussed at the WG21 meeting
}
#endif
+
+ template<class T, std::size_t N>
+ std::size_t hash_value(const array<T,N>& arr)
+ {
+ return boost::hash_range(arr.begin(), arr.end());
+ }
+
} /* namespace boost */
//
// boost/assert.hpp - BOOST_ASSERT(expr)
+// BOOST_ASSERT_MSG(expr, msg)
+// BOOST_VERIFY(expr)
//
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
// Copyright (c) 2007 Peter Dimov
+// Copyright (c) Beman Dawes 2011
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// See http://www.boost.org/libs/utility/assert.html for documentation.
//
+//
+// Stop inspect complaining about use of 'assert':
+//
+// boostinspect:naassert_macro
+//
+
+//--------------------------------------------------------------------------------------//
+// BOOST_ASSERT //
+//--------------------------------------------------------------------------------------//
+
#undef BOOST_ASSERT
#if defined(BOOST_DISABLE_ASSERTS)
#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
+#include <boost/config.hpp>
#include <boost/current_function.hpp>
namespace boost
{
-
-void assertion_failed(char const * expr, char const * function, char const * file, long line); // user defined
-
+ void assertion_failed(char const * expr,
+ char const * function, char const * file, long line); // user defined
} // namespace boost
-#define BOOST_ASSERT(expr) ((expr)? ((void)0): ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
+#define BOOST_ASSERT(expr) (BOOST_LIKELY(!!(expr)) \
+ ? ((void)0) \
+ : ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
#else
# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
# define BOOST_ASSERT(expr) assert(expr)
#endif
+//--------------------------------------------------------------------------------------//
+// BOOST_ASSERT_MSG //
+//--------------------------------------------------------------------------------------//
+
+# undef BOOST_ASSERT_MSG
+
+#if defined(BOOST_DISABLE_ASSERTS) || defined(NDEBUG)
+
+ #define BOOST_ASSERT_MSG(expr, msg) ((void)0)
+
+#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
+
+ #include <boost/config.hpp>
+ #include <boost/current_function.hpp>
+
+ namespace boost
+ {
+ void assertion_failed_msg(char const * expr, char const * msg,
+ char const * function, char const * file, long line); // user defined
+ } // namespace boost
+
+ #define BOOST_ASSERT_MSG(expr, msg) (BOOST_LIKELY(!!(expr)) \
+ ? ((void)0) \
+ : ::boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
+
+#else
+ #ifndef BOOST_ASSERT_HPP
+ #define BOOST_ASSERT_HPP
+ #include <cstdlib>
+ #include <iostream>
+ #include <boost/config.hpp>
+ #include <boost/current_function.hpp>
+
+ // IDE's like Visual Studio perform better if output goes to std::cout or
+ // some other stream, so allow user to configure output stream:
+ #ifndef BOOST_ASSERT_MSG_OSTREAM
+ # define BOOST_ASSERT_MSG_OSTREAM std::cerr
+ #endif
+
+ namespace boost
+ {
+ namespace assertion
+ {
+ namespace detail
+ {
+ // Note: The template is needed to make the function non-inline and avoid linking errors
+ template< typename CharT >
+ BOOST_NOINLINE void assertion_failed_msg(CharT const * expr, char const * msg, char const * function,
+ char const * file, long line)
+ {
+ BOOST_ASSERT_MSG_OSTREAM
+ << "***** Internal Program Error - assertion (" << expr << ") failed in "
+ << function << ":\n"
+ << file << '(' << line << "): " << msg << std::endl;
+#ifdef UNDER_CE
+ // The Windows CE CRT library does not have abort() so use exit(-1) instead.
+ std::exit(-1);
+#else
+ std::abort();
+#endif
+ }
+ } // detail
+ } // assertion
+ } // detail
+ #endif
+
+ #define BOOST_ASSERT_MSG(expr, msg) (BOOST_LIKELY(!!(expr)) \
+ ? ((void)0) \
+ : ::boost::assertion::detail::assertion_failed_msg(#expr, msg, \
+ BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
+#endif
+
+//--------------------------------------------------------------------------------------//
+// BOOST_VERIFY //
+//--------------------------------------------------------------------------------------//
+
#undef BOOST_VERIFY
#if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
--- /dev/null
+//-----------------------------------------------------------------------------
+// boost blank.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2003
+// Eric Friedman
+//
+// 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)
+
+#ifndef BOOST_BLANK_HPP
+#define BOOST_BLANK_HPP
+
+#include "boost/blank_fwd.hpp"
+
+#if !defined(BOOST_NO_IOSTREAM)
+#include <iosfwd> // for std::basic_ostream forward declare
+#include "boost/detail/templated_streams.hpp"
+#endif // BOOST_NO_IOSTREAM
+
+#include "boost/mpl/bool.hpp"
+#include "boost/type_traits/is_empty.hpp"
+#include "boost/type_traits/is_pod.hpp"
+#include "boost/type_traits/is_stateless.hpp"
+
+namespace boost {
+
+struct blank
+{
+};
+
+// type traits specializations
+//
+
+template <>
+struct is_pod< blank >
+ : mpl::true_
+{
+};
+
+template <>
+struct is_empty< blank >
+ : mpl::true_
+{
+};
+
+template <>
+struct is_stateless< blank >
+ : mpl::true_
+{
+};
+
+// relational operators
+//
+
+inline bool operator==(const blank&, const blank&)
+{
+ return true;
+}
+
+inline bool operator<=(const blank&, const blank&)
+{
+ return true;
+}
+
+inline bool operator>=(const blank&, const blank&)
+{
+ return true;
+}
+
+inline bool operator!=(const blank&, const blank&)
+{
+ return false;
+}
+
+inline bool operator<(const blank&, const blank&)
+{
+ return false;
+}
+
+inline bool operator>(const blank&, const blank&)
+{
+ return false;
+}
+
+// streaming support
+//
+#if !defined(BOOST_NO_IOSTREAM)
+
+BOOST_TEMPLATED_STREAM_TEMPLATE(E,T)
+inline BOOST_TEMPLATED_STREAM(ostream, E,T)& operator<<(
+ BOOST_TEMPLATED_STREAM(ostream, E,T)& out
+ , const blank&
+ )
+{
+ // (output nothing)
+ return out;
+}
+
+#endif // BOOST_NO_IOSTREAM
+
+} // namespace boost
+
+#endif // BOOST_BLANK_HPP
--- /dev/null
+//-----------------------------------------------------------------------------
+// boost blank_fwd.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2003
+// Eric Friedman
+//
+// 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)
+
+#ifndef BOOST_BLANK_FWD_HPP
+#define BOOST_BLANK_FWD_HPP
+
+namespace boost {
+
+struct blank;
+
+} // namespace boost
+
+#endif // BOOST_BLANK_FWD_HPP
+++ /dev/null
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to 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).
-//
-// See http://www.boost.org/libs/utility for most recent version including documentation.
-
-// See boost/detail/call_traits.hpp and boost/detail/ob_call_traits.hpp
-// for full copyright notices.
-
-#ifndef BOOST_CALL_TRAITS_HPP
-#define BOOST_CALL_TRAITS_HPP
-
-#ifndef BOOST_CONFIG_HPP
-#include <boost/config.hpp>
-#endif
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-#include <boost/detail/ob_call_traits.hpp>
-#else
-#include <boost/detail/call_traits.hpp>
-#endif
-
-#endif // BOOST_CALL_TRAITS_HPP
--- /dev/null
+// Copyright David Abrahams 2006. 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)
+#ifndef BOOST_CONCEPT_ASSERT_DWA2006430_HPP
+# define BOOST_CONCEPT_ASSERT_DWA2006430_HPP
+
+# include <boost/config.hpp>
+# include <boost/detail/workaround.hpp>
+
+// The old protocol used a constraints() member function in concept
+// checking classes. If the compiler supports SFINAE, we can detect
+// that function and seamlessly support the old concept checking
+// classes. In this release, backward compatibility with the old
+// concept checking classes is enabled by default, where available.
+// The old protocol is deprecated, though, and backward compatibility
+// will no longer be the default in the next release.
+
+# if !defined(BOOST_NO_OLD_CONCEPT_SUPPORT) \
+ && !defined(BOOST_NO_SFINAE) \
+ \
+ && !(BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4)) \
+ && !(BOOST_WORKAROUND(__GNUC__, == 2))
+
+// Note: gcc-2.96 through 3.3.x have some SFINAE, but no ability to
+// check for the presence of particularmember functions.
+
+# define BOOST_OLD_CONCEPT_SUPPORT
+
+# endif
+
+# ifdef BOOST_MSVC
+# include <boost/concept/detail/msvc.hpp>
+# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+# include <boost/concept/detail/borland.hpp>
+# else
+# include <boost/concept/detail/general.hpp>
+# endif
+
+ // Usage, in class or function context:
+ //
+ // BOOST_CONCEPT_ASSERT((UnaryFunctionConcept<F,bool,int>));
+ //
+# define BOOST_CONCEPT_ASSERT(ModelInParens) \
+ BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens)
+
+#endif // BOOST_CONCEPT_ASSERT_DWA2006430_HPP
--- /dev/null
+// Copyright David Abrahams 2009. 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)
+#ifndef BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
+# define BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
+
+namespace boost
+{
+ namespace concepts {}
+
+# if defined(BOOST_HAS_CONCEPTS) && !defined(BOOST_CONCEPT_NO_BACKWARD_KEYWORD)
+ namespace concept = concepts;
+# endif
+} // namespace boost::concept
+
+#endif // BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
--- /dev/null
+// Copyright David Abrahams 2006. 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)
+#ifndef BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
+# define BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
+
+# include <boost/preprocessor/cat.hpp>
+# include <boost/concept/detail/backward_compatibility.hpp>
+
+namespace boost { namespace concepts {
+
+template <class ModelFnPtr>
+struct require;
+
+template <class Model>
+struct require<void(*)(Model)>
+{
+ enum { instantiate = sizeof((((Model*)0)->~Model()), 3) };
+};
+
+# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
+ enum \
+ { \
+ BOOST_PP_CAT(boost_concept_check,__LINE__) = \
+ boost::concepts::require<ModelFnPtr>::instantiate \
+ }
+
+}} // namespace boost::concept
+
+#endif // BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
--- /dev/null
+// Copyright David Abrahams 2006. 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)
+#ifndef BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
+# define BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
+# include <boost/preprocessor/seq/for_each_i.hpp>
+# include <boost/preprocessor/seq/enum.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/cat.hpp>
+#endif // BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
+
+// BOOST_concept(SomeName, (p1)(p2)...(pN))
+//
+// Expands to "template <class p1, class p2, ...class pN> struct SomeName"
+//
+// Also defines an equivalent SomeNameConcept for backward compatibility.
+// Maybe in the next release we can kill off the "Concept" suffix for good.
+#if BOOST_WORKAROUND(__GNUC__, <= 3)
+# define BOOST_concept(name, params) \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct name; /* forward declaration */ \
+ \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct BOOST_PP_CAT(name,Concept) \
+ : name< BOOST_PP_SEQ_ENUM(params) > \
+ { \
+ /* at least 2.96 and 3.4.3 both need this */ \
+ BOOST_PP_CAT(name,Concept)(); \
+ }; \
+ \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct name
+#else
+# define BOOST_concept(name, params) \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct name; /* forward declaration */ \
+ \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct BOOST_PP_CAT(name,Concept) \
+ : name< BOOST_PP_SEQ_ENUM(params) > \
+ { \
+ }; \
+ \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct name
+#endif
+
+// Helper for BOOST_concept, above.
+# define BOOST_CONCEPT_typename(r, ignored, index, t) \
+ BOOST_PP_COMMA_IF(index) typename t
+
--- /dev/null
+// Copyright David Abrahams 2006. 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)
+# undef BOOST_concept_typename
+# undef BOOST_concept
--- /dev/null
+// Copyright David Abrahams 2006. 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)
+#ifndef BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
+# define BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
+
+# include <boost/preprocessor/cat.hpp>
+# include <boost/concept/detail/backward_compatibility.hpp>
+
+# ifdef BOOST_OLD_CONCEPT_SUPPORT
+# include <boost/concept/detail/has_constraints.hpp>
+# include <boost/mpl/if.hpp>
+# endif
+
+// This implementation works on Comeau and GCC, all the way back to
+// 2.95
+namespace boost { namespace concepts {
+
+template <class ModelFn>
+struct requirement_;
+
+namespace detail
+{
+ template <void(*)()> struct instantiate {};
+}
+
+template <class Model>
+struct requirement
+{
+ static void failed() { ((Model*)0)->~Model(); }
+};
+
+struct failed {};
+
+template <class Model>
+struct requirement<failed ************ Model::************>
+{
+ static void failed() { ((Model*)0)->~Model(); }
+};
+
+# ifdef BOOST_OLD_CONCEPT_SUPPORT
+
+template <class Model>
+struct constraint
+{
+ static void failed() { ((Model*)0)->constraints(); }
+};
+
+template <class Model>
+struct requirement_<void(*)(Model)>
+ : mpl::if_<
+ concepts::not_satisfied<Model>
+ , constraint<Model>
+ , requirement<failed ************ Model::************>
+ >::type
+{};
+
+# else
+
+// For GCC-2.x, these can't have exactly the same name
+template <class Model>
+struct requirement_<void(*)(Model)>
+ : requirement<failed ************ Model::************>
+{};
+
+# endif
+
+# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
+ typedef ::boost::concepts::detail::instantiate< \
+ &::boost::concepts::requirement_<ModelFnPtr>::failed> \
+ BOOST_PP_CAT(boost_concept_check,__LINE__)
+
+}}
+
+#endif // BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
--- /dev/null
+// Copyright David Abrahams 2006. 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)
+#ifndef BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
+# define BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
+
+# include <boost/mpl/bool.hpp>
+# include <boost/detail/workaround.hpp>
+# include <boost/concept/detail/backward_compatibility.hpp>
+
+namespace boost { namespace concepts {
+
+namespace detail
+{
+
+// Here we implement the metafunction that detects whether a
+// constraints metafunction exists
+ typedef char yes;
+ typedef char (&no)[2];
+
+ template <class Model, void (Model::*)()>
+ struct wrap_constraints {};
+
+#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580) || defined(__CUDACC__)
+ // Work around the following bogus error in Sun Studio 11, by
+ // turning off the has_constraints function entirely:
+ // Error: complex expression not allowed in dependent template
+ // argument expression
+ inline no has_constraints_(...);
+#else
+ template <class Model>
+ inline yes has_constraints_(Model*, wrap_constraints<Model,&Model::constraints>* = 0);
+ inline no has_constraints_(...);
+#endif
+}
+
+// This would be called "detail::has_constraints," but it has a strong
+// tendency to show up in error messages.
+template <class Model>
+struct not_satisfied
+{
+ BOOST_STATIC_CONSTANT(
+ bool
+ , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) );
+ typedef mpl::bool_<value> type;
+};
+
+}} // namespace boost::concepts::detail
+
+#endif // BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
--- /dev/null
+// Copyright David Abrahams 2006. 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)
+#ifndef BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
+# define BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
+
+# include <boost/preprocessor/cat.hpp>
+# include <boost/concept/detail/backward_compatibility.hpp>
+
+# ifdef BOOST_OLD_CONCEPT_SUPPORT
+# include <boost/concept/detail/has_constraints.hpp>
+# include <boost/mpl/if.hpp>
+# endif
+
+
+namespace boost { namespace concepts {
+
+
+template <class Model>
+struct check
+{
+ virtual void failed(Model* x)
+ {
+ x->~Model();
+ }
+};
+
+# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
+struct failed {};
+template <class Model>
+struct check<failed ************ Model::************>
+{
+ virtual void failed(Model* x)
+ {
+ x->~Model();
+ }
+};
+# endif
+
+# ifdef BOOST_OLD_CONCEPT_SUPPORT
+
+namespace detail
+{
+ // No need for a virtual function here, since evaluating
+ // not_satisfied below will have already instantiated the
+ // constraints() member.
+ struct constraint {};
+}
+
+template <class Model>
+struct require
+ : mpl::if_c<
+ not_satisfied<Model>::value
+ , detail::constraint
+# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
+ , check<Model>
+# else
+ , check<failed ************ Model::************>
+# endif
+ >::type
+{};
+
+# else
+
+template <class Model>
+struct require
+# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
+ : check<Model>
+# else
+ : check<failed ************ Model::************>
+# endif
+{};
+
+# endif
+
+# if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+
+//
+// The iterator library sees some really strange errors unless we
+// do things this way.
+//
+template <class Model>
+struct require<void(*)(Model)>
+{
+ virtual void failed(Model*)
+ {
+ require<Model>();
+ }
+};
+
+# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
+enum \
+{ \
+ BOOST_PP_CAT(boost_concept_check,__LINE__) = \
+ sizeof(::boost::concepts::require<ModelFnPtr>) \
+}
+
+# else // Not vc-7.1
+
+template <class Model>
+require<Model>
+require_(void(*)(Model));
+
+# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
+enum \
+{ \
+ BOOST_PP_CAT(boost_concept_check,__LINE__) = \
+ sizeof(::boost::concepts::require_((ModelFnPtr)0)) \
+}
+
+# endif
+}}
+
+#endif // BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
--- /dev/null
+// Copyright David Abrahams 2006. 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)
+#ifndef BOOST_CONCEPT_USAGE_DWA2006919_HPP
+# define BOOST_CONCEPT_USAGE_DWA2006919_HPP
+
+# include <boost/concept/assert.hpp>
+# include <boost/detail/workaround.hpp>
+# include <boost/concept/detail/backward_compatibility.hpp>
+
+namespace boost { namespace concepts {
+
+# if BOOST_WORKAROUND(__GNUC__, == 2)
+
+# define BOOST_CONCEPT_USAGE(model) ~model()
+
+# else
+
+template <class Model>
+struct usage_requirements
+{
+ ~usage_requirements() { ((Model*)0)->~Model(); }
+};
+
+# if BOOST_WORKAROUND(__GNUC__, <= 3)
+
+# define BOOST_CONCEPT_USAGE(model) \
+ model(); /* at least 2.96 and 3.4.3 both need this :( */ \
+ BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); \
+ ~model()
+
+# else
+
+# define BOOST_CONCEPT_USAGE(model) \
+ BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); \
+ ~model()
+
+# endif
+
+# endif
+
+}} // namespace boost::concepts
+
+#endif // BOOST_CONCEPT_USAGE_DWA2006919_HPP
--- /dev/null
+//
+// (C) Copyright Jeremy Siek 2000.
+// Copyright 2002 The Trustees of Indiana University.
+//
+// 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)
+//
+// Revision History:
+// 05 May 2001: Workarounds for HP aCC from Thomas Matelich. (Jeremy Siek)
+// 02 April 2001: Removed limits header altogether. (Jeremy Siek)
+// 01 April 2001: Modified to use new <boost/limits.hpp> header. (JMaddock)
+//
+
+// See http://www.boost.org/libs/concept_check for documentation.
+
+#ifndef BOOST_CONCEPT_CHECKS_HPP
+# define BOOST_CONCEPT_CHECKS_HPP
+
+# include <boost/concept/assert.hpp>
+
+# include <boost/iterator.hpp>
+# include <boost/type_traits/conversion_traits.hpp>
+# include <utility>
+# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/is_void.hpp>
+# include <boost/mpl/assert.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/detail/workaround.hpp>
+# include <boost/detail/iterator.hpp>
+
+# include <boost/concept/usage.hpp>
+# include <boost/concept/detail/concept_def.hpp>
+
+namespace boost
+{
+
+ //
+ // Backward compatibility
+ //
+
+ template <class Model>
+ inline void function_requires(Model* = 0)
+ {
+ BOOST_CONCEPT_ASSERT((Model));
+ }
+ template <class T> inline void ignore_unused_variable_warning(T const&) {}
+
+# define BOOST_CLASS_REQUIRE(type_var, ns, concept) \
+ BOOST_CONCEPT_ASSERT((ns::concept<type_var>))
+
+# define BOOST_CLASS_REQUIRE2(type_var1, type_var2, ns, concept) \
+ BOOST_CONCEPT_ASSERT((ns::concept<type_var1,type_var2>))
+
+# define BOOST_CLASS_REQUIRE3(tv1, tv2, tv3, ns, concept) \
+ BOOST_CONCEPT_ASSERT((ns::concept<tv1,tv2,tv3>))
+
+# define BOOST_CLASS_REQUIRE4(tv1, tv2, tv3, tv4, ns, concept) \
+ BOOST_CONCEPT_ASSERT((ns::concept<tv1,tv2,tv3,tv4>))
+
+
+ //
+ // Begin concept definitions
+ //
+ BOOST_concept(Integer, (T))
+ {
+ BOOST_CONCEPT_USAGE(Integer)
+ {
+ x.error_type_must_be_an_integer_type();
+ }
+ private:
+ T x;
+ };
+
+ template <> struct Integer<char> {};
+ template <> struct Integer<signed char> {};
+ template <> struct Integer<unsigned char> {};
+ template <> struct Integer<short> {};
+ template <> struct Integer<unsigned short> {};
+ template <> struct Integer<int> {};
+ template <> struct Integer<unsigned int> {};
+ template <> struct Integer<long> {};
+ template <> struct Integer<unsigned long> {};
+# if defined(BOOST_HAS_LONG_LONG)
+ template <> struct Integer< ::boost::long_long_type> {};
+ template <> struct Integer< ::boost::ulong_long_type> {};
+# elif defined(BOOST_HAS_MS_INT64)
+ template <> struct Integer<__int64> {};
+ template <> struct Integer<unsigned __int64> {};
+# endif
+
+ BOOST_concept(SignedInteger,(T)) {
+ BOOST_CONCEPT_USAGE(SignedInteger) {
+ x.error_type_must_be_a_signed_integer_type();
+ }
+ private:
+ T x;
+ };
+ template <> struct SignedInteger<signed char> { };
+ template <> struct SignedInteger<short> {};
+ template <> struct SignedInteger<int> {};
+ template <> struct SignedInteger<long> {};
+# if defined(BOOST_HAS_LONG_LONG)
+ template <> struct SignedInteger< ::boost::long_long_type> {};
+# elif defined(BOOST_HAS_MS_INT64)
+ template <> struct SignedInteger<__int64> {};
+# endif
+
+ BOOST_concept(UnsignedInteger,(T)) {
+ BOOST_CONCEPT_USAGE(UnsignedInteger) {
+ x.error_type_must_be_an_unsigned_integer_type();
+ }
+ private:
+ T x;
+ };
+
+ template <> struct UnsignedInteger<unsigned char> {};
+ template <> struct UnsignedInteger<unsigned short> {};
+ template <> struct UnsignedInteger<unsigned int> {};
+ template <> struct UnsignedInteger<unsigned long> {};
+# if defined(BOOST_HAS_LONG_LONG)
+ template <> struct UnsignedInteger< ::boost::ulong_long_type> {};
+# elif defined(BOOST_HAS_MS_INT64)
+ template <> struct UnsignedInteger<unsigned __int64> {};
+# endif
+
+ //===========================================================================
+ // Basic Concepts
+
+ BOOST_concept(DefaultConstructible,(TT))
+ {
+ BOOST_CONCEPT_USAGE(DefaultConstructible) {
+ TT a; // require default constructor
+ ignore_unused_variable_warning(a);
+ }
+ };
+
+ BOOST_concept(Assignable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(Assignable) {
+#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+ a = b; // require assignment operator
+#endif
+ const_constraints(b);
+ }
+ private:
+ void const_constraints(const TT& x) {
+#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+ a = x; // const required for argument to assignment
+#else
+ ignore_unused_variable_warning(x);
+#endif
+ }
+ private:
+ TT a;
+ TT b;
+ };
+
+
+ BOOST_concept(CopyConstructible,(TT))
+ {
+ BOOST_CONCEPT_USAGE(CopyConstructible) {
+ TT a(b); // require copy constructor
+ TT* ptr = &a; // require address of operator
+ const_constraints(a);
+ ignore_unused_variable_warning(ptr);
+ }
+ private:
+ void const_constraints(const TT& a) {
+ TT c(a); // require const copy constructor
+ const TT* ptr = &a; // require const address of operator
+ ignore_unused_variable_warning(c);
+ ignore_unused_variable_warning(ptr);
+ }
+ TT b;
+ };
+
+#if (defined _MSC_VER)
+# pragma warning( push )
+# pragma warning( disable : 4510 ) // default constructor could not be generated
+# pragma warning( disable : 4610 ) // object 'class' can never be instantiated - user-defined constructor required
+#endif
+ // The SGI STL version of Assignable requires copy constructor and operator=
+ BOOST_concept(SGIAssignable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(SGIAssignable) {
+ TT c(a);
+#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+ a = b; // require assignment operator
+#endif
+ const_constraints(b);
+ ignore_unused_variable_warning(c);
+ }
+ private:
+ void const_constraints(const TT& x) {
+ TT c(x);
+#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+ a = x; // const required for argument to assignment
+#endif
+ ignore_unused_variable_warning(c);
+ }
+ TT a;
+ TT b;
+ };
+#if (defined _MSC_VER)
+# pragma warning( pop )
+#endif
+
+ BOOST_concept(Convertible,(X)(Y))
+ {
+ BOOST_CONCEPT_USAGE(Convertible) {
+ Y y = x;
+ ignore_unused_variable_warning(y);
+ }
+ private:
+ X x;
+ };
+
+ // The C++ standard requirements for many concepts talk about return
+ // types that must be "convertible to bool". The problem with this
+ // requirement is that it leaves the door open for evil proxies that
+ // define things like operator|| with strange return types. Two
+ // possible solutions are:
+ // 1) require the return type to be exactly bool
+ // 2) stay with convertible to bool, and also
+ // specify stuff about all the logical operators.
+ // For now we just test for convertible to bool.
+ template <class TT>
+ void require_boolean_expr(const TT& t) {
+ bool x = t;
+ ignore_unused_variable_warning(x);
+ }
+
+ BOOST_concept(EqualityComparable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(EqualityComparable) {
+ require_boolean_expr(a == b);
+ require_boolean_expr(a != b);
+ }
+ private:
+ TT a, b;
+ };
+
+ BOOST_concept(LessThanComparable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(LessThanComparable) {
+ require_boolean_expr(a < b);
+ }
+ private:
+ TT a, b;
+ };
+
+ // This is equivalent to SGI STL's LessThanComparable.
+ BOOST_concept(Comparable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(Comparable) {
+ require_boolean_expr(a < b);
+ require_boolean_expr(a > b);
+ require_boolean_expr(a <= b);
+ require_boolean_expr(a >= b);
+ }
+ private:
+ TT a, b;
+ };
+
+#define BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(OP,NAME) \
+ BOOST_concept(NAME, (First)(Second)) \
+ { \
+ BOOST_CONCEPT_USAGE(NAME) { (void)constraints_(); } \
+ private: \
+ bool constraints_() { return a OP b; } \
+ First a; \
+ Second b; \
+ }
+
+#define BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(OP,NAME) \
+ BOOST_concept(NAME, (Ret)(First)(Second)) \
+ { \
+ BOOST_CONCEPT_USAGE(NAME) { (void)constraints_(); } \
+ private: \
+ Ret constraints_() { return a OP b; } \
+ First a; \
+ Second b; \
+ }
+
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(==, EqualOp);
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(!=, NotEqualOp);
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<, LessThanOp);
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<=, LessEqualOp);
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>, GreaterThanOp);
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>=, GreaterEqualOp);
+
+ BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(+, PlusOp);
+ BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(*, TimesOp);
+ BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(/, DivideOp);
+ BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(-, SubtractOp);
+ BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(%, ModOp);
+
+ //===========================================================================
+ // Function Object Concepts
+
+ BOOST_concept(Generator,(Func)(Return))
+ {
+ BOOST_CONCEPT_USAGE(Generator) { test(is_void<Return>()); }
+
+ private:
+ void test(boost::mpl::false_)
+ {
+ // Do we really want a reference here?
+ const Return& r = f();
+ ignore_unused_variable_warning(r);
+ }
+
+ void test(boost::mpl::true_)
+ {
+ f();
+ }
+
+ Func f;
+ };
+
+ BOOST_concept(UnaryFunction,(Func)(Return)(Arg))
+ {
+ BOOST_CONCEPT_USAGE(UnaryFunction) { test(is_void<Return>()); }
+
+ private:
+ void test(boost::mpl::false_)
+ {
+ f(arg); // "priming the pump" this way keeps msvc6 happy (ICE)
+ Return r = f(arg);
+ ignore_unused_variable_warning(r);
+ }
+
+ void test(boost::mpl::true_)
+ {
+ f(arg);
+ }
+
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy construktor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::UnaryFunction<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ UnaryFunction();
+#endif
+
+ Func f;
+ Arg arg;
+ };
+
+ BOOST_concept(BinaryFunction,(Func)(Return)(First)(Second))
+ {
+ BOOST_CONCEPT_USAGE(BinaryFunction) { test(is_void<Return>()); }
+ private:
+ void test(boost::mpl::false_)
+ {
+ f(first,second);
+ Return r = f(first, second); // require operator()
+ (void)r;
+ }
+
+ void test(boost::mpl::true_)
+ {
+ f(first,second);
+ }
+
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::BinaryFunction<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ BinaryFunction();
+#endif
+
+ Func f;
+ First first;
+ Second second;
+ };
+
+ BOOST_concept(UnaryPredicate,(Func)(Arg))
+ {
+ BOOST_CONCEPT_USAGE(UnaryPredicate) {
+ require_boolean_expr(f(arg)); // require operator() returning bool
+ }
+ private:
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::UnaryPredicate<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ UnaryPredicate();
+#endif
+
+ Func f;
+ Arg arg;
+ };
+
+ BOOST_concept(BinaryPredicate,(Func)(First)(Second))
+ {
+ BOOST_CONCEPT_USAGE(BinaryPredicate) {
+ require_boolean_expr(f(a, b)); // require operator() returning bool
+ }
+ private:
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::BinaryPredicate<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ BinaryPredicate();
+#endif
+ Func f;
+ First a;
+ Second b;
+ };
+
+ // use this when functor is used inside a container class like std::set
+ BOOST_concept(Const_BinaryPredicate,(Func)(First)(Second))
+ : BinaryPredicate<Func, First, Second>
+ {
+ BOOST_CONCEPT_USAGE(Const_BinaryPredicate) {
+ const_constraints(f);
+ }
+ private:
+ void const_constraints(const Func& fun) {
+ // operator() must be a const member function
+ require_boolean_expr(fun(a, b));
+ }
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::Const_BinaryPredicate<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ Const_BinaryPredicate();
+#endif
+
+ Func f;
+ First a;
+ Second b;
+ };
+
+ BOOST_concept(AdaptableGenerator,(Func)(Return))
+ : Generator<Func, typename Func::result_type>
+ {
+ typedef typename Func::result_type result_type;
+
+ BOOST_CONCEPT_USAGE(AdaptableGenerator)
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>));
+ }
+ };
+
+ BOOST_concept(AdaptableUnaryFunction,(Func)(Return)(Arg))
+ : UnaryFunction<Func, typename Func::result_type, typename Func::argument_type>
+ {
+ typedef typename Func::argument_type argument_type;
+ typedef typename Func::result_type result_type;
+
+ ~AdaptableUnaryFunction()
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>));
+ BOOST_CONCEPT_ASSERT((Convertible<Arg, argument_type>));
+ }
+ };
+
+ BOOST_concept(AdaptableBinaryFunction,(Func)(Return)(First)(Second))
+ : BinaryFunction<
+ Func
+ , typename Func::result_type
+ , typename Func::first_argument_type
+ , typename Func::second_argument_type
+ >
+ {
+ typedef typename Func::first_argument_type first_argument_type;
+ typedef typename Func::second_argument_type second_argument_type;
+ typedef typename Func::result_type result_type;
+
+ ~AdaptableBinaryFunction()
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>));
+ BOOST_CONCEPT_ASSERT((Convertible<First, first_argument_type>));
+ BOOST_CONCEPT_ASSERT((Convertible<Second, second_argument_type>));
+ }
+ };
+
+ BOOST_concept(AdaptablePredicate,(Func)(Arg))
+ : UnaryPredicate<Func, Arg>
+ , AdaptableUnaryFunction<Func, bool, Arg>
+ {
+ };
+
+ BOOST_concept(AdaptableBinaryPredicate,(Func)(First)(Second))
+ : BinaryPredicate<Func, First, Second>
+ , AdaptableBinaryFunction<Func, bool, First, Second>
+ {
+ };
+
+ //===========================================================================
+ // Iterator Concepts
+
+ BOOST_concept(InputIterator,(TT))
+ : Assignable<TT>
+ , EqualityComparable<TT>
+ {
+ typedef typename boost::detail::iterator_traits<TT>::value_type value_type;
+ typedef typename boost::detail::iterator_traits<TT>::difference_type difference_type;
+ typedef typename boost::detail::iterator_traits<TT>::reference reference;
+ typedef typename boost::detail::iterator_traits<TT>::pointer pointer;
+ typedef typename boost::detail::iterator_traits<TT>::iterator_category iterator_category;
+
+ BOOST_CONCEPT_USAGE(InputIterator)
+ {
+ BOOST_CONCEPT_ASSERT((SignedInteger<difference_type>));
+ BOOST_CONCEPT_ASSERT((Convertible<iterator_category, std::input_iterator_tag>));
+
+ TT j(i);
+ (void)*i; // require dereference operator
+ ++j; // require preincrement operator
+ i++; // require postincrement operator
+ }
+ private:
+ TT i;
+ };
+
+ BOOST_concept(OutputIterator,(TT)(ValueT))
+ : Assignable<TT>
+ {
+ BOOST_CONCEPT_USAGE(OutputIterator) {
+
+ ++i; // require preincrement operator
+ i++; // require postincrement operator
+ *i++ = t; // require postincrement and assignment
+ }
+ private:
+ TT i, j;
+ ValueT t;
+ };
+
+ BOOST_concept(ForwardIterator,(TT))
+ : InputIterator<TT>
+ {
+ BOOST_CONCEPT_USAGE(ForwardIterator)
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<
+ BOOST_DEDUCED_TYPENAME ForwardIterator::iterator_category
+ , std::forward_iterator_tag
+ >));
+
+ typename InputIterator<TT>::reference r = *i;
+ ignore_unused_variable_warning(r);
+ }
+
+ private:
+ TT i;
+ };
+
+ BOOST_concept(Mutable_ForwardIterator,(TT))
+ : ForwardIterator<TT>
+ {
+ BOOST_CONCEPT_USAGE(Mutable_ForwardIterator) {
+ *i++ = *i; // require postincrement and assignment
+ }
+ private:
+ TT i;
+ };
+
+ BOOST_concept(BidirectionalIterator,(TT))
+ : ForwardIterator<TT>
+ {
+ BOOST_CONCEPT_USAGE(BidirectionalIterator)
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<
+ BOOST_DEDUCED_TYPENAME BidirectionalIterator::iterator_category
+ , std::bidirectional_iterator_tag
+ >));
+
+ --i; // require predecrement operator
+ i--; // require postdecrement operator
+ }
+ private:
+ TT i;
+ };
+
+ BOOST_concept(Mutable_BidirectionalIterator,(TT))
+ : BidirectionalIterator<TT>
+ , Mutable_ForwardIterator<TT>
+ {
+ BOOST_CONCEPT_USAGE(Mutable_BidirectionalIterator)
+ {
+ *i-- = *i; // require postdecrement and assignment
+ }
+ private:
+ TT i;
+ };
+
+ BOOST_concept(RandomAccessIterator,(TT))
+ : BidirectionalIterator<TT>
+ , Comparable<TT>
+ {
+ BOOST_CONCEPT_USAGE(RandomAccessIterator)
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<
+ BOOST_DEDUCED_TYPENAME BidirectionalIterator<TT>::iterator_category
+ , std::random_access_iterator_tag
+ >));
+
+ i += n; // require assignment addition operator
+ i = i + n; i = n + i; // require addition with difference type
+ i -= n; // require assignment subtraction operator
+ i = i - n; // require subtraction with difference type
+ n = i - j; // require difference operator
+ (void)i[n]; // require element access operator
+ }
+
+ private:
+ TT a, b;
+ TT i, j;
+ typename boost::detail::iterator_traits<TT>::difference_type n;
+ };
+
+ BOOST_concept(Mutable_RandomAccessIterator,(TT))
+ : RandomAccessIterator<TT>
+ , Mutable_BidirectionalIterator<TT>
+ {
+ BOOST_CONCEPT_USAGE(Mutable_RandomAccessIterator)
+ {
+ i[n] = *i; // require element access and assignment
+ }
+ private:
+ TT i;
+ typename boost::detail::iterator_traits<TT>::difference_type n;
+ };
+
+ //===========================================================================
+ // Container s
+
+ BOOST_concept(Container,(C))
+ : Assignable<C>
+ {
+ typedef typename C::value_type value_type;
+ typedef typename C::difference_type difference_type;
+ typedef typename C::size_type size_type;
+ typedef typename C::const_reference const_reference;
+ typedef typename C::const_pointer const_pointer;
+ typedef typename C::const_iterator const_iterator;
+
+ BOOST_CONCEPT_USAGE(Container)
+ {
+ BOOST_CONCEPT_ASSERT((InputIterator<const_iterator>));
+ const_constraints(c);
+ }
+
+ private:
+ void const_constraints(const C& cc) {
+ i = cc.begin();
+ i = cc.end();
+ n = cc.size();
+ n = cc.max_size();
+ b = cc.empty();
+ }
+ C c;
+ bool b;
+ const_iterator i;
+ size_type n;
+ };
+
+ BOOST_concept(Mutable_Container,(C))
+ : Container<C>
+ {
+ typedef typename C::reference reference;
+ typedef typename C::iterator iterator;
+ typedef typename C::pointer pointer;
+
+ BOOST_CONCEPT_USAGE(Mutable_Container)
+ {
+ BOOST_CONCEPT_ASSERT((
+ Assignable<typename Mutable_Container::value_type>));
+
+ BOOST_CONCEPT_ASSERT((InputIterator<iterator>));
+
+ i = c.begin();
+ i = c.end();
+ c.swap(c2);
+ }
+
+ private:
+ iterator i;
+ C c, c2;
+ };
+
+ BOOST_concept(ForwardContainer,(C))
+ : Container<C>
+ {
+ BOOST_CONCEPT_USAGE(ForwardContainer)
+ {
+ BOOST_CONCEPT_ASSERT((
+ ForwardIterator<
+ typename ForwardContainer::const_iterator
+ >));
+ }
+ };
+
+ BOOST_concept(Mutable_ForwardContainer,(C))
+ : ForwardContainer<C>
+ , Mutable_Container<C>
+ {
+ BOOST_CONCEPT_USAGE(Mutable_ForwardContainer)
+ {
+ BOOST_CONCEPT_ASSERT((
+ Mutable_ForwardIterator<
+ typename Mutable_ForwardContainer::iterator
+ >));
+ }
+ };
+
+ BOOST_concept(ReversibleContainer,(C))
+ : ForwardContainer<C>
+ {
+ typedef typename
+ C::const_reverse_iterator
+ const_reverse_iterator;
+
+ BOOST_CONCEPT_USAGE(ReversibleContainer)
+ {
+ BOOST_CONCEPT_ASSERT((
+ BidirectionalIterator<
+ typename ReversibleContainer::const_iterator>));
+
+ BOOST_CONCEPT_ASSERT((BidirectionalIterator<const_reverse_iterator>));
+
+ const_constraints(c);
+ }
+ private:
+ void const_constraints(const C& cc)
+ {
+ const_reverse_iterator i = cc.rbegin();
+ i = cc.rend();
+ }
+ C c;
+ };
+
+ BOOST_concept(Mutable_ReversibleContainer,(C))
+ : Mutable_ForwardContainer<C>
+ , ReversibleContainer<C>
+ {
+ typedef typename C::reverse_iterator reverse_iterator;
+
+ BOOST_CONCEPT_USAGE(Mutable_ReversibleContainer)
+ {
+ typedef typename Mutable_ForwardContainer<C>::iterator iterator;
+ BOOST_CONCEPT_ASSERT((Mutable_BidirectionalIterator<iterator>));
+ BOOST_CONCEPT_ASSERT((Mutable_BidirectionalIterator<reverse_iterator>));
+
+ reverse_iterator i = c.rbegin();
+ i = c.rend();
+ }
+ private:
+ C c;
+ };
+
+ BOOST_concept(RandomAccessContainer,(C))
+ : ReversibleContainer<C>
+ {
+ typedef typename C::size_type size_type;
+ typedef typename C::const_reference const_reference;
+
+ BOOST_CONCEPT_USAGE(RandomAccessContainer)
+ {
+ BOOST_CONCEPT_ASSERT((
+ RandomAccessIterator<
+ typename RandomAccessContainer::const_iterator
+ >));
+
+ const_constraints(c);
+ }
+ private:
+ void const_constraints(const C& cc)
+ {
+ const_reference r = cc[n];
+ ignore_unused_variable_warning(r);
+ }
+
+ C c;
+ size_type n;
+ };
+
+ BOOST_concept(Mutable_RandomAccessContainer,(C))
+ : Mutable_ReversibleContainer<C>
+ , RandomAccessContainer<C>
+ {
+ private:
+ typedef Mutable_RandomAccessContainer self;
+ public:
+ BOOST_CONCEPT_USAGE(Mutable_RandomAccessContainer)
+ {
+ BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<typename self::iterator>));
+ BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<typename self::reverse_iterator>));
+
+ typename self::reference r = c[i];
+ ignore_unused_variable_warning(r);
+ }
+
+ private:
+ typename Mutable_ReversibleContainer<C>::size_type i;
+ C c;
+ };
+
+ // A Sequence is inherently mutable
+ BOOST_concept(Sequence,(S))
+ : Mutable_ForwardContainer<S>
+ // Matt Austern's book puts DefaultConstructible here, the C++
+ // standard places it in Container --JGS
+ // ... so why aren't we following the standard? --DWA
+ , DefaultConstructible<S>
+ {
+ BOOST_CONCEPT_USAGE(Sequence)
+ {
+ S
+ c(n),
+ c2(n, t),
+ c3(first, last);
+
+ c.insert(p, t);
+ c.insert(p, n, t);
+ c.insert(p, first, last);
+
+ c.erase(p);
+ c.erase(p, q);
+
+ typename Sequence::reference r = c.front();
+
+ ignore_unused_variable_warning(c);
+ ignore_unused_variable_warning(c2);
+ ignore_unused_variable_warning(c3);
+ ignore_unused_variable_warning(r);
+ const_constraints(c);
+ }
+ private:
+ void const_constraints(const S& c) {
+ typename Sequence::const_reference r = c.front();
+ ignore_unused_variable_warning(r);
+ }
+
+ typename S::value_type t;
+ typename S::size_type n;
+ typename S::value_type* first, *last;
+ typename S::iterator p, q;
+ };
+
+ BOOST_concept(FrontInsertionSequence,(S))
+ : Sequence<S>
+ {
+ BOOST_CONCEPT_USAGE(FrontInsertionSequence)
+ {
+ c.push_front(t);
+ c.pop_front();
+ }
+ private:
+ S c;
+ typename S::value_type t;
+ };
+
+ BOOST_concept(BackInsertionSequence,(S))
+ : Sequence<S>
+ {
+ BOOST_CONCEPT_USAGE(BackInsertionSequence)
+ {
+ c.push_back(t);
+ c.pop_back();
+ typename BackInsertionSequence::reference r = c.back();
+ ignore_unused_variable_warning(r);
+ const_constraints(c);
+ }
+ private:
+ void const_constraints(const S& cc) {
+ typename BackInsertionSequence::const_reference
+ r = cc.back();
+ ignore_unused_variable_warning(r);
+ };
+ S c;
+ typename S::value_type t;
+ };
+
+ BOOST_concept(AssociativeContainer,(C))
+ : ForwardContainer<C>
+ , DefaultConstructible<C>
+ {
+ typedef typename C::key_type key_type;
+ typedef typename C::key_compare key_compare;
+ typedef typename C::value_compare value_compare;
+ typedef typename C::iterator iterator;
+
+ BOOST_CONCEPT_USAGE(AssociativeContainer)
+ {
+ i = c.find(k);
+ r = c.equal_range(k);
+ c.erase(k);
+ c.erase(i);
+ c.erase(r.first, r.second);
+ const_constraints(c);
+ BOOST_CONCEPT_ASSERT((BinaryPredicate<key_compare,key_type,key_type>));
+
+ typedef typename AssociativeContainer::value_type value_type_;
+ BOOST_CONCEPT_ASSERT((BinaryPredicate<value_compare,value_type_,value_type_>));
+ }
+
+ // Redundant with the base concept, but it helps below.
+ typedef typename C::const_iterator const_iterator;
+ private:
+ void const_constraints(const C& cc)
+ {
+ ci = cc.find(k);
+ n = cc.count(k);
+ cr = cc.equal_range(k);
+ }
+
+ C c;
+ iterator i;
+ std::pair<iterator,iterator> r;
+ const_iterator ci;
+ std::pair<const_iterator,const_iterator> cr;
+ typename C::key_type k;
+ typename C::size_type n;
+ };
+
+ BOOST_concept(UniqueAssociativeContainer,(C))
+ : AssociativeContainer<C>
+ {
+ BOOST_CONCEPT_USAGE(UniqueAssociativeContainer)
+ {
+ C c(first, last);
+
+ pos_flag = c.insert(t);
+ c.insert(first, last);
+
+ ignore_unused_variable_warning(c);
+ }
+ private:
+ std::pair<typename C::iterator, bool> pos_flag;
+ typename C::value_type t;
+ typename C::value_type* first, *last;
+ };
+
+ BOOST_concept(MultipleAssociativeContainer,(C))
+ : AssociativeContainer<C>
+ {
+ BOOST_CONCEPT_USAGE(MultipleAssociativeContainer)
+ {
+ C c(first, last);
+
+ pos = c.insert(t);
+ c.insert(first, last);
+
+ ignore_unused_variable_warning(c);
+ ignore_unused_variable_warning(pos);
+ }
+ private:
+ typename C::iterator pos;
+ typename C::value_type t;
+ typename C::value_type* first, *last;
+ };
+
+ BOOST_concept(SimpleAssociativeContainer,(C))
+ : AssociativeContainer<C>
+ {
+ BOOST_CONCEPT_USAGE(SimpleAssociativeContainer)
+ {
+ typedef typename C::key_type key_type;
+ typedef typename C::value_type value_type;
+ BOOST_MPL_ASSERT((boost::is_same<key_type,value_type>));
+ }
+ };
+
+ BOOST_concept(PairAssociativeContainer,(C))
+ : AssociativeContainer<C>
+ {
+ BOOST_CONCEPT_USAGE(PairAssociativeContainer)
+ {
+ typedef typename C::key_type key_type;
+ typedef typename C::value_type value_type;
+ typedef typename C::mapped_type mapped_type;
+ typedef std::pair<const key_type, mapped_type> required_value_type;
+ BOOST_MPL_ASSERT((boost::is_same<value_type,required_value_type>));
+ }
+ };
+
+ BOOST_concept(SortedAssociativeContainer,(C))
+ : AssociativeContainer<C>
+ , ReversibleContainer<C>
+ {
+ BOOST_CONCEPT_USAGE(SortedAssociativeContainer)
+ {
+ C
+ c(kc),
+ c2(first, last),
+ c3(first, last, kc);
+
+ p = c.upper_bound(k);
+ p = c.lower_bound(k);
+ r = c.equal_range(k);
+
+ c.insert(p, t);
+
+ ignore_unused_variable_warning(c);
+ ignore_unused_variable_warning(c2);
+ ignore_unused_variable_warning(c3);
+ const_constraints(c);
+ }
+
+ void const_constraints(const C& c)
+ {
+ kc = c.key_comp();
+ vc = c.value_comp();
+
+ cp = c.upper_bound(k);
+ cp = c.lower_bound(k);
+ cr = c.equal_range(k);
+ }
+
+ private:
+ typename C::key_compare kc;
+ typename C::value_compare vc;
+ typename C::value_type t;
+ typename C::key_type k;
+ typedef typename C::iterator iterator;
+ typedef typename C::const_iterator const_iterator;
+
+ typedef SortedAssociativeContainer self;
+ iterator p;
+ const_iterator cp;
+ std::pair<typename self::iterator,typename self::iterator> r;
+ std::pair<typename self::const_iterator,typename self::const_iterator> cr;
+ typename C::value_type* first, *last;
+ };
+
+ // HashedAssociativeContainer
+
+ BOOST_concept(Collection,(C))
+ {
+ BOOST_CONCEPT_USAGE(Collection)
+ {
+ boost::function_requires<boost::InputIteratorConcept<iterator> >();
+ boost::function_requires<boost::InputIteratorConcept<const_iterator> >();
+ boost::function_requires<boost::CopyConstructibleConcept<value_type> >();
+ const_constraints(c);
+ i = c.begin();
+ i = c.end();
+ c.swap(c);
+ }
+
+ void const_constraints(const C& cc) {
+ ci = cc.begin();
+ ci = cc.end();
+ n = cc.size();
+ b = cc.empty();
+ }
+
+ private:
+ typedef typename C::value_type value_type;
+ typedef typename C::iterator iterator;
+ typedef typename C::const_iterator const_iterator;
+ typedef typename C::reference reference;
+ typedef typename C::const_reference const_reference;
+ // typedef typename C::pointer pointer;
+ typedef typename C::difference_type difference_type;
+ typedef typename C::size_type size_type;
+
+ C c;
+ bool b;
+ iterator i;
+ const_iterator ci;
+ size_type n;
+ };
+} // namespace boost
+
+# include <boost/concept/detail/concept_undef.hpp>
+
+#endif // BOOST_CONCEPT_CHECKS_HPP
+
// Boost config.hpp configuration header file ------------------------------//
-// (C) Copyright John Maddock 2002.
+// (C) Copyright John Maddock 2002.
// Use, modification and distribution are subject to 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)
#endif
// if we don't have a std library config set, try and find one:
-#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG)
+#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG) && defined(__cplusplus)
# include <boost/config/select_stdlib_config.hpp>
#endif
// if we have a std library config, include it now:
// get config suffix code:
#include <boost/config/suffix.hpp>
-#endif // BOOST_CONFIG_HPP
-
-
-
-
-
-
-
-
-
-
+#ifdef BOOST_HAS_PRAGMA_ONCE
+#pragma once
+#endif
+#endif // BOOST_CONFIG_HPP
BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used,
contains one or more of the following letters after
- a hiphen:
+ a hyphen:
s static runtime (dynamic if not present).
g debug/diagnostic runtime (release if not present).
y Python debug/diagnostic runtime (release if not present).
d debug build (release if not present).
- g debug/diagnostic runtime (release if not present).
- p STLPort Build.
+ p STLport build.
+ n STLport build without its IOStreams.
BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
// select toolset if not defined already:
//
#ifndef BOOST_LIB_TOOLSET
-// Note: no compilers before 1200 are supported
-#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
+# if defined(BOOST_MSVC) && (BOOST_MSVC < 1200)
+ // Note: no compilers before 1200 are supported
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
-# ifdef UNDER_CE
- // vc6:
-# define BOOST_LIB_TOOLSET "evc4"
-# else
- // vc6:
-# define BOOST_LIB_TOOLSET "vc6"
-# endif
+# ifdef UNDER_CE
+ // eVC4:
+# define BOOST_LIB_TOOLSET "evc4"
+# else
+ // vc6:
+# define BOOST_LIB_TOOLSET "vc6"
+# endif
-#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1300)
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1310)
- // vc7:
-# define BOOST_LIB_TOOLSET "vc7"
+ // vc7:
+# define BOOST_LIB_TOOLSET "vc7"
-#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1400)
- // vc71:
-# define BOOST_LIB_TOOLSET "vc71"
+ // vc71:
+# define BOOST_LIB_TOOLSET "vc71"
-#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1400)
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1500)
- // vc80:
-# define BOOST_LIB_TOOLSET "vc80"
+ // vc80:
+# define BOOST_LIB_TOOLSET "vc80"
-#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1500)
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1600)
- // vc90:
-# define BOOST_LIB_TOOLSET "vc90"
+ // vc90:
+# define BOOST_LIB_TOOLSET "vc90"
-#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1600)
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1700)
- // vc10:
-# define BOOST_LIB_TOOLSET "vc100"
+ // vc10:
+# define BOOST_LIB_TOOLSET "vc100"
-#elif defined(__BORLANDC__)
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1800)
- // CBuilder 6:
-# define BOOST_LIB_TOOLSET "bcb"
+ // vc11:
+# define BOOST_LIB_TOOLSET "vc110"
-#elif defined(__ICL)
+# elif defined(BOOST_MSVC)
- // Intel C++, no version number:
-# define BOOST_LIB_TOOLSET "iw"
+ // vc12:
+# define BOOST_LIB_TOOLSET "vc120"
-#elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )
+# elif defined(__BORLANDC__)
- // Metrowerks CodeWarrior 8.x
-# define BOOST_LIB_TOOLSET "cw8"
+ // CBuilder 6:
+# define BOOST_LIB_TOOLSET "bcb"
-#elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )
+# elif defined(__ICL)
- // Metrowerks CodeWarrior 9.x
-# define BOOST_LIB_TOOLSET "cw9"
+ // Intel C++, no version number:
+# define BOOST_LIB_TOOLSET "iw"
-#endif
+# elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )
+
+ // Metrowerks CodeWarrior 8.x
+# define BOOST_LIB_TOOLSET "cw8"
+
+# elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )
+
+ // Metrowerks CodeWarrior 9.x
+# define BOOST_LIB_TOOLSET "cw9"
+
+# endif
#endif // BOOST_LIB_TOOLSET
//
# elif defined(_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-gydp"
-# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-gdp"
-# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# else
# define BOOST_LIB_RT_OPT "-p"
# elif defined(_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-gydpn"
-# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-gdpn"
-# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# else
# define BOOST_LIB_RT_OPT "-pn"
# elif defined(_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-sgydp"
-# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-sgdp"
-# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# else
# define BOOST_LIB_RT_OPT "-sp"
# elif defined(_DEBUG)\
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
# define BOOST_LIB_RT_OPT "-sgydpn"
-# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-sgdpn"
-# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
# error "Build options aren't compatible with pre-built libraries"
# else
# define BOOST_LIB_RT_OPT "-spn"
// sanity check:
//
#if defined(__STL_DEBUG) || defined(_STLP_DEBUG)
-#error "Pre-built versions of the Boost libraries are not provided in STLPort-debug form"
+#error "Pre-built versions of the Boost libraries are not provided in STLport-debug form"
#endif
# ifdef _RTLDLL
&& defined(BOOST_LIB_VERSION)
#ifdef BOOST_AUTO_LINK_TAGGED
-# pragma commentcomment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
+# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
# ifdef BOOST_LIB_DIAGNOSTIC
-# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
+# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
# endif
#elif defined(BOOST_AUTO_LINK_NOMANGLE)
# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
#if defined(BOOST_DYN_LINK)
# undef BOOST_DYN_LINK
#endif
-#if defined(BOOST_AUTO_LINK_NOMANGLE)
-# undef BOOST_AUTO_LINK_NOMANGLE
-#endif
+
// Borland C++Builder 5, command-line compiler 5.5:
# define BOOST_NO_OPERATORS_IN_NAMESPACE
# endif
+// Variadic macros do not exist for C++ Builder versions 5 and below
+#define BOOST_NO_CXX11_VARIADIC_MACROS
# endif
// Version 5.51 and below:
# define BOOST_NO_CV_VOID_SPECIALIZATIONS
# define BOOST_NO_DEDUCED_TYPENAME
// workaround for missing WCHAR_MAX/WCHAR_MIN:
+#ifdef __cplusplus
#include <climits>
#include <cwchar>
+#else
+#include <limits.h>
+#include <wchar.h>
+#endif // __cplusplus
#ifndef WCHAR_MAX
# define WCHAR_MAX 0xffff
#endif
// Borland C++ Builder 6 and below:
#if (__BORLANDC__ <= 0x564)
-# ifdef NDEBUG
+# if defined(NDEBUG) && defined(__cplusplus)
// fix broken <cstring> so that Boost.test works:
# include <cstring>
# undef strcmp
// C++0x Macros:
//
#if !defined( BOOST_CODEGEAR_0X_SUPPORT ) || (__BORLANDC__ < 0x610)
-# define BOOST_NO_CHAR16_T
-# define BOOST_NO_CHAR32_T
-# define BOOST_NO_DECLTYPE
-# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-# define BOOST_NO_EXTERN_TEMPLATE
-# define BOOST_NO_RVALUE_REFERENCES
-# define BOOST_NO_SCOPED_ENUMS
-# define BOOST_NO_STATIC_ASSERT
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+# define BOOST_NO_CXX11_DECLTYPE
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_EXTERN_TEMPLATE
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+# define BOOST_NO_CXX11_STATIC_ASSERT
#else
# define BOOST_HAS_ALIGNOF
# define BOOST_HAS_CHAR16_T
# define BOOST_HAS_STATIC_ASSERT
#endif
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported
-#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS // UTF-8 still not supported
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
#if __BORLANDC__ >= 0x590
# define BOOST_HAS_TR1_HASH
// all versions support __declspec:
//
#if defined(__STRICT_ANSI__)
-// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
+// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
# define BOOST_SYMBOL_EXPORT
#endif
//
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
-
-
-
// (C) Copyright Douglas Gregor 2010
//
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
// Clang compiler setup.
-#if __has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
-#else
+#define BOOST_HAS_PRAGMA_ONCE
+
+#if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
#endif
-#if __has_feature(cxx_rtti)
-#else
+#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_RTTI)
# define BOOST_NO_RTTI
#endif
-#if defined(__int64)
+#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_TYPEID)
+# define BOOST_NO_TYPEID
+#endif
+
+#if defined(__int64) && !defined(__GNUC__)
# define BOOST_HAS_MS_INT64
#endif
#define BOOST_HAS_NRVO
-// NOTE: Clang's C++0x support is not worth detecting. However, it
-// supports both extern templates and "long long" even in C++98/03
-// mode.
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_SCOPED_ENUMS
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
-
-// HACK: Clang does support extern templates, but Boost's test for
-// them is wrong.
-#define BOOST_NO_EXTERN_TEMPLATE
+// Branch prediction hints
+#if defined(__has_builtin)
+#if __has_builtin(__builtin_expect)
+#define BOOST_LIKELY(x) __builtin_expect(x, 1)
+#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
+#endif
+#endif
+
+// Clang supports "long long" in all compilation modes.
+#define BOOST_HAS_LONG_LONG
+
+//
+// Dynamic shared object (DSO) and dynamic-link library (DLL) support
+//
+#if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
+# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
+# define BOOST_SYMBOL_IMPORT
+# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
+#endif
+
+//
+// The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
+// between switch labels.
+//
+#if __cplusplus >= 201103L && defined(__has_warning)
+# if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
+# define BOOST_FALLTHROUGH [[clang::fallthrough]]
+# endif
+#endif
+
+#if !__has_feature(cxx_auto_type)
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#endif
+
+#if !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+#endif
+
+#if !__has_feature(cxx_constexpr)
+# define BOOST_NO_CXX11_CONSTEXPR
+#endif
+
+#if !__has_feature(cxx_decltype)
+# define BOOST_NO_CXX11_DECLTYPE
+#endif
+
+#if !__has_feature(cxx_decltype_incomplete_return_types)
+# define BOOST_NO_CXX11_DECLTYPE_N3276
+#endif
+
+#if !__has_feature(cxx_defaulted_functions)
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#endif
+
+#if !__has_feature(cxx_deleted_functions)
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#endif
+
+#if !__has_feature(cxx_explicit_conversions)
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#endif
+
+#if !__has_feature(cxx_default_function_template_args)
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#endif
+
+#if !__has_feature(cxx_generalized_initializers)
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#endif
+
+#if !__has_feature(cxx_lambdas)
+# define BOOST_NO_CXX11_LAMBDAS
+#endif
+
+#if !__has_feature(cxx_local_type_template_args)
+# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#endif
+
+#if !__has_feature(cxx_noexcept)
+# define BOOST_NO_CXX11_NOEXCEPT
+#endif
+
+#if !__has_feature(cxx_nullptr)
+# define BOOST_NO_CXX11_NULLPTR
+#endif
+
+#if !__has_feature(cxx_range_for)
+# define BOOST_NO_CXX11_RANGE_BASED_FOR
+#endif
+
+#if !__has_feature(cxx_raw_string_literals)
+# define BOOST_NO_CXX11_RAW_LITERALS
+#endif
+
+#if !__has_feature(cxx_generalized_initializers)
+# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#endif
+
+#if !__has_feature(cxx_rvalue_references)
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+#endif
+
+#if !__has_feature(cxx_strong_enums)
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+#endif
+
+#if !__has_feature(cxx_static_assert)
+# define BOOST_NO_CXX11_STATIC_ASSERT
+#endif
+
+#if !__has_feature(cxx_alias_templates)
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#endif
+
+#if !__has_feature(cxx_unicode_literals)
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+#endif
+
+#if !__has_feature(cxx_variadic_templates)
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#endif
+
+#if !__has_feature(cxx_user_literals)
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#endif
+
+#if !(__has_feature(cxx_alignas) || __has_extension(cxx_alignas))
+# define BOOST_NO_CXX11_ALIGNAS
+#endif
+
+#if !__has_feature(cxx_trailing_return)
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#endif
+
+#if !__has_feature(cxx_inline_namespaces)
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
+#endif
+
+// Clang always supports variadic macros
+// Clang always supports extern templates
#ifndef BOOST_COMPILER
# define BOOST_COMPILER "Clang version " __clang_version__
// (Niels Dekker, LKEB, April 2010)
# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-# ifdef NDEBUG
+# if defined(NDEBUG) && defined(__cplusplus)
// fix broken <cstring> so that Boost.test works:
# include <cstring>
# undef strcmp
# endif
#endif
+
+// Reportedly, #pragma once is supported since C++ Builder 2010
+#if (__CODEGEARC__ >= 0x620)
+# define BOOST_HAS_PRAGMA_ONCE
+#endif
+
//
// C++0x macros:
//
#if (__CODEGEARC__ <= 0x620)
-#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_CXX11_STATIC_ASSERT
#else
#define BOOST_HAS_STATIC_ASSERT
#endif
// #define BOOST_HAS_STATIC_ASSERT
#define BOOST_HAS_STD_TYPE_TRAITS
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
//
// TR1 macros:
#define BOOST_HAS_MACRO_USE_FACET
-#define BOOST_NO_INITIALIZER_LISTS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
// On non-Win32 platforms let the platform config figure this out:
#ifdef _WIN32
// all versions support __declspec:
//
#if defined(__STRICT_ANSI__)
-// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
+// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
# define BOOST_SYMBOL_EXPORT
#endif
//
-// (C) Copyright John Maddock 2001 - 2002.
-// (C) Copyright Jens Maurer 2001.
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Aleksey Gurtovoy 2002.
// (C) Copyright Markus Schoepflin 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
#if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES)
# define BOOST_NO_TEMPLATE_TEMPLATES
-#endif
+#endif
#if (__EDG_VERSION__ < 300) && !defined(BOOST_NO_IS_ABSTRACT)
# define BOOST_NO_IS_ABSTRACT
-#endif
+#endif
#if (__EDG_VERSION__ <= 303) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-#endif
+#endif
// See also kai.hpp which checks a Kai-specific symbol for EH
# if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_LONG_LONG
# endif
+// Not sure what version was the first to support #pragma once, but
+// different EDG-based compilers (e.g. Intel) supported it for ages.
+// Add a proper version check if it causes problems.
+#define BOOST_HAS_PRAGMA_ONCE
+
//
// C++0x features
//
// See above for BOOST_NO_LONG_LONG
//
#if (__EDG_VERSION__ < 310)
-# define BOOST_NO_EXTERN_TEMPLATE
+# define BOOST_NO_CXX11_EXTERN_TEMPLATE
#endif
-#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG)
+#if (__EDG_VERSION__ <= 310)
// No support for initializer lists
-# define BOOST_NO_INITIALIZER_LISTS
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#endif
+#if (__EDG_VERSION__ < 400)
+# define BOOST_NO_CXX11_VARIADIC_MACROS
#endif
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
#ifdef c_plusplus
// EDG has "long long" in non-strict mode
// However, some libraries have insufficient "long long" support
// #define BOOST_HAS_LONG_LONG
#endif
-
-
-
--- /dev/null
+// (C) Copyright John Maddock 2011.
+// Use, modification and distribution are subject to 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)
+
+// See http://www.boost.org for most recent version.
+
+// Greenhills C compiler setup:
+
+#define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE)
+
+#if _RELEASE < 7
+# error "Boost is not configured for Cray compilers prior to version 7, please try the configure script."
+#endif
+
+//
+// Check this is a recent EDG based compiler, otherwise we don't support it here:
+//
+#ifndef __EDG_VERSION__
+# error "Unsupported Cray compiler, please try running the configure script."
+#endif
+
+#include "boost/config/compiler/common_edg.hpp"
+
+//
+// Cray peculiarities, probably version 7 specific:
+//
+#undef BOOST_NO_CXX11_AUTO_DECLARATIONS
+#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_HAS_NRVO
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#define BOOST_HAS_NRVO
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_CXX11_SCOPED_ENUMS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_ALIGNAS
+//#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+#define BOOST_MATH_DISABLE_STD_FPCLASSIFY
+//#define BOOST_HAS_FPCLASSIFY
+
+#define BOOST_SP_USE_PTHREADS
+#define BOOST_AC_USE_PTHREADS
+
// Copyright (C) Christof Meerwald 2003
// Copyright (C) Dan Watkins 2003
//
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Use, modification and distribution are subject to 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)
// Digital Mars C++ compiler setup:
#define BOOST_HAS_LONG_LONG
#define BOOST_HAS_PRAGMA_ONCE
-#if (__DMC__ <= 0x833)
-#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-#define BOOST_NO_TEMPLATE_TEMPLATES
-#define BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING
-#define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
-#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-#endif
-#if (__DMC__ <= 0x840) || !defined(BOOST_STRICT_CONFIG)
-#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+#if !defined(BOOST_STRICT_CONFIG)
#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
#define BOOST_NO_OPERATORS_IN_NAMESPACE
#define BOOST_NO_UNREACHABLE_RETURN_DETECTION
//
// has macros:
-#if (__DMC__ >= 0x840)
#define BOOST_HAS_DIRENT_H
#define BOOST_HAS_STDINT_H
#define BOOST_HAS_WINTHREADS
-#endif
#if (__DMC__ >= 0x847)
#define BOOST_HAS_EXPM1
//
// Is this really the best way to detect whether the std lib is in namespace std?
//
+#ifdef __cplusplus
#include <cstddef>
+#endif
#if !defined(__STL_IMPORT_VENDOR_CSTD) && !defined(_STLP_IMPORT_VENDOR_CSTD)
# define BOOST_NO_STDC_NAMESPACE
#endif
//
// C++0x features
//
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
-#if __DMC__ < 0x800
+#if (__DMC__ <= 0x840)
#error "Compiler not supported or configured - please reconfigure"
#endif
//
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Darin Adler 2001 - 2002.
-// (C) Copyright Jens Maurer 2001 - 2002.
-// (C) Copyright Beman Dawes 2001 - 2003.
-// (C) Copyright Douglas Gregor 2002.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Synge Todo 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001 - 2002.
+// (C) Copyright Jens Maurer 2001 - 2002.
+// (C) Copyright Beman Dawes 2001 - 2003.
+// (C) Copyright Douglas Gregor 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Synge Todo 2003.
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
-// GNU C++ compiler setup:
-
-#if __GNUC__ < 3
-# if __GNUC_MINOR__ == 91
- // egcs 1.1 won't parse shared_ptr.hpp without this:
-# define BOOST_NO_AUTO_PTR
-# endif
-# if __GNUC_MINOR__ < 95
- //
- // Prior to gcc 2.95 member templates only partly
- // work - define BOOST_MSVC6_MEMBER_TEMPLATES
- // instead since inline member templates mostly work.
- //
-# define BOOST_NO_MEMBER_TEMPLATES
-# if __GNUC_MINOR__ >= 9
-# define BOOST_MSVC6_MEMBER_TEMPLATES
-# endif
-# endif
-
-# if __GNUC_MINOR__ < 96
-# define BOOST_NO_SFINAE
-# endif
-
-# if __GNUC_MINOR__ <= 97
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-# define BOOST_NO_OPERATORS_IN_NAMESPACE
-# endif
-
-# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
-# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-# define BOOST_NO_IS_ABSTRACT
-# define BOOST_NO_EXTERN_TEMPLATE
-#elif __GNUC__ == 3
+// GNU C++ compiler setup.
+
+//
+// Define BOOST_GCC so we know this is "real" GCC and not some pretender:
+//
+#if !defined(__CUDACC__)
+#define BOOST_GCC (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+
+#if __GNUC__ == 3
# if defined (__PATHSCALE__)
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
# define BOOST_NO_IS_ABSTRACT
# endif
- //
- // gcc-3.x problems:
- //
- // Bug specific to gcc 3.1 and 3.2:
- //
-# if ((__GNUC_MINOR__ == 1) || (__GNUC_MINOR__ == 2))
-# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-# endif
+
# if __GNUC_MINOR__ < 4
# define BOOST_NO_IS_ABSTRACT
# endif
-# define BOOST_NO_EXTERN_TEMPLATE
+# define BOOST_NO_CXX11_EXTERN_TEMPLATE
#endif
#if __GNUC__ < 4
//
# endif
#endif
+// GCC prior to 3.4 had #pragma once too but it didn't work well with filesystem links
+#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#define BOOST_HAS_PRAGMA_ONCE
+#endif
+
#if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 )
// Previous versions of GCC did not completely implement value-initialization:
// GCC Bug 30111, "Value-initialization of POD base class doesn't initialize
//
#if !defined(__MINGW32__) && !defined(linux) && !defined(__linux) && !defined(__linux__)
# define BOOST_HAS_THREADS
-#endif
+#endif
//
// gcc has "long long"
//
// gcc implements the named return value optimization since version 3.1
//
-#if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 )
#define BOOST_HAS_NRVO
-#endif
+
+// Branch prediction hints
+#define BOOST_LIKELY(x) __builtin_expect(x, 1)
+#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
//
// Dynamic shared object (DSO) and dynamic-link library (DLL) support
//
#if __GNUC__ >= 4
-# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
- // All Win32 development environments, including 64-bit Windows and MinGW, define
+# if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && !defined(__CYGWIN__)
+ // All Win32 development environments, including 64-bit Windows and MinGW, define
// _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment,
// so does not define _WIN32 or its variants.
# define BOOST_HAS_DECLSPEC
-# define BOOST_SYMBOL_EXPORT __attribute__((dllexport))
-# define BOOST_SYMBOL_IMPORT __attribute__((dllimport))
+# define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__))
+# define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__))
# else
-# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
+# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
# define BOOST_SYMBOL_IMPORT
# endif
-# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
+# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
#else
-// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
+// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
# define BOOST_SYMBOL_EXPORT
#endif
# endif
#endif
-// C++0x features not implemented in any GCC version
//
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_TEMPLATE_ALIASES
+// Recent GCC versions have __int128 when in 64-bit mode.
+//
+// We disable this if the compiler is really nvcc as it
+// doesn't actually support __int128 as of CUDA_VERSION=5000
+// even though it defines __SIZEOF_INT128__.
+// See https://svn.boost.org/trac/boost/ticket/8048
+// Only re-enable this for nvcc if you're absolutely sure
+// of the circumstances under which it's supported:
+//
+#if defined(__SIZEOF_INT128__) && !defined(__CUDACC__)
+# define BOOST_HAS_INT128
+#endif
// C++0x features in 4.3.n and later
//
# define BOOST_HAS_STATIC_ASSERT
# define BOOST_HAS_VARIADIC_TMPL
#else
-# define BOOST_NO_DECLTYPE
-# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-# define BOOST_NO_RVALUE_REFERENCES
-# define BOOST_NO_STATIC_ASSERT
+# define BOOST_NO_CXX11_DECLTYPE
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_STATIC_ASSERT
-// Variadic templates compiler:
+// Variadic templates compiler:
// http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html
-# ifdef __VARIADIC_TEMPLATES
+# if defined(__VARIADIC_TEMPLATES) || (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4) && defined(__GXX_EXPERIMENTAL_CXX0X__))
# define BOOST_HAS_VARIADIC_TMPL
# else
-# define BOOST_NO_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
# endif
#endif
// C++0x features in 4.4.n and later
//
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_AUTO_DECLARATIONS
-# define BOOST_NO_AUTO_MULTIDECLARATIONS
-# define BOOST_NO_CHAR16_T
-# define BOOST_NO_CHAR32_T
-# define BOOST_NO_DEFAULTED_FUNCTIONS
-# define BOOST_NO_DELETED_FUNCTIONS
-# define BOOST_NO_INITIALIZER_LISTS
-# define BOOST_NO_SCOPED_ENUMS
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
#endif
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4)
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
# define BOOST_NO_SFINAE_EXPR
#endif
-// C++0x features in 4.4.1 and later
+// GCC 4.5 forbids declaration of defaulted functions in private or protected sections
+#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && (__GNUC__ == 4 && __GNUC_MINOR__ <= 5)
+# define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+#endif
+
+// C++0x features in 4.5.0 and later
+//
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_LAMBDAS
+# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+# define BOOST_NO_CXX11_RAW_LITERALS
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+#endif
+
+// C++0x features in 4.5.1 and later
//
-#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40401) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_SCOPED_ENUMS before 4.4.1
+#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40501) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_CXX11_SCOPED_ENUMS before 4.5.1
// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064
-# define BOOST_NO_SCOPED_ENUMS
+# define BOOST_NO_CXX11_SCOPED_ENUMS
#endif
-// C++0x features in 4.5.n and later
+// C++0x features in 4.6.n and later
//
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-# define BOOST_NO_LAMBDAS
-# define BOOST_NO_RAW_LITERALS
-# define BOOST_NO_UNICODE_LITERALS
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#endif
+
+// C++0x features in 4.7.n and later
+//
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#endif
+
+// C++0x features in 4.8.n and later
+//
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define BOOST_NO_CXX11_ALIGNAS
+#endif
+
+// C++0x features in 4.8.1 and later
+//
+#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40801) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define BOOST_NO_CXX11_DECLTYPE_N3276
+#endif
+
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "GNU C++ version " __VERSION__
#endif
// ConceptGCC compiler:
#ifdef __GXX_CONCEPTS__
# define BOOST_HAS_CONCEPTS
# define BOOST_COMPILER "ConceptGCC version " __VERSION__
-#else
-# define BOOST_NO_CONCEPTS
#endif
-#ifndef BOOST_COMPILER
-# define BOOST_COMPILER "GNU C++ version " __VERSION__
-#endif
-
-//
// versions check:
-// we don't know gcc prior to version 2.90:
-#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90)
+// we don't know gcc prior to version 3.30:
+#if (__GNUC__ < 3) || (__GNUC__ == 3 && (__GNUC_MINOR__ < 3))
# error "Compiler not configured - please reconfigure"
#endif
//
-// last known and checked version is 4.4 (Pre-release):
-#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 4))
+// last known and checked version is 4.6 (Pre-release):
+#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6))
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# else
-// (C) Copyright John Maddock 2006.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
//
#if !defined(__MINGW32__) && !defined(_MSC_VER) && !defined(linux) && !defined(__linux) && !defined(__linux__)
# define BOOST_HAS_THREADS
-#endif
+#endif
//
// gcc has "long long"
// C++0x features:
//
-# define BOOST_NO_CONSTEXPR
-# define BOOST_NO_NULLPTR
-# define BOOST_NO_TEMPLATE_ALIASES
-# define BOOST_NO_DECLTYPE
-# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-# define BOOST_NO_RVALUE_REFERENCES
-# define BOOST_NO_STATIC_ASSERT
-# define BOOST_NO_VARIADIC_TEMPLATES
-# define BOOST_NO_AUTO_DECLARATIONS
-# define BOOST_NO_AUTO_MULTIDECLARATIONS
-# define BOOST_NO_CHAR16_T
-# define BOOST_NO_CHAR32_T
-# define BOOST_NO_DEFAULTED_FUNCTIONS
-# define BOOST_NO_DELETED_FUNCTIONS
-# define BOOST_NO_INITIALIZER_LISTS
-# define BOOST_NO_SCOPED_ENUMS
+# define BOOST_NO_CXX11_CONSTEXPR
+# define BOOST_NO_CXX11_NULLPTR
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+# define BOOST_NO_CXX11_DECLTYPE
+# define BOOST_NO_CXX11_DECLTYPE_N3276
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_STATIC_ASSERT
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_VARIADIC_MACROS
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_SCOPED_ENUMS
# define BOOST_NO_SFINAE_EXPR
-# define BOOST_NO_SCOPED_ENUMS
-# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-# define BOOST_NO_LAMBDAS
-# define BOOST_NO_RAW_LITERALS
-# define BOOST_NO_UNICODE_LITERALS
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_LAMBDAS
+# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+# define BOOST_NO_CXX11_RANGE_BASED_FOR
+# define BOOST_NO_CXX11_RAW_LITERALS
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+# define BOOST_NO_CXX11_NOEXCEPT
+# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+# define BOOST_NO_CXX11_ALIGNAS
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Toon Knapen 2003.
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Toon Knapen 2003.
// (C) Copyright Boris Gubenko 2006 - 2007.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
# define BOOST_NO_IS_ABSTRACT
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-#endif
+#endif
// optional features rather than defects:
#if (__HP_aCC >= 33900)
//
#if !defined(__EDG__)
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+
+/*
+ See https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443331 and
+ https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443436
+*/
+
+#if (__HP_aCC < 62500) || !defined(HP_CXX0x_SOURCE)
+ #define BOOST_NO_CXX11_VARIADIC_MACROS
+#endif
+
#endif
//
# define BOOST_INTEL_CXX_VERSION __ECC
#endif
+// Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x'
+#if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && (__STDC_HOSTED__ && (BOOST_INTEL_CXX_VERSION <= 1200))) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define BOOST_INTEL_STDCXX0X
+#endif
+#if defined(_MSC_VER) && (_MSC_VER >= 1600)
+# define BOOST_INTEL_STDCXX0X
+#endif
+
+#ifdef BOOST_INTEL_STDCXX0X
+#define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
+#else
#define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
+#endif
#define BOOST_INTEL BOOST_INTEL_CXX_VERSION
#if defined(_WIN32) || defined(_WIN64)
# define BOOST_INTEL_LINUX BOOST_INTEL
#endif
-#if (BOOST_INTEL_CXX_VERSION <= 500) && defined(_MSC_VER)
-# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-# define BOOST_NO_TEMPLATE_TEMPLATES
-#endif
-
#if (BOOST_INTEL_CXX_VERSION <= 600)
# if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov)
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
# endif
#endif
-#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1110)
+#if (defined(__GNUC__) && (__GNUC__ < 4)) || (defined(_WIN32) && (BOOST_INTEL_CXX_VERSION <= 1200)) || (BOOST_INTEL_CXX_VERSION <= 1200)
// GCC or VC emulation:
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
#endif
// in type_traits code among other things, getting this correct
// for the Intel compiler is actually remarkably fragile and tricky:
//
+#ifdef __cplusplus
#if defined(BOOST_NO_INTRINSIC_WCHAR_T)
#include <cwchar>
template< typename T > struct assert_no_intrinsic_wchar_t;
// if you see an error here then define BOOST_NO_INTRINSIC_WCHAR_T on the command line:
template<> struct assert_intrinsic_wchar_t<unsigned short> {};
#endif
+#endif
-#if _MSC_VER+0 >= 1000
+#if defined(_MSC_VER) && (_MSC_VER+0 >= 1000)
# if _MSC_VER >= 1200
# define BOOST_HAS_MS_INT64
# endif
# define BOOST_HAS_NRVO
#endif
+// Branch prediction hints
+// I'm not sure 8.0 was the first version to support these builtins,
+// update the condition if the version is not accurate. (Andrey Semashev)
+#if defined(__GNUC__) && BOOST_INTEL_CXX_VERSION >= 800
+#define BOOST_LIKELY(x) __builtin_expect(x, 1)
+#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
+#endif
+
//
// versions check:
-// we don't support Intel prior to version 5.0:
-#if BOOST_INTEL_CXX_VERSION < 500
+// we don't support Intel prior to version 6.0:
+#if BOOST_INTEL_CXX_VERSION < 600
# error "Compiler not supported or configured - please reconfigure"
#endif
//
// An attempt to value-initialize a pointer-to-member may trigger an
-// internal error on Intel <= 11.1 (last checked version), as was
+// internal error on Intel <= 11.1 (last checked version), as was
// reported by John Maddock, Intel support issue 589832, May 2010.
// Moreover, according to test results from Huang-Vista-x86_32_intel,
-// intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some
+// intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some
// cases when it should be value-initialized.
// (Niels Dekker, LKEB, May 2010)
+// Apparently Intel 12.1 (compiler version number 9999 !!) has the same issue (compiler regression).
#if defined(__INTEL_COMPILER)
-# if __INTEL_COMPILER <= 1110
+# if (__INTEL_COMPILER <= 1110) || (__INTEL_COMPILER == 9999) || (defined(_WIN32) && (__INTEL_COMPILER < 1500))
# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
# endif
#endif
# define BOOST_SYMBOL_IMPORT
# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
#endif
+//
+// C++0x features
+// - ICC added static_assert in 11.0 (first version with C++0x support)
+//
+#if defined(BOOST_INTEL_STDCXX0X)
+# undef BOOST_NO_CXX11_STATIC_ASSERT
+//
+// These pass our test cases, but aren't officially supported according to:
+// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
+//
+//# undef BOOST_NO_CXX11_LAMBDAS
+//# undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+//# undef BOOST_NO_CXX11_DECLTYPE
+//# undef BOOST_NO_CXX11_AUTO_DECLARATIONS
+//# undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#endif
+
+#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1200)
+//# undef BOOST_NO_CXX11_RVALUE_REFERENCES // Enabling this breaks Filesystem and Exception libraries
+//# undef BOOST_NO_CXX11_SCOPED_ENUMS // doesn't really work!!
+# undef BOOST_NO_CXX11_DELETED_FUNCTIONS
+# undef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# undef BOOST_NO_CXX11_LAMBDAS
+# undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+# undef BOOST_NO_CXX11_DECLTYPE
+# undef BOOST_NO_CXX11_AUTO_DECLARATIONS
+# undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#endif
+
+// icl Version 12.1.0.233 Build 20110811 and possibly some other builds
+// had an incorrect __INTEL_COMPILER value of 9999. Intel say this has been fixed.
+#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION > 1200)
+# undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# undef BOOST_NO_CXX11_NULLPTR
+# undef BOOST_NO_CXX11_RVALUE_REFERENCES
+# undef BOOST_NO_SFINAE_EXPR
+# undef BOOST_NO_CXX11_TEMPLATE_ALIASES
+# undef BOOST_NO_CXX11_VARIADIC_TEMPLATES
+
+// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
+// continues to list scoped enum support as "Partial"
+//# undef BOOST_NO_CXX11_SCOPED_ENUMS
+#endif
+#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1310) && !defined(_MSC_VER)
+# undef BOOST_NO_CXX11_INLINE_NAMESPACES
+# undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+// This one generates internal compiler errors in multiprecision, disabled for now:
+//# undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+// This one generates errors when used with conditional exception specifications, for example in multiprecision:
+//# undef BOOST_NO_CXX11_NOEXCEPT
+# undef BOOST_NO_CXX11_RANGE_BASED_FOR
+# undef BOOST_NO_CXX11_SCOPED_ENUMS
+# undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#endif
+#if (BOOST_INTEL_CXX_VERSION >= 1310)
+# undef BOOST_NO_SFINAE_EXPR
+#endif
+#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1400) && !defined(_MSC_VER)
+# undef BOOST_NO_CXX11_UNICODE_LITERALS
+# undef BOOST_NO_CXX11_RAW_LITERALS
+// This one generates errors when used with conditional exception specifications, for example in multiprecision:
+//# undef BOOST_NO_CXX11_NOEXCEPT
+// This breaks multiprecision:
+//# undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# undef BOOST_NO_CXX11_HDR_THREAD
+# undef BOOST_NO_CXX11_CHAR32_T
+# undef BOOST_NO_CXX11_CHAR16_T
+#endif
+
+#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION <= 1310)
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#endif
+
+#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION == 1400)
+// A regression in Intel's compiler means that <tuple> seems to be broken in this release as well as <future> :
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_TUPLE
+#endif
+
+#if defined(_MSC_VER) && (_MSC_VER <= 1700)
+//
+// Although the Intel compiler is capable of supporting these, it appears not to in MSVC compatibility mode:
+//
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+# if(BOOST_INTEL_CXX_VERSION < 1310)
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# endif
+#endif
+
+#if (BOOST_INTEL_CXX_VERSION < 1200)
+//
+// fenv.h appears not to work with Intel prior to 12.0:
+//
+# define BOOST_NO_FENV_H
+#endif
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1600)
+# define BOOST_HAS_STDINT_H
+#endif
+
+#if defined(__LP64__) && defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1310)
+# define BOOST_HAS_INT128
+#endif
//
// last known and checked version:
-#if (BOOST_INTEL_CXX_VERSION > 1110)
+#if (BOOST_INTEL_CXX_VERSION > 1310)
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# elif defined(_MSC_VER)
-// (C) Copyright John Maddock 2001.
-// (C) Copyright Darin Adler 2001.
-// (C) Copyright Peter Dimov 2001.
-// (C) Copyright David Abrahams 2001 - 2002.
-// (C) Copyright Beman Dawes 2001 - 2003.
-// (C) Copyright Stefan Slapeta 2004.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright David Abrahams 2001 - 2002.
+// (C) Copyright Beman Dawes 2001 - 2003.
+// (C) Copyright Stefan Slapeta 2004.
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
// locale support is disabled when linking with the dynamic runtime
# ifdef _MSL_NO_LOCALE
# define BOOST_NO_STD_LOCALE
-# endif
+# endif
# if __MWERKS__ <= 0x2301 // 5.3
# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
#if __MWERKS__ > 0x3206 && __option(rvalue_refs)
# define BOOST_HAS_RVALUE_REFS
#else
-# define BOOST_NO_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
#endif
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
-// (C) Copyright John Maddock 2001 - 2002.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
//
// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
//
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
//
// versions check:
// NVIDIA Specific support
// BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device
#define BOOST_GPU_ENABLED __host__ __device__
-
-// Boost support macro for NVCC
-// NVCC Basically behaves like some flavor of MSVC6 + some specific quirks
-#define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-#define BOOST_MSVC6_MEMBER_TEMPLATES
-#define BOOST_HAS_UNISTD_H
-#define BOOST_HAS_STDINT_H
-#define BOOST_HAS_SIGACTION
-#define BOOST_HAS_SCHED_YIELD
-#define BOOST_HAS_PTHREADS
-#define BOOST_HAS_PTHREAD_YIELD
-#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-#define BOOST_HAS_PARTIAL_STD_ALLOCATOR
-#define BOOST_HAS_NRVO
-#define BOOST_HAS_NL_TYPES_H
-#define BOOST_HAS_NANOSLEEP
-#define BOOST_HAS_LONG_LONG
-#define BOOST_HAS_LOG1P
-#define BOOST_HAS_GETTIMEOFDAY
-#define BOOST_HAS_EXPM1
-#define BOOST_HAS_DIRENT_H
-#define BOOST_HAS_CLOCK_GETTIME
-#define BOOST_NO_VARIADIC_TEMPLATES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_STD_UNORDERED
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_SCOPED_ENUMS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_MS_INT64_NUMERIC_LIMITS
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_0X_HDR_UNORDERED_SET
-#define BOOST_NO_0X_HDR_UNORDERED_MAP
-#define BOOST_NO_0X_HDR_TYPE_TRAITS
-#define BOOST_NO_0X_HDR_TUPLE
-#define BOOST_NO_0X_HDR_THREAD
-#define BOOST_NO_0X_HDR_TYPEINDEX
-#define BOOST_NO_0X_HDR_SYSTEM_ERROR
-#define BOOST_NO_0X_HDR_REGEX
-#define BOOST_NO_0X_HDR_RATIO
-#define BOOST_NO_0X_HDR_RANDOM
-#define BOOST_NO_0X_HDR_MUTEX
-#define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-#define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-#define BOOST_NO_0X_HDR_INITIALIZER_LIST
-#define BOOST_NO_0X_HDR_FUTURE
-#define BOOST_NO_0X_HDR_FORWARD_LIST
-#define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-#define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-#define BOOST_NO_0X_HDR_CONCEPTS
-#define BOOST_NO_0X_HDR_CODECVT
-#define BOOST_NO_0X_HDR_CHRONO
-#define BOOST_NO_0X_HDR_ARRAY
-
--- /dev/null
+// (C) Copyright Bryce Lelbach 2011
+
+// Use, modification and distribution are subject to 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)
+
+// See http://www.boost.org for most recent version.
+
+// PathScale EKOPath C++ Compiler
+
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "PathScale EKOPath C++ Compiler version " __PATHSCALE__
+#endif
+
+#if __PATHCC__ >= 4
+# define BOOST_MSVC6_MEMBER_TEMPLATES
+# define BOOST_HAS_UNISTD_H
+# define BOOST_HAS_STDINT_H
+# define BOOST_HAS_SIGACTION
+# define BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_THREADS
+# define BOOST_HAS_PTHREADS
+# define BOOST_HAS_PTHREAD_YIELD
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+# define BOOST_HAS_NRVO
+# define BOOST_HAS_NL_TYPES_H
+# define BOOST_HAS_NANOSLEEP
+# define BOOST_HAS_LONG_LONG
+# define BOOST_HAS_LOG1P
+# define BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_EXPM1
+# define BOOST_HAS_DIRENT_H
+# define BOOST_HAS_CLOCK_GETTIME
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+# define BOOST_NO_CXX11_STATIC_ASSERT
+# define BOOST_NO_SFINAE_EXPR
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_RANGE_BASED_FOR
+# define BOOST_NO_CXX11_RAW_LITERALS
+# define BOOST_NO_CXX11_NULLPTR
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_NOEXCEPT
+# define BOOST_NO_CXX11_LAMBDAS
+# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# define BOOST_NO_CXX11_DECLTYPE
+# define BOOST_NO_CXX11_DECLTYPE_N3276
+# define BOOST_NO_CXX11_CONSTEXPR
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+# define BOOST_NO_CXX11_CHAR32_T
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+# define BOOST_NO_CXX11_ALIGNAS
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
+#endif
// (C) Copyright Noel Belcourt 2007.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
// PGI C++ compiler setup:
#define BOOST_COMPILER_VERSION __PGIC__##__PGIC_MINOR__
-#define BOOST_COMPILER "PGI compiler version " BOOST_STRINGIZE(_COMPILER_VERSION)
+#define BOOST_COMPILER "PGI compiler version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
//
// Threading support:
// if no threading API is detected.
//
-// PGI 10.x doesn't seem to define __PGIC__
-
-// versions earlier than 10.x do define __PGIC__
-#if __PGIC__ >= 10
+#if __PGIC__ >= 11
// options requested by configure --enable-test
#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_THREADS
+#define BOOST_HAS_PTHREAD_YIELD
+#define BOOST_HAS_NRVO
+#define BOOST_HAS_LONG_LONG
+
+// options --enable-test wants undefined
+#undef BOOST_NO_STDC_NAMESPACE
+#undef BOOST_NO_EXCEPTION_STD_NAMESPACE
+#undef BOOST_DEDUCED_TYPENAME
+
+#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+
+#elif __PGIC__ >= 10
+
+// options requested by configure --enable-test
+#define BOOST_HAS_THREADS
#define BOOST_HAS_NRVO
#define BOOST_HAS_LONG_LONG
+#if defined(linux) || defined(__linux) || defined(__linux__)
+# define BOOST_HAS_STDINT_H
+#endif
// options --enable-test wants undefined
#undef BOOST_NO_STDC_NAMESPACE
#elif __PGIC__ >= 7
-#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
#define BOOST_NO_SWPRINTF
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
#else
//
// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
//
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_NUMERIC_LIMITS
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_SWPRINTF
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+
+#define BOOST_NO_CXX11_HDR_UNORDERED_SET
+#define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+#define BOOST_NO_CXX11_HDR_TYPEINDEX
+#define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+#define BOOST_NO_CXX11_HDR_TUPLE
+#define BOOST_NO_CXX11_HDR_THREAD
+#define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+#define BOOST_NO_CXX11_HDR_REGEX
+#define BOOST_NO_CXX11_HDR_RATIO
+#define BOOST_NO_CXX11_HDR_RANDOM
+#define BOOST_NO_CXX11_HDR_MUTEX
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_HDR_FUTURE
+#define BOOST_NO_CXX11_HDR_FORWARD_LIST
+#define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+#define BOOST_NO_CXX11_HDR_CODECVT
+#define BOOST_NO_CXX11_HDR_CHRONO
+#define BOOST_NO_CXX11_HDR_ARRAY
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
//
// version check:
-// (C) Copyright John Maddock 2001.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// (C) Copyright Peter Dimov 2002.
-// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
-// (C) Copyright David Abrahams 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright Peter Dimov 2002.
+// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
+// (C) Copyright David Abrahams 2002.
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
# endif
-# if (__SUNPRO_CC <= 0x530)
+# if (__SUNPRO_CC <= 0x530)
// Requesting debug info (-g) with Boost.Python results
// in an internal compiler error for "static const"
// initialized in-class.
# define BOOST_NO_INTEGRAL_INT64_T
# endif
-# if (__SUNPRO_CC < 0x570)
+# if (__SUNPRO_CC < 0x570)
# define BOOST_NO_TEMPLATE_TEMPLATES
// see http://lists.boost.org/MailArchives/boost/msg47184.php
// and http://lists.boost.org/MailArchives/boost/msg47220.php
# define BOOST_NO_SFINAE
# define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
# endif
-# if (__SUNPRO_CC <= 0x580)
+# if (__SUNPRO_CC <= 0x580)
# define BOOST_NO_IS_ABSTRACT
# endif
//
# define BOOST_HAS_LONG_LONG
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
//
// Version
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Toon Knapen 2001 - 2003.
-// (C) Copyright Lie-Quan Lee 2001.
-// (C) Copyright Markus Schoepflin 2002 - 2003.
-// (C) Copyright Beman Dawes 2002 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Toon Knapen 2001 - 2003.
+// (C) Copyright Lie-Quan Lee 2001.
+// (C) Copyright Markus Schoepflin 2002 - 2003.
+// (C) Copyright Beman Dawes 2002 - 2003.
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
#endif
-#if (__IBMCPP__ <= 502)
+#if (__IBMCPP__ <= 502)
// Actually the compiler supports inclass member initialization but it
// requires a definition for the class member and it doesn't recognize
// it as an integral constant expression when used as a template argument.
#if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG)
# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
-# define BOOST_NO_INITIALIZER_LISTS
#endif
#if (__IBMCPP__ <= 1110)
-// XL C++ V11.1 and earlier versions may not always value-initialize
-// a temporary object T(), when T is a non-POD aggregate class type.
-// Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it
+// XL C++ V11.1 and earlier versions may not always value-initialize
+// a temporary object T(), when T is a non-POD aggregate class type.
+// Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it
// high priority. -- Niels Dekker (LKEB), May 2010.
# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
#endif
#error "Compiler not supported or configured - please reconfigure"
#endif
//
-// last known and checked version is 600:
-#if (__IBMCPP__ > 1010)
+// last known and checked version is 1210:
+#if (__IBMCPP__ > 1210)
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
// Some versions of the compiler have issues with default arguments on partial specializations
+#if __IBMCPP__ <= 1010
#define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+#endif
//
// C++0x features
//
// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
//
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_SCOPED_ENUMS
+#if ! __IBMCPP_AUTO_TYPEDEDUCTION
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#endif
+#if ! __IBMCPP_UTF_LITERAL__
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+#endif
+#if ! __IBMCPP_CONSTEXPR
+# define BOOST_NO_CXX11_CONSTEXPR
+#endif
+#if ! __IBMCPP_DECLTYPE
+# define BOOST_NO_CXX11_DECLTYPE
+#else
+# define BOOST_HAS_DECLTYPE
+#endif
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#if ! __IBMCPP_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#endif
+#if ! __IBMCPP_EXTERN_TEMPLATE
+# define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#endif
+#if ! __IBMCPP_VARIADIC_TEMPLATES
+// not enabled separately at this time
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#endif
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#if ! __IBMCPP_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+#endif
+#if ! __IBMCPP_SCOPED_ENUM
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+#endif
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
-
-
-
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#if ! __IBMCPP_STATIC_ASSERT
+# define BOOST_NO_CXX11_STATIC_ASSERT
+#endif
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#if ! __IBMCPP_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#endif
+#if ! __C99_MACRO_WITH_VA_ARGS
+# define BOOST_NO_CXX11_VARIADIC_MACROS
+#endif
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Darin Adler 2001 - 2002.
-// (C) Copyright Peter Dimov 2001.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Beman Dawes 2002 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001 - 2002.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Beman Dawes 2002 - 2003.
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
-
+//
// Microsoft Visual C++ compiler setup:
+//
+// We need to be careful with the checks in this file, as contrary
+// to popular belief there are versions with _MSC_VER with the final
+// digit non-zero (mainly the MIPS cross compiler).
+//
+// So we either test _MSC_VER >= XXXX or else _MSC_VER < XXXX.
+// No other comparisons (==, >, or <=) are safe.
+//
#define BOOST_MSVC _MSC_VER
+//
+// Helper macro BOOST_MSVC_FULL_VER for use in Boost code:
+//
#if _MSC_FULL_VER > 100000000
# define BOOST_MSVC_FULL_VER _MSC_FULL_VER
#else
# define BOOST_MSVC_FULL_VER (_MSC_FULL_VER * 10)
#endif
-// turn off the warnings before we #include anything
+// Attempt to suppress VC6 warnings about the length of decorated names (obsolete):
#pragma warning( disable : 4503 ) // warning: decorated name length exceeded
-#if _MSC_VER < 1300 // 1200 == VC++ 6.0, 1200-1202 == eVC++4
-# pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info
-# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
-# define BOOST_NO_VOID_RETURNS
-# define BOOST_NO_EXCEPTION_STD_NAMESPACE
+#define BOOST_HAS_PRAGMA_ONCE
-# if BOOST_MSVC == 1202
-# define BOOST_NO_STD_TYPEINFO
-# endif
-
- // disable min/max macro defines on vc6:
- //
+//
+// versions check:
+// we don't support Visual C++ prior to version 7.1:
+#if _MSC_VER < 1310
+# error "Compiler not supported or configured - please reconfigure"
#endif
-#if (_MSC_VER <= 1300) // 1300 == VC++ 7.0
-
-# if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za
-# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
-# endif
-
-# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-# define BOOST_NO_PRIVATE_IN_AGGREGATE
-# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
-# define BOOST_NO_INTEGRAL_INT64_T
-# define BOOST_NO_DEDUCED_TYPENAME
-# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
-
-// VC++ 6/7 has member templates but they have numerous problems including
-// cases of silent failure, so for safety we define:
-# define BOOST_NO_MEMBER_TEMPLATES
-// For VC++ experts wishing to attempt workarounds, we define:
-# define BOOST_MSVC6_MEMBER_TEMPLATES
-
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# define BOOST_NO_CV_VOID_SPECIALIZATIONS
-# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-# define BOOST_NO_USING_TEMPLATE
-# define BOOST_NO_SWPRINTF
-# define BOOST_NO_TEMPLATE_TEMPLATES
-# define BOOST_NO_SFINAE
-# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
-# define BOOST_NO_IS_ABSTRACT
-# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
-// TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
-# if (_MSC_VER > 1200)
-# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
-# endif
-
+#if _MSC_FULL_VER < 180020827
+# define BOOST_NO_FENV_H
#endif
-#if _MSC_VER < 1400
+#if _MSC_VER < 1400
// although a conforming signature for swprint exists in VC7.1
// it appears not to actually work:
# define BOOST_NO_SWPRINTF
// Our extern template tests also fail for this compiler:
-# define BOOST_NO_EXTERN_TEMPLATE
+# define BOOST_NO_CXX11_EXTERN_TEMPLATE
+// Variadic macros do not exist for VC7.1 and lower
+# define BOOST_NO_CXX11_VARIADIC_MACROS
#endif
#if defined(UNDER_CE)
# define BOOST_NO_SWPRINTF
#endif
-#if _MSC_VER <= 1400 // 1400 == VC++ 8.0
+#if _MSC_VER < 1500 // 140X == VC++ 8.0
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
#endif
-#if _MSC_VER <= 1600 // 1600 == VC++ 10.0
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#endif
-
-#if _MSC_VER == 1500 // 1500 == VC++ 9.0
+#if _MSC_VER < 1600 // 150X == VC++ 9.0
// A bug in VC9:
# define BOOST_NO_ADL_BARRIER
#endif
-#if (_MSC_VER <= 1600)
-// MSVC (including the latest checked version) has not yet completely
+// MSVC (including the latest checked version) has not yet completely
// implemented value-initialization, as is reported:
-// "VC++ does not value-initialize members of derived classes without
+// "VC++ does not value-initialize members of derived classes without
// user-declared constructor", reported in 2009 by Sylvester Hesp:
// https://connect.microsoft.com/VisualStudio/feedback/details/484295
// "Presence of copy constructor breaks member class initialization",
// https://connect.microsoft.com/VisualStudio/feedback/details/100744
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
// (Niels Dekker, LKEB, May 2010)
-#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-#endif
-
-#if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0
-# define BOOST_NO_INITIALIZER_LISTS
-#endif
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
#ifndef _NATIVE_WCHAR_T_DEFINED
# define BOOST_NO_INTRINSIC_WCHAR_T
#endif
#if defined(_WIN32_WCE) || defined(UNDER_CE)
-# define BOOST_NO_THREADEX
-# define BOOST_NO_GETSYSTEMTIMEASFILETIME
# define BOOST_NO_SWPRINTF
#endif
-//
-// check for exception handling support:
+// we have ThreadEx or GetSystemTimeAsFileTime unless we're running WindowsCE
+#if !defined(_WIN32_WCE) && !defined(UNDER_CE)
+# define BOOST_HAS_THREADEX
+# define BOOST_HAS_GETSYSTEMTIMEASFILETIME
+#endif
+
+//
+// check for exception handling support:
#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
-# define BOOST_NO_EXCEPTIONS
-#endif
+# define BOOST_NO_EXCEPTIONS
+#endif
//
// __int64 support:
//
-#if (_MSC_VER >= 1200)
-# define BOOST_HAS_MS_INT64
-#endif
-#if (_MSC_VER >= 1310) && (defined(_MSC_EXTENSIONS) || (_MSC_VER >= 1400))
+#define BOOST_HAS_MS_INT64
+#if defined(_MSC_EXTENSIONS) || (_MSC_VER >= 1400)
# define BOOST_HAS_LONG_LONG
#else
# define BOOST_NO_LONG_LONG
# define BOOST_NO_RTTI
#endif
+//
+// TR1 features:
+//
+#if _MSC_VER >= 1700
+// # define BOOST_HAS_TR1_HASH // don't know if this is true yet.
+// # define BOOST_HAS_TR1_TYPE_TRAITS // don't know if this is true yet.
+# define BOOST_HAS_TR1_UNORDERED_MAP
+# define BOOST_HAS_TR1_UNORDERED_SET
+#endif
+
//
// C++0x features
//
// C++ features supported by VC++ 10 (aka 2010)
//
#if _MSC_VER < 1600
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_NULLPTR
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# define BOOST_NO_CXX11_LAMBDAS
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_STATIC_ASSERT
+# define BOOST_NO_CXX11_NULLPTR
+# define BOOST_NO_CXX11_DECLTYPE
#endif // _MSC_VER < 1600
+
#if _MSC_VER >= 1600
-#define BOOST_HAS_STDINT_H
+# define BOOST_HAS_STDINT_H
#endif
-// C++0x features not supported by any versions
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_SCOPED_ENUMS
+// C++11 features supported by VC++ 11 (aka 2012)
+//
+#if _MSC_VER < 1700
+# define BOOST_NO_CXX11_RANGE_BASED_FOR
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+#endif // _MSC_VER < 1700
+
+// C++11 features supported by VC++ 12 (aka 2013).
+//
+#if _MSC_FULL_VER < 180020827
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# define BOOST_NO_CXX11_RAW_LITERALS
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#endif
+
+// C++11 features not supported by any versions
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_UNICODE_LITERALS
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+
//
// prefix and suffix headers:
//
# define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp"
#endif
+#ifndef BOOST_COMPILER
// TODO:
-// these things are mostly bogus. 1200 means version 12.0 of the compiler. The
+// these things are mostly bogus. 1200 means version 12.0 of the compiler. The
// artificial versions assigned to them only refer to the versions of some IDE
// these compilers have been shipped with, and even that is not all of it. Some
// were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
// IOW, you can't use these 'versions' in any sensible way. Sorry.
# if defined(UNDER_CE)
-# if _MSC_VER < 1200
- // Note: these are so far off, they are not really supported
-# elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202
-# define BOOST_COMPILER_VERSION evc4.0
-# elif _MSC_VER == 1400
+# if _MSC_VER < 1400
+ // Note: I'm not aware of any CE compiler with version 13xx
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown EVC++ compiler version - please run the configure tests and report the results"
+# else
+# pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
+# endif
+# elif _MSC_VER < 1500
# define BOOST_COMPILER_VERSION evc8
-# elif _MSC_VER == 1500
+# elif _MSC_VER < 1600
# define BOOST_COMPILER_VERSION evc9
-# elif _MSC_VER == 1600
+# elif _MSC_VER < 1700
# define BOOST_COMPILER_VERSION evc10
+# elif _MSC_VER < 1800
+# define BOOST_COMPILER_VERSION evc11
+# elif _MSC_VER < 1900
+# define BOOST_COMPILER_VERSION evc12
# else
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown EVC++ compiler version - please run the configure tests and report the results"
# endif
# endif
# else
-# if _MSC_VER < 1200
- // Note: these are so far off, they are not really supported
+# if _MSC_VER < 1310
+ // Note: Versions up to 7.0 aren't supported.
# define BOOST_COMPILER_VERSION 5.0
# elif _MSC_VER < 1300
-# define BOOST_COMPILER_VERSION 6.0
-# elif _MSC_VER == 1300
+# define BOOST_COMPILER_VERSION 6.0
+# elif _MSC_VER < 1310
# define BOOST_COMPILER_VERSION 7.0
-# elif _MSC_VER == 1310
+# elif _MSC_VER < 1400
# define BOOST_COMPILER_VERSION 7.1
-# elif _MSC_VER == 1400
+# elif _MSC_VER < 1500
# define BOOST_COMPILER_VERSION 8.0
-# elif _MSC_VER == 1500
+# elif _MSC_VER < 1600
# define BOOST_COMPILER_VERSION 9.0
-# elif _MSC_VER == 1600
+# elif _MSC_VER < 1700
# define BOOST_COMPILER_VERSION 10.0
+# elif _MSC_VER < 1800
+# define BOOST_COMPILER_VERSION 11.0
+# elif _MSC_VER < 1900
+# define BOOST_COMPILER_VERSION 12.0
# else
# define BOOST_COMPILER_VERSION _MSC_VER
# endif
# endif
-#define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
-
-//
-// versions check:
-// we don't support Visual C++ prior to version 6:
-#if _MSC_VER < 1200
-#error "Compiler not supported or configured - please reconfigure"
+# define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
#endif
+
//
-// last known and checked version is 1600 (VC10, aka 2010):
-#if (_MSC_VER > 1600)
+// last known and checked version is 18.00.20827.3 (VC12 RC, aka 2013 RC):
+#if (_MSC_VER > 1800 && _MSC_FULL_VER > 180020827)
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# else
#endif
#if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \
- || (__NetBSD_GCC__ >= 2095003) || defined(__DragonFly__))
+ || (defined(__NetBSD_GCC__) && (__NetBSD_GCC__ >= 2095003)) || defined(__DragonFly__))
# define BOOST_NO_CWCHAR
#endif
//
--- /dev/null
+// (C) Copyright John Maddock 2011.
+// Use, modification and distribution are subject to 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)
+
+
+// See http://www.boost.org for most recent version.
+
+// SGI Irix specific config options:
+
+#define BOOST_PLATFORM "Cray"
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/posix_features.hpp>
+
+
+
#define BOOST_HAS_STDINT_H
#endif
+/// Cygwin has no fenv.h
+#define BOOST_NO_FENV_H
+
// boilerplate code:
#include <boost/config/posix_features.hpp>
+
+//
+// Cygwin lies about XSI conformance, there is no nl_types.h:
+//
+#ifdef BOOST_HAS_NL_TYPES_H
+# undef BOOST_HAS_NL_TYPES_H
+#endif
#define BOOST_PLATFORM "linux"
// make sure we have __GLIBC_PREREQ if available at all
+#ifdef __cplusplus
#include <cstdlib>
+#else
+#include <stdlib.h>
+#endif
//
// <stdint.h> added to glibc 2.1.1
// boilerplate code:
#define BOOST_HAS_UNISTD_H
#include <boost/config/posix_features.hpp>
+#define BOOST_HAS_PTHREAD_YIELD
#ifndef __GNUC__
//
# if ( defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON ) || ( defined(TARGET_CARBON) && TARGET_CARBON )
# if !defined(BOOST_HAS_PTHREADS)
-# define BOOST_HAS_MPTASKS
+// MPTasks support is deprecated/removed from Boost:
+//# define BOOST_HAS_MPTASKS
# elif ( __dest_os == __mac_os_x )
// We are doing a Carbon/Mach-O/MSL build which has pthreads, but only the
// gettimeofday and no posix.
# define BOOST_HAS_GETTIMEOFDAY
# endif
-// The MP task implementation of Boost Threads aims to replace MP-unsafe
-// parts of the MSL, so we turn on threads unconditionally.
-# define BOOST_HAS_THREADS
+#ifdef BOOST_HAS_PTHREADS
+# define BOOST_HAS_THREADS
+#endif
// The remote call manager depends on this.
# define BOOST_BIND_ENABLE_PASCAL
// Open C / C++ plugin was introdused in this SDK, earlier versions don't have CRT / STL
# define BOOST_S60_3rd_EDITION_FP2_OR_LATER_SDK
// make sure we have __GLIBC_PREREQ if available at all
-# include <cstdlib>
-// boilerplate code:
+#ifdef __cplusplus
+#include <cstdlib>
+#else
+#include <stdlib.h>
+#endif// boilerplate code:
# define BOOST_HAS_UNISTD_H
# include <boost/config/posix_features.hpp>
// S60 SDK defines _POSIX_VERSION as POSIX.1
--- /dev/null
+// (C) Copyright Artyom Beilis 2010.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_CONFIG_PLATFORM_VMS_HPP
+#define BOOST_CONFIG_PLATFORM_VMS_HPP
+
+#define BOOST_PLATFORM "OpenVMS"
+
+#undef BOOST_HAS_STDINT_H
+#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_NL_TYPES_H
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_DIRENT_H
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_HAS_CLOCK_GETTIME
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#define BOOST_HAS_LOG1P
+#define BOOST_HAS_EXPM1
+#define BOOST_HAS_THREADS
+#undef BOOST_HAS_SCHED_YIELD
+
+#endif
-// (C) Copyright Dustin Spicuzza 2009.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// (C) Copyright Dustin Spicuzza 2009.
+// Adapted to vxWorks 6.9 by Peter Brockamp 2012.
+// Use, modification and distribution are subject to 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)
// See http://www.boost.org for most recent version.
-// vxWorks specific config options:
+// Since WRS does not yet properly support boost under vxWorks
+// and this file was badly outdated, but I was keen on using it,
+// I patched boost myself to make things work. This has been tested
+// and adapted by me for vxWorks 6.9 *only*, as I'm lacking access
+// to earlier 6.X versions! The only thing I know for sure is that
+// very old versions of vxWorks (namely everything below 6.x) are
+// absolutely unable to use boost. This is mainly due to the completely
+// outdated libraries and ancient compiler (GCC 2.96 or worse). Do
+// not even think of getting this to work, a miserable failure will
+// be guaranteed!
+// Equally, this file has been tested for RTPs (Real Time Processes)
+// only, not for DKMs (Downloadable Kernel Modules). These two types
+// of executables differ largely in the available functionality of
+// the C-library, STL, and so on. A DKM uses a library similar to those
+// of vxWorks 5.X - with all its limitations and incompatibilities
+// with respect to ANSI C++ and STL. So probably there might be problems
+// with the usage of boost from DKMs. WRS or any voluteers are free to
+// prove the opposite!
+// ====================================================================
+//
+// Some important information regarding the usage of POSIX semaphores:
+// -------------------------------------------------------------------
+//
+// VxWorks as a real time operating system handles threads somewhat
+// different from what "normal" OSes do, regarding their scheduling!
+// This could lead to a scenario called "priority inversion" when using
+// semaphores, see http://en.wikipedia.org/wiki/Priority_inversion.
+//
+// Now, VxWorks POSIX-semaphores for DKM's default to the usage of
+// priority inverting semaphores, which is fine. On the other hand,
+// for RTP's it defaults to using non priority inverting semaphores,
+// which could easily pose a serious problem for a real time process,
+// i.e. deadlocks! To overcome this two possibilities do exist:
+//
+// a) Patch every piece of boost that uses semaphores to instanciate
+// the proper type of semaphores. This is non-intrusive with respect
+// to the OS and could relatively easy been done by giving all
+// semaphores attributes deviating from the default (for in-depth
+// information see the POSIX functions pthread_mutexattr_init()
+// and pthread_mutexattr_setprotocol()). However this breaks all
+// too easily, as with every new version some boost library could
+// all in a sudden start using semaphores, resurrecting the very
+// same, hard to locate problem over and over again!
+//
+// b) We could change the default properties for POSIX-semaphores
+// that VxWorks uses for RTP's and this is being suggested here,
+// as it will more or less seamlessly integrate with boost. I got
+// the following information from WRS how to do this, compare
+// Wind River TSR# 1209768:
+//
+// Instructions for changing the default properties of POSIX-
+// semaphores for RTP's in VxWorks 6.9:
+// - Edit the file /vxworks-6.9/target/usr/src/posix/pthreadLib.c
+// in the root of your Workbench-installation.
+// - Around line 917 there should be the definition of the default
+// mutex attributes:
+//
+// LOCAL pthread_mutexattr_t defaultMutexAttr =
+// {
+// PTHREAD_INITIALIZED_OBJ, PTHREAD_PRIO_NONE, 0,
+// PTHREAD_MUTEX_DEFAULT
+// };
+//
+// Here, replace PTHREAD_PRIO_NONE by PTHREAD_PRIO_INHERIT.
+// - Around line 1236 there should be a definition for the function
+// pthread_mutexattr_init(). A couple of lines below you should
+// find a block of code like this:
+//
+// pAttr->mutexAttrStatus = PTHREAD_INITIALIZED_OBJ;
+// pAttr->mutexAttrProtocol = PTHREAD_PRIO_NONE;
+// pAttr->mutexAttrPrioceiling = 0;
+// pAttr->mutexAttrType = PTHREAD_MUTEX_DEFAULT;
+//
+// Here again, replace PTHREAD_PRIO_NONE by PTHREAD_PRIO_INHERIT.
+// - Finally, rebuild your VSB. This will create a new VxWorks kernel
+// with the changed properties. That's it! Now, using boost should
+// no longer cause any problems with task deadlocks!
+//
+// And here's another useful piece of information concerning VxWorks'
+// POSIX-functionality in general:
+// VxWorks is not a genuine POSIX-OS in itself, rather it is using a
+// kind of compatibility layer (sort of a wrapper) to emulate the
+// POSIX-functionality by using its own resources and functions.
+// At the time a task (thread) calls it's first POSIX-function during
+// runtime it is being transformed by the OS into a POSIX-thread.
+// This transformation does include a call to malloc() to allocate the
+// memory required for the housekeeping of POSIX-threads. In a high
+// priority RTP this malloc() call may be highly undesirable, as its
+// timing is more or less unpredictable (depending on what your actual
+// heap looks like). You can circumvent this problem by calling the
+// function thread_self() at a well defined point in the code of the
+// task, e.g. shortly after the task spawns up. Thereby you are able
+// to define the time when the task-transformation will take place and
+// you could shift it to an uncritical point where a malloc() call is
+// tolerable. So, if this could pose a problem for your code, remember
+// to call thread_self() from the affected task at an early stage.
+//
+// ====================================================================
+
+// Block out all versions before vxWorks 6.x, as these don't work:
+// Include header with the vxWorks version information and query them
+#include <version.h>
+#if !defined(_WRS_VXWORKS_MAJOR) || (_WRS_VXWORKS_MAJOR < 6)
+# error "The vxWorks version you're using is so badly outdated,\
+ it doesn't work at all with boost, sorry, no chance!"
+#endif
+
+// Handle versions above 5.X but below 6.9
+#if (_WRS_VXWORKS_MAJOR == 6) && (_WRS_VXWORKS_MINOR < 9)
+// TODO: Starting from what version does vxWorks work with boost?
+// We can't reasonably insert a #warning "" as a user hint here,
+// as this will show up with every file including some boost header,
+// badly bugging the user... So for the time being we just leave it.
+#endif
+
+// vxWorks specific config options:
+// --------------------------------
#define BOOST_PLATFORM "vxWorks"
-#define BOOST_NO_CWCHAR
-#define BOOST_NO_INTRINSIC_WCHAR_T
+// Special behaviour for DKMs:
+#ifdef _WRS_KERNEL
+ // DKMs do not have the <cwchar>-header,
+ // but apparently they do have an intrinsic wchar_t meanwhile!
+# define BOOST_NO_CWCHAR
-#if defined(__GNUC__) && defined(__STRICT_ANSI__)
-#define BOOST_NO_INT64_T
+ // Lots of wide-functions and -headers are unavailable for DKMs as well:
+# define BOOST_NO_CWCTYPE
+# define BOOST_NO_SWPRINTF
+# define BOOST_NO_STD_WSTRING
+# define BOOST_NO_STD_WSTREAMBUF
#endif
+// Generally available headers:
#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_STDINT_H
+#define BOOST_HAS_DIRENT_H
+#define BOOST_HAS_SLIST
+
+// vxWorks does not have installed an iconv-library by default,
+// so unfortunately no Unicode support from scratch is available!
+// Thus, instead it is suggested to switch to ICU, as this seems
+// to be the most complete and portable option...
+#define BOOST_LOCALE_WITH_ICU
+
+// Generally available functionality:
+#define BOOST_HAS_THREADS
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_CLOCK_GETTIME
+#define BOOST_HAS_MACRO_USE_FACET
+
+// Generally unavailable functionality, delivered by boost's test function:
+//#define BOOST_NO_DEDUCED_TYPENAME // Commented this out, boost's test gives an errorneous result!
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+
+// Generally available threading API's:
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_SCHED_YIELD
+#define BOOST_HAS_SIGACTION
+
+// Functionality available for RTPs only:
+#ifdef __RTP__
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_LOG1P
+# define BOOST_HAS_EXPM1
+#endif
-// these allow posix_features to work, since vxWorks doesn't
-// define them itself
-#define _POSIX_TIMERS 1
-#define _POSIX_THREADS 1
+// Functionality available for DKMs only:
+#ifdef _WRS_KERNEL
+ // Luckily, at the moment there seems to be none!
+#endif
-// vxworks doesn't work with asio serial ports
+// These #defines allow posix_features to work, since vxWorks doesn't
+// #define them itself for DKMs (for RTPs on the contrary it does):
+#ifdef _WRS_KERNEL
+# ifndef _POSIX_TIMERS
+# define _POSIX_TIMERS 1
+# endif
+# ifndef _POSIX_THREADS
+# define _POSIX_THREADS 1
+# endif
+#endif
+
+// vxWorks doesn't work with asio serial ports:
#define BOOST_ASIO_DISABLE_SERIAL_PORT
+// TODO: The problem here seems to bee that vxWorks uses its own, very specific
+// ways to handle serial ports, incompatible with POSIX or anything...
+// Maybe a specific implementation would be possible, but until the
+// straight need arises... This implementation would presumably consist
+// of some vxWorks specific ioctl-calls, etc. Any voluteers?
+
+// vxWorks-around: <time.h> #defines CLOCKS_PER_SEC as sysClkRateGet() but
+// miserably fails to #include the required <sysLib.h> to make
+// sysClkRateGet() available! So we manually include it here.
+#ifdef __RTP__
+# include <time.h>
+# include <sysLib.h>
+#endif
+
+// vxWorks-around: In <stdint.h> the macros INT32_C(), UINT32_C(), INT64_C() and
+// UINT64_C() are defined errorneously, yielding not a signed/
+// unsigned long/long long type, but a signed/unsigned int/long
+// type. Eventually this leads to compile errors in ratio_fwd.hpp,
+// when trying to define several constants which do not fit into a
+// long type! We correct them here by redefining.
+#include <cstdint>
+
+// Some macro-magic to do the job
+#define VX_JOIN(X, Y) VX_DO_JOIN(X, Y)
+#define VX_DO_JOIN(X, Y) VX_DO_JOIN2(X, Y)
+#define VX_DO_JOIN2(X, Y) X##Y
+
+// Correctly setup the macros
+#undef INT32_C
+#undef UINT32_C
+#undef INT64_C
+#undef UINT64_C
+#define INT32_C(x) VX_JOIN(x, L)
+#define UINT32_C(x) VX_JOIN(x, UL)
+#define INT64_C(x) VX_JOIN(x, LL)
+#define UINT64_C(x) VX_JOIN(x, ULL)
+
+// #include Libraries required for the following function adaption
+#include <ioLib.h>
+#include <tickLib.h>
+#include <sys/time.h>
-// boilerplate code:
+// Use C-linkage for the following helper functions
+extern "C" {
+
+// vxWorks-around: The required functions getrlimit() and getrlimit() are missing.
+// But we have the similar functions getprlimit() and setprlimit(),
+// which may serve the purpose.
+// Problem: The vxWorks-documentation regarding these functions
+// doesn't deserve its name! It isn't documented what the first two
+// parameters idtype and id mean, so we must fall back to an educated
+// guess - null, argh... :-/
+
+// TODO: getprlimit() and setprlimit() do exist for RTPs only, for whatever reason.
+// Thus for DKMs there would have to be another implementation.
+#ifdef __RTP__
+ inline int getrlimit(int resource, struct rlimit *rlp){
+ return getprlimit(0, 0, resource, rlp);
+ }
+
+ inline int setrlimit(int resource, const struct rlimit *rlp){
+ return setprlimit(0, 0, resource, const_cast<struct rlimit*>(rlp));
+ }
+#endif
+
+// vxWorks has ftruncate() only, so we do simulate truncate():
+inline int truncate(const char *p, off_t l){
+ int fd = open(p, O_WRONLY);
+ if (fd == -1){
+ errno = EACCES;
+ return -1;
+ }
+ if (ftruncate(fd, l) == -1){
+ close(fd);
+ errno = EACCES;
+ return -1;
+ }
+ return close(fd);
+}
+
+// Fake symlink handling by dummy functions:
+inline int symlink(const char*, const char*){
+ // vxWorks has no symlinks -> always return an error!
+ errno = EACCES;
+ return -1;
+}
+
+inline ssize_t readlink(const char*, char*, size_t){
+ // vxWorks has no symlinks -> always return an error!
+ errno = EACCES;
+ return -1;
+}
+
+// vxWorks claims to implement gettimeofday in sys/time.h
+// but nevertheless does not provide it! See
+// https://support.windriver.com/olsPortal/faces/maintenance/techtipDetail_noHeader.jspx?docId=16442&contentId=WR_TECHTIP_006256
+// We implement a surrogate version here via clock_gettime:
+inline int gettimeofday(struct timeval *tv, void * /*tzv*/) {
+ struct timespec ts;
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+ tv->tv_sec = ts.tv_sec;
+ tv->tv_usec = ts.tv_nsec / 1000;
+ return 0;
+}
+
+// vxWorks does provide neither struct tms nor function times()!
+// We implement an empty dummy-function, simply setting the user
+// and system time to the half of thew actual system ticks-value
+// and the child user and system time to 0.
+// Rather ugly but at least it suppresses compiler errors...
+// Unfortunately, this of course *does* have an severe impact on
+// dependant libraries, actually this is chrono only! Here it will
+// not be possible to correctly use user and system times! But
+// as vxWorks is lacking the ability to calculate user and system
+// process times there seems to be no other possible solution.
+struct tms{
+ clock_t tms_utime; // User CPU time
+ clock_t tms_stime; // System CPU time
+ clock_t tms_cutime; // User CPU time of terminated child processes
+ clock_t tms_cstime; // System CPU time of terminated child processes
+};
+
+inline clock_t times(struct tms *t){
+ struct timespec ts;
+ clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
+ clock_t ticks(static_cast<clock_t>(static_cast<double>(ts.tv_sec) * CLOCKS_PER_SEC +
+ static_cast<double>(ts.tv_nsec) * CLOCKS_PER_SEC / 1000000.0));
+ t->tms_utime = ticks/2U;
+ t->tms_stime = ticks/2U;
+ t->tms_cutime = 0; // vxWorks is lacking the concept of a child process!
+ t->tms_cstime = 0; // -> Set the wait times for childs to 0
+ return ticks;
+}
+
+} // extern "C"
+
+// Put the selfmade functions into the std-namespace, just in case
+namespace std {
+# ifdef __RTP__
+ using ::getrlimit;
+ using ::setrlimit;
+# endif
+ using ::truncate;
+ using ::symlink;
+ using ::readlink;
+ using ::times;
+ using ::gettimeofday;
+}
+
+// Some more macro-magic:
+// vxWorks-around: Some functions are not present or broken in vxWorks
+// but may be patched to life via helper macros...
+
+// Include signal.h which might contain a typo to be corrected here
+#include <signal.h>
+
+#define getpagesize() sysconf(_SC_PAGESIZE) // getpagesize is deprecated anyway!
+#ifndef S_ISSOCK
+# define S_ISSOCK(mode) ((mode & S_IFMT) == S_IFSOCK) // Is file a socket?
+#endif
+#define lstat(p, b) stat(p, b) // lstat() == stat(), as vxWorks has no symlinks!
+#ifndef FPE_FLTINV
+# define FPE_FLTINV (FPE_FLTSUB+1) // vxWorks has no FPE_FLTINV, so define one as a dummy
+#endif
+#if !defined(BUS_ADRALN) && defined(BUS_ADRALNR)
+# define BUS_ADRALN BUS_ADRALNR // Correct a supposed typo in vxWorks' <signal.h>
+#endif
+//typedef int locale_t; // locale_t is a POSIX-extension, currently unpresent in vxWorks!
+
+// #include boilerplate code:
#include <boost/config/posix_features.hpp>
-
+
+// vxWorks lies about XSI conformance, there is no nl_types.h:
+#undef BOOST_HAS_NL_TYPES_H
# define BOOST_SYMBOL_IMPORT __declspec(dllimport)
#endif
-
#if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
# define BOOST_HAS_STDINT_H
-# define __STDC_LIMIT_MACROS
+# ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+# endif
# define BOOST_HAS_DIRENT_H
# define BOOST_HAS_UNISTD_H
#endif
+#if defined(__MINGW32__) && (__GNUC__ >= 4)
+# define BOOST_HAS_EXPM1
+# define BOOST_HAS_LOG1P
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
//
// Win32 will normally be using native Win32 threads,
// but there is a pthread library avaliable as an option,
#ifdef _WIN32_WCE
# define BOOST_NO_ANSI_APIS
+#else
+# define BOOST_HAS_GETSYSTEMTIMEASFILETIME
#endif
#ifndef BOOST_HAS_PTHREADS
// See http://www.boost.org/ for most recent version.
-
-// one identification macro for each of the
-// compilers we support:
-
-# define BOOST_CXX_GCCXML 0
-# define BOOST_CXX_CLANG 0
-# define BOOST_CXX_COMO 0
-# define BOOST_CXX_DMC 0
-# define BOOST_CXX_INTEL 0
-# define BOOST_CXX_GNUC 0
-# define BOOST_CXX_KCC 0
-# define BOOST_CXX_SGI 0
-# define BOOST_CXX_TRU64 0
-# define BOOST_CXX_GHS 0
-# define BOOST_CXX_BORLAND 0
-# define BOOST_CXX_CW 0
-# define BOOST_CXX_SUNPRO 0
-# define BOOST_CXX_HPACC 0
-# define BOOST_CXX_MPW 0
-# define BOOST_CXX_IBMCPP 0
-# define BOOST_CXX_MSVC 0
-# define BOOST_CXX_PGI 0
-# define BOOST_CXX_NVCC 0
-
-
// locate which compiler we are using and define
// BOOST_COMPILER_CONFIG as needed:
+#if defined __CUDACC__
+// NVIDIA CUDA C++ compiler for GPU
+# include "boost/config/compiler/nvcc.hpp"
+
+#endif
+
#if defined(__GCCXML__)
// GCC-XML emulates other compilers, it has to appear first here!
# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc_xml.hpp"
-#elif defined __CUDACC__
-// NVIDIA CUDA C++ compiler for GPU
-# define BOOST_COMPILER_CONFIG "boost/config/compiler/nvcc.hpp"
+#elif defined(_CRAYC)
+// EDG based Cray compiler:
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/cray.hpp"
#elif defined __COMO__
// Comeau C++
# define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp"
+#elif defined(__PATHSCALE__) && (__PATHCC__ >= 4)
+// PathScale EKOPath compiler (has to come before clang and gcc)
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/pathscale.hpp"
+
+#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
+// Intel
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
+
#elif defined __clang__
// Clang C++ emulates GCC, so it has to appear early.
# define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp"
// Digital Mars C++
# define BOOST_COMPILER_CONFIG "boost/config/compiler/digitalmars.hpp"
-#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
-// Intel
-# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
-
# elif defined __GNUC__
// GNU C++:
# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp"
// <header_name> in order to prevent macro expansion within the header
// name (for example "linux" is a macro on linux systems).
-#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)
+#if (defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)) && !defined(_CRAYC)
// linux, also other platforms (Hurd etc) that use GLIBC, should these really have their own config headers though?
# define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp"
// Symbian:
# define BOOST_PLATFORM_CONFIG "boost/config/platform/symbian.hpp"
+#elif defined(_CRAYC)
+// Cray:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/cray.hpp"
+
+#elif defined(__VMS)
+// VMS:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/vms.hpp"
#else
# if defined(unix) \
// First include <cstddef> to determine if some version of STLport is in use as the std lib
// (do not rely on this header being included since users can short-circuit this header
// if they know whose std lib they are using.)
-#include <cstddef>
+#ifdef __cplusplus
+# include <cstddef>
+#else
+# include <stddef.h>
+#endif
#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
// STLPort library; this _must_ come first, otherwise since
// Rogue Wave library:
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp"
+#elif defined(_LIBCPP_VERSION)
+// libc++
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcpp.hpp"
+
#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
// GNU libstdc++ 3
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp"
#endif
#include <typeinfo>
-#if !_HAS_EXCEPTIONS
+#if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__)
# define BOOST_NO_STD_TYPEINFO
#endif
// C++0x headers implemented in 520 (as shipped by Microsoft)
//
#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520
-# define BOOST_NO_0X_HDR_ARRAY
-# define BOOST_NO_0X_HDR_CODECVT
-# define BOOST_NO_0X_HDR_FORWARD_LIST
-# define BOOST_NO_0X_HDR_INITIALIZER_LIST
-# define BOOST_NO_0X_HDR_RANDOM
-# define BOOST_NO_0X_HDR_REGEX
-# define BOOST_NO_0X_HDR_SYSTEM_ERROR
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
-# define BOOST_NO_STD_UNORDERED // deprecated; see following
-# define BOOST_NO_0X_HDR_UNORDERED_MAP
-# define BOOST_NO_0X_HDR_UNORDERED_SET
-# define BOOST_NO_0X_HDR_TUPLE
-# define BOOST_NO_0X_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_SMART_PTR
#endif
-#if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE)
-# define BOOST_NO_0X_HDR_TUPLE
+#if ((!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE)) \
+ && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 610)
+# define BOOST_NO_CXX11_HDR_TUPLE
#endif
-// C++0x headers not yet implemented
+// C++0x headers implemented in 540 (as shipped by Microsoft)
//
-# define BOOST_NO_0X_HDR_CHRONO
-# define BOOST_NO_0X_HDR_CONCEPTS
-# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-# define BOOST_NO_0X_HDR_FUTURE
-# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-# define BOOST_NO_0X_HDR_MUTEX
-# define BOOST_NO_0X_HDR_RATIO
-# define BOOST_NO_0X_HDR_THREAD
+#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 540
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+#endif
+
+// C++0x headers implemented in 610 (as shipped by Microsoft)
+//
+#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 610
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#endif
#ifdef _CPPLIB_VER
# define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER
// C++0x headers not yet implemented
//
-# define BOOST_NO_0X_HDR_ARRAY
-# define BOOST_NO_0X_HDR_CHRONO
-# define BOOST_NO_0X_HDR_CODECVT
-# define BOOST_NO_0X_HDR_CONCEPTS
-# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-# define BOOST_NO_0X_HDR_FORWARD_LIST
-# define BOOST_NO_0X_HDR_FUTURE
-# define BOOST_NO_0X_HDR_INITIALIZER_LIST
-# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-# define BOOST_NO_0X_HDR_MUTEX
-# define BOOST_NO_0X_HDR_RANDOM
-# define BOOST_NO_0X_HDR_RATIO
-# define BOOST_NO_0X_HDR_REGEX
-# define BOOST_NO_0X_HDR_SYSTEM_ERROR
-# define BOOST_NO_0X_HDR_THREAD
-# define BOOST_NO_0X_HDR_TUPLE
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
-# define BOOST_NO_0X_HDR_TYPEINDEX
-# define BOOST_NO_STD_UNORDERED // deprecated; see following
-# define BOOST_NO_0X_HDR_UNORDERED_MAP
-# define BOOST_NO_0X_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
//
// Intrinsic type_traits support.
--- /dev/null
+// (C) Copyright Christopher Jefferson 2011.
+// Use, modification and distribution are subject to 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)
+
+// See http://www.boost.org for most recent version.
+
+// config for libc++
+// Might need more in here later.
+
+#if !defined(_LIBCPP_VERSION)
+# include <ciso646>
+# if !defined(_LIBCPP_VERSION)
+# error "This is not libc++!"
+# endif
+#endif
+
+#define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
+
+#define BOOST_HAS_THREADS
+
+#ifdef _LIBCPP_HAS_NO_VARIADICS
+# define BOOST_NO_CXX11_HDR_TUPLE
+#endif
+
+//
+// These appear to be unusable/incomplete so far:
+//
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+
+// libc++ uses a non-standard messages_base
+#define BOOST_NO_STD_MESSAGES
+
+// --- end ---
// config for libstdc++ v3
// not much to go in here:
+#define BOOST_GNU_STDLIB 1
+
#ifdef __GLIBCXX__
#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)
#else
#ifdef __GLIBCXX__ // gcc 3.4 and greater:
# if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
- || defined(_GLIBCXX__PTHREADS)
+ || defined(_GLIBCXX__PTHREADS) \
+ || defined(_GLIBCXX_HAS_GTHREADS) \
+ || defined(_WIN32) \
+ || defined(_AIX)
//
// If the std lib has thread support turned on, then turn it on in Boost
// as well. We do this because some gcc-3.4 std lib headers define _REENTANT
# define BOOST_HAS_THREADS
#endif
-
#if !defined(_GLIBCPP_USE_LONG_LONG) \
&& !defined(_GLIBCXX_USE_LONG_LONG)\
&& defined(BOOST_HAS_LONG_LONG)
# undef BOOST_HAS_LONG_LONG
#endif
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
# define BOOST_HAS_SLIST
// C++0x headers in GCC 4.3.0 and later
//
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_0X_HDR_ARRAY
-# define BOOST_NO_0X_HDR_RANDOM
-# define BOOST_NO_0X_HDR_REGEX
-# define BOOST_NO_0X_HDR_TUPLE
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
-# define BOOST_NO_STD_UNORDERED // deprecated; see following
-# define BOOST_NO_0X_HDR_UNORDERED_MAP
-# define BOOST_NO_0X_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
#endif
// C++0x headers in GCC 4.4.0 and later
//
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_NO_0X_HDR_CHRONO
-# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-# define BOOST_NO_0X_HDR_FORWARD_LIST
-# define BOOST_NO_0X_HDR_INITIALIZER_LIST
-# define BOOST_NO_0X_HDR_MUTEX
-# define BOOST_NO_0X_HDR_RATIO
-# define BOOST_NO_0X_HDR_SYSTEM_ERROR
-# define BOOST_NO_0X_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_SMART_PTR
+#else
+# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
+# define BOOST_HAS_TR1_COMPLEX_OVERLOADS
+#endif
+
+#if (!defined(_GLIBCXX_HAS_GTHREADS) || !defined(_GLIBCXX_USE_C99_STDINT_TR1)) && (!defined(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE) || !defined(BOOST_NO_CXX11_HDR_MUTEX))
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_MUTEX
#endif
-// C++0x headers not yet implemented
+// C++0x features in GCC 4.5.0 and later
+//
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_RANDOM
+#endif
+
+// C++0x features in GCC 4.6.0 and later
+//
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+#endif
+
+// C++0x features in GCC 4.7.0 and later
+//
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+// Note that although <chrono> existed prior to 4.7, "stead_clock" is spelled "monotonic_clock"
+// so 4.7.0 is the first truely conforming one.
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_ALLOCATOR
+#endif
+// C++0x headers not yet (fully!) implemented
//
-# define BOOST_NO_0X_HDR_CODECVT
-# define BOOST_NO_0X_HDR_CONCEPTS
-# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-# define BOOST_NO_0X_HDR_FUTURE
-# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-# define BOOST_NO_0X_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
// --- end ---
// C++0x headers not yet implemented
//
-# define BOOST_NO_0X_HDR_ARRAY
-# define BOOST_NO_0X_HDR_CHRONO
-# define BOOST_NO_0X_HDR_CODECVT
-# define BOOST_NO_0X_HDR_CONCEPTS
-# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-# define BOOST_NO_0X_HDR_FORWARD_LIST
-# define BOOST_NO_0X_HDR_FUTURE
-# define BOOST_NO_0X_HDR_INITIALIZER_LIST
-# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-# define BOOST_NO_0X_HDR_MUTEX
-# define BOOST_NO_0X_HDR_RANDOM
-# define BOOST_NO_0X_HDR_RATIO
-# define BOOST_NO_0X_HDR_REGEX
-# define BOOST_NO_0X_HDR_SYSTEM_ERROR
-# define BOOST_NO_0X_HDR_THREAD
-# define BOOST_NO_0X_HDR_TUPLE
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
-# define BOOST_NO_0X_HDR_TYPEINDEX
-# define BOOST_NO_STD_UNORDERED // deprecated; see following
-# define BOOST_NO_0X_HDR_UNORDERED_MAP
-# define BOOST_NO_0X_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
#define BOOST_STDLIB "Modena C++ standard library"
// C++0x headers not yet implemented
//
-# define BOOST_NO_0X_HDR_ARRAY
-# define BOOST_NO_0X_HDR_CHRONO
-# define BOOST_NO_0X_HDR_CODECVT
-# define BOOST_NO_0X_HDR_CONCEPTS
-# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-# define BOOST_NO_0X_HDR_FORWARD_LIST
-# define BOOST_NO_0X_HDR_FUTURE
-# define BOOST_NO_0X_HDR_INITIALIZER_LIST
-# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-# define BOOST_NO_0X_HDR_MUTEX
-# define BOOST_NO_0X_HDR_RANDOM
-# define BOOST_NO_0X_HDR_RATIO
-# define BOOST_NO_0X_HDR_REGEX
-# define BOOST_NO_0X_HDR_SYSTEM_ERROR
-# define BOOST_NO_0X_HDR_THREAD
-# define BOOST_NO_0X_HDR_TUPLE
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
-# define BOOST_NO_0X_HDR_TYPEINDEX
-# define BOOST_NO_STD_UNORDERED // deprecated; see following
-# define BOOST_NO_0X_HDR_UNORDERED_MAP
-# define BOOST_NO_0X_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)
// Rogue Wave std lib:
+#define BOOST_RW_STDLIB 1
+
#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
# include <boost/config/no_tr1/utility.hpp>
# if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
# endif
#endif
+#if _RWSTD_VER < 0x05000000
+# define BOOST_NO_CXX11_HDR_ARRAY
+#endif
+// type_traits header is incomplete:
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+//
// C++0x headers not yet implemented
//
-# define BOOST_NO_0X_HDR_ARRAY
-# define BOOST_NO_0X_HDR_CHRONO
-# define BOOST_NO_0X_HDR_CODECVT
-# define BOOST_NO_0X_HDR_CONCEPTS
-# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-# define BOOST_NO_0X_HDR_FORWARD_LIST
-# define BOOST_NO_0X_HDR_FUTURE
-# define BOOST_NO_0X_HDR_INITIALIZER_LIST
-# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-# define BOOST_NO_0X_HDR_MUTEX
-# define BOOST_NO_0X_HDR_RANDOM
-# define BOOST_NO_0X_HDR_RATIO
-# define BOOST_NO_0X_HDR_REGEX
-# define BOOST_NO_0X_HDR_SYSTEM_ERROR
-# define BOOST_NO_0X_HDR_THREAD
-# define BOOST_NO_0X_HDR_TUPLE
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
-# define BOOST_NO_0X_HDR_TYPEINDEX
-# define BOOST_NO_STD_UNORDERED // deprecated; see following
-# define BOOST_NO_0X_HDR_UNORDERED_MAP
-# define BOOST_NO_0X_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
# define BOOST_NO_STRINGSTREAM
#endif
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
+
//
// Assume no std::locale without own iostreams (this may be an
// incorrect assumption in some cases):
// C++0x headers not yet implemented
//
-# define BOOST_NO_0X_HDR_ARRAY
-# define BOOST_NO_0X_HDR_CHRONO
-# define BOOST_NO_0X_HDR_CODECVT
-# define BOOST_NO_0X_HDR_CONCEPTS
-# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-# define BOOST_NO_0X_HDR_FORWARD_LIST
-# define BOOST_NO_0X_HDR_FUTURE
-# define BOOST_NO_0X_HDR_INITIALIZER_LIST
-# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-# define BOOST_NO_0X_HDR_MUTEX
-# define BOOST_NO_0X_HDR_RANDOM
-# define BOOST_NO_0X_HDR_RATIO
-# define BOOST_NO_0X_HDR_REGEX
-# define BOOST_NO_0X_HDR_SYSTEM_ERROR
-# define BOOST_NO_0X_HDR_THREAD
-# define BOOST_NO_0X_HDR_TUPLE
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
-# define BOOST_NO_0X_HDR_TYPEINDEX
-# define BOOST_NO_STD_UNORDERED // deprecated; see following
-# define BOOST_NO_0X_HDR_UNORDERED_MAP
-# define BOOST_NO_0X_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
#define BOOST_STDLIB "SGI standard library"
# endif
#endif
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
//
// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
// for versions prior to 4.1(beta)
# endif
#endif
-#if defined(_STLPORT_VERSION) && ((_STLPORT_VERSION < 0x500) || (_STLPORT_VERSION >= 0x520))
-# define BOOST_NO_STD_UNORDERED
-#endif
-
#if defined(_STLPORT_VERSION) && (_STLPORT_VERSION >= 0x520)
# define BOOST_HAS_TR1_UNORDERED_SET
# define BOOST_HAS_TR1_UNORDERED_MAP
// C++0x headers not yet implemented
//
-# define BOOST_NO_0X_HDR_ARRAY
-# define BOOST_NO_0X_HDR_CHRONO
-# define BOOST_NO_0X_HDR_CODECVT
-# define BOOST_NO_0X_HDR_CONCEPTS
-# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-# define BOOST_NO_0X_HDR_FORWARD_LIST
-# define BOOST_NO_0X_HDR_FUTURE
-# define BOOST_NO_0X_HDR_INITIALIZER_LIST
-# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-# define BOOST_NO_0X_HDR_MUTEX
-# define BOOST_NO_0X_HDR_RANDOM
-# define BOOST_NO_0X_HDR_RATIO
-# define BOOST_NO_0X_HDR_REGEX
-# define BOOST_NO_0X_HDR_SYSTEM_ERROR
-# define BOOST_NO_0X_HDR_THREAD
-# define BOOST_NO_0X_HDR_TUPLE
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
-# define BOOST_NO_0X_HDR_TYPEINDEX
-# define BOOST_NO_STD_UNORDERED // deprecated; see following
-# define BOOST_NO_0X_HDR_UNORDERED_MAP
-# define BOOST_NO_0X_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)
#define BOOST_HAS_MACRO_USE_FACET
#define BOOST_NO_STD_MESSAGES
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
// C++0x headers not yet implemented
//
-# define BOOST_NO_0X_HDR_ARRAY
-# define BOOST_NO_0X_HDR_CHRONO
-# define BOOST_NO_0X_HDR_CODECVT
-# define BOOST_NO_0X_HDR_CONCEPTS
-# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-# define BOOST_NO_0X_HDR_FORWARD_LIST
-# define BOOST_NO_0X_HDR_FUTURE
-# define BOOST_NO_0X_HDR_INITIALIZER_LIST
-# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-# define BOOST_NO_0X_HDR_MUTEX
-# define BOOST_NO_0X_HDR_RANDOM
-# define BOOST_NO_0X_HDR_RATIO
-# define BOOST_NO_0X_HDR_REGEX
-# define BOOST_NO_0X_HDR_SYSTEM_ERROR
-# define BOOST_NO_0X_HDR_THREAD
-# define BOOST_NO_0X_HDR_TUPLE
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
-# define BOOST_NO_0X_HDR_TYPEINDEX
-# define BOOST_NO_STD_UNORDERED // deprecated; see following
-# define BOOST_NO_0X_HDR_UNORDERED_MAP
-# define BOOST_NO_0X_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
#define BOOST_STDLIB "Visual Age default standard library"
// Boost config.hpp configuration header file ------------------------------//
+// boostinspect:ndprecated_macros -- tell the inspect tool to ignore this file
// Copyright (c) 2001-2003 John Maddock
// Copyright (c) 2001 Darin Adler
// Copyright (c) 2001 Peter Dimov
-// Copyright (c) 2002 Bill Kempf
+// Copyright (c) 2002 Bill Kempf
// Copyright (c) 2002 Jens Maurer
// Copyright (c) 2002-2003 David Abrahams
// Copyright (c) 2003 Gennaro Prota
#ifndef BOOST_CONFIG_SUFFIX_HPP
#define BOOST_CONFIG_SUFFIX_HPP
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+//
+// Some GCC-4.x versions issue warnings even when __extension__ is used,
+// so use this as a workaround:
+//
+#pragma GCC system_header
+#endif
+
//
// ensure that visibility macros are always defined, thus symplifying use
//
# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
#endif
-//
-// Normalize BOOST_NO_STATIC_ASSERT and (depricated) BOOST_HAS_STATIC_ASSERT:
-//
-#if !defined(BOOST_NO_STATIC_ASSERT) && !defined(BOOST_HAS_STATIC_ASSERT)
-# define BOOST_HAS_STATIC_ASSERT
-#endif
-
//
// if there is no __int64 then there is no specialisation
// for numeric_limits<__int64> either:
# endif
//
-// Without partial specialization, partial
+// Without partial specialization, partial
// specialization with default args won't work either:
//
# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
# define BOOST_HASH_MAP_HEADER <hash_map>
#endif
-//
-// Set BOOST_NO_INITIALIZER_LISTS if there is no library support.
-//
-
-#if defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) && !defined(BOOST_NO_INITIALIZER_LISTS)
-# define BOOST_NO_INITIALIZER_LISTS
-#endif
-
-//
-// Set BOOST_HAS_RVALUE_REFS when BOOST_NO_RVALUE_REFERENCES is not defined
-//
-#if !defined(BOOST_NO_RVALUE_REFERENCES) && !defined(BOOST_HAS_RVALUE_REFS)
-#define BOOST_HAS_RVALUE_REFS
-#endif
-
// BOOST_HAS_ABI_HEADERS
// This macro gets set if we have headers that fix the ABI,
// and prevent ODR violations when linking to external libraries:
// works as expected with standard conforming compilers. The resulting
// double inclusion of <cstddef> is harmless.
-# ifdef BOOST_NO_STDC_NAMESPACE
+# if defined(BOOST_NO_STDC_NAMESPACE) && defined(__cplusplus)
# include <cstddef>
namespace std { using ::ptrdiff_t; using ::size_t; }
# endif
// BOOST_NO_STD_MIN_MAX workaround -----------------------------------------//
-# ifdef BOOST_NO_STD_MIN_MAX
+# if defined(BOOST_NO_STD_MIN_MAX) && defined(__cplusplus)
namespace std {
template <class _Tp>
// but it's use may generate either warnings (with -ansi), or errors
// (with -pedantic -ansi) unless it's use is prefixed by __extension__
//
-#if defined(BOOST_HAS_LONG_LONG)
+#if defined(BOOST_HAS_LONG_LONG) && defined(__cplusplus)
namespace boost{
# ifdef __GNUC__
__extension__ typedef long long long_long_type;
# endif
}
#endif
+// same again for __int128:
+#if defined(BOOST_HAS_INT128) && defined(__cplusplus)
+namespace boost{
+# ifdef __GNUC__
+ __extension__ typedef __int128 int128_type;
+ __extension__ typedef unsigned __int128 uint128_type;
+# else
+ typedef __int128 int128_type;
+ typedef unsigned __int128 uint128_type;
+# endif
+}
+#endif
// BOOST_[APPEND_]EXPLICIT_TEMPLATE_[NON_]TYPE macros --------------------------//
-//
-// Some compilers have problems with function templates whose template
-// parameters don't appear in the function parameter list (basically
-// they just link one instantiation of the template in the final
-// executable). These macros provide a uniform way to cope with the
-// problem with no effects on the calling syntax.
-
-// Example:
-//
-// #include <iostream>
-// #include <ostream>
-// #include <typeinfo>
-//
-// template <int n>
-// void f() { std::cout << n << ' '; }
-//
-// template <typename T>
-// void g() { std::cout << typeid(T).name() << ' '; }
-//
-// int main() {
-// f<1>();
-// f<2>();
-//
-// g<int>();
-// g<double>();
-// }
-//
-// With VC++ 6.0 the output is:
-//
-// 2 2 double double
-//
-// To fix it, write
-//
-// template <int n>
-// void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... }
-//
-// template <typename T>
-// void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... }
-//
-
-
-#if defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-# include "boost/type.hpp"
-# include "boost/non_type.hpp"
-
-# define BOOST_EXPLICIT_TEMPLATE_TYPE(t) boost::type<t>* = 0
-# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) boost::type<t>*
-# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) boost::non_type<t, v>* = 0
-# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) boost::non_type<t, v>*
-
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) \
- , BOOST_EXPLICIT_TEMPLATE_TYPE(t)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) \
- , BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) \
- , BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
-# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) \
- , BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
-
-#else
-
-// no workaround needed: expand to nothing
+// These macros are obsolete. Port away and remove.
# define BOOST_EXPLICIT_TEMPLATE_TYPE(t)
# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
-
-#endif // defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-
// When BOOST_NO_STD_TYPEINFO is defined, we can just import
// the global definition into std namespace:
-#ifdef BOOST_NO_STD_TYPEINFO
+#if defined(BOOST_NO_STD_TYPEINFO) && defined(__cplusplus)
#include <typeinfo>
-namespace std{ using ::typeinfo; }
+namespace std{ using ::type_info; }
#endif
// ---------------------------------------------------------------------------//
// Set some default values GPU support
//
# ifndef BOOST_GPU_ENABLED
-# define BOOST_GPU_ENABLED
+# define BOOST_GPU_ENABLED
# endif
+
+// BOOST_FORCEINLINE ---------------------------------------------//
+// Macro to use in place of 'inline' to force a function to be inline
+#if !defined(BOOST_FORCEINLINE)
+# if defined(_MSC_VER)
+# define BOOST_FORCEINLINE __forceinline
+# elif defined(__GNUC__) && __GNUC__ > 3
+ // Clang also defines __GNUC__ (as 4)
+# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__))
+# else
+# define BOOST_FORCEINLINE inline
+# endif
+#endif
+
+// BOOST_NOINLINE ---------------------------------------------//
+// Macro to use in place of 'inline' to prevent a function to be inlined
+#if !defined(BOOST_NOINLINE)
+# if defined(_MSC_VER)
+# define BOOST_NOINLINE __declspec(noinline)
+# elif defined(__GNUC__) && __GNUC__ > 3
+ // Clang also defines __GNUC__ (as 4)
+# define BOOST_NOINLINE __attribute__ ((__noinline__))
+# else
+# define BOOST_NOINLINE
+# endif
+#endif
+
+// Branch prediction hints
+// These macros are intended to wrap conditional expressions that yield true or false
+//
+// if (BOOST_LIKELY(var == 10))
+// {
+// // the most probable code here
+// }
+//
+#if !defined(BOOST_LIKELY)
+# define BOOST_LIKELY(x) x
+#endif
+#if !defined(BOOST_UNLIKELY)
+# define BOOST_UNLIKELY(x) x
+#endif
+
+// Type and data alignment specification
+//
+#if !defined(BOOST_NO_CXX11_ALIGNAS)
+# define BOOST_ALIGNMENT(x) alignas(x)
+#elif defined(_MSC_VER)
+# define BOOST_ALIGNMENT(x) __declspec(align(x))
+#elif defined(__GNUC__)
+# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x)))
+#else
+# define BOOST_NO_ALIGNMENT
+# define BOOST_ALIGNMENT(x)
+#endif
+
+// Defaulted and deleted function declaration helpers
+// These macros are intended to be inside a class definition.
+// BOOST_DEFAULTED_FUNCTION accepts the function declaration and its
+// body, which will be used if the compiler doesn't support defaulted functions.
+// BOOST_DELETED_FUNCTION only accepts the function declaration. It
+// will expand to a private function declaration, if the compiler doesn't support
+// deleted functions. Because of this it is recommended to use BOOST_DELETED_FUNCTION
+// in the end of the class definition.
+//
+// class my_class
+// {
+// public:
+// // Default-constructible
+// BOOST_DEFAULTED_FUNCTION(my_class(), {})
+// // Copying prohibited
+// BOOST_DELETED_FUNCTION(my_class(my_class const&))
+// BOOST_DELETED_FUNCTION(my_class& operator= (my_class const&))
+// };
+//
+#if !(defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS))
+# define BOOST_DEFAULTED_FUNCTION(fun, body) fun = default;
+#else
+# define BOOST_DEFAULTED_FUNCTION(fun, body) fun body
+#endif
+
+#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
+# define BOOST_DELETED_FUNCTION(fun) fun = delete;
+#else
+# define BOOST_DELETED_FUNCTION(fun) private: fun;
+#endif
+
+//
+// Set BOOST_NO_DECLTYPE_N3276 when BOOST_NO_DECLTYPE is defined
+//
+#if defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_DECLTYPE_N3276)
+#define BOOST_NO_CXX11_DECLTYPE_N3276 BOOST_NO_CXX11_DECLTYPE
#endif
+// -------------------- Deprecated macros for 1.50 ---------------------------
+// These will go away in a future release
+
+// Use BOOST_NO_CXX11_HDR_UNORDERED_SET or BOOST_NO_CXX11_HDR_UNORDERED_MAP
+// instead of BOOST_NO_STD_UNORDERED
+#if defined(BOOST_NO_CXX11_HDR_UNORDERED_MAP) || defined (BOOST_NO_CXX11_HDR_UNORDERED_SET)
+# ifndef BOOST_NO_CXX11_STD_UNORDERED
+# define BOOST_NO_CXX11_STD_UNORDERED
+# endif
+#endif
+
+// Use BOOST_NO_CXX11_HDR_INITIALIZER_LIST instead of BOOST_NO_INITIALIZER_LISTS
+#if defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) && !defined(BOOST_NO_INITIALIZER_LISTS)
+# define BOOST_NO_INITIALIZER_LISTS
+#endif
+
+// Use BOOST_NO_CXX11_HDR_ARRAY instead of BOOST_NO_0X_HDR_ARRAY
+#if defined(BOOST_NO_CXX11_HDR_ARRAY) && !defined(BOOST_NO_0X_HDR_ARRAY)
+# define BOOST_NO_0X_HDR_ARRAY
+#endif
+// Use BOOST_NO_CXX11_HDR_CHRONO instead of BOOST_NO_0X_HDR_CHRONO
+#if defined(BOOST_NO_CXX11_HDR_CHRONO) && !defined(BOOST_NO_0X_HDR_CHRONO)
+# define BOOST_NO_0X_HDR_CHRONO
+#endif
+// Use BOOST_NO_CXX11_HDR_CODECVT instead of BOOST_NO_0X_HDR_CODECVT
+#if defined(BOOST_NO_CXX11_HDR_CODECVT) && !defined(BOOST_NO_0X_HDR_CODECVT)
+# define BOOST_NO_0X_HDR_CODECVT
+#endif
+// Use BOOST_NO_CXX11_HDR_CONDITION_VARIABLE instead of BOOST_NO_0X_HDR_CONDITION_VARIABLE
+#if defined(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE) && !defined(BOOST_NO_0X_HDR_CONDITION_VARIABLE)
+# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
+#endif
+// Use BOOST_NO_CXX11_HDR_FORWARD_LIST instead of BOOST_NO_0X_HDR_FORWARD_LIST
+#if defined(BOOST_NO_CXX11_HDR_FORWARD_LIST) && !defined(BOOST_NO_0X_HDR_FORWARD_LIST)
+# define BOOST_NO_0X_HDR_FORWARD_LIST
+#endif
+// Use BOOST_NO_CXX11_HDR_FUTURE instead of BOOST_NO_0X_HDR_FUTURE
+#if defined(BOOST_NO_CXX11_HDR_FUTURE) && !defined(BOOST_NO_0X_HDR_FUTURE)
+# define BOOST_NO_0X_HDR_FUTURE
+#endif
+
+// Use BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+// instead of BOOST_NO_0X_HDR_INITIALIZER_LIST or BOOST_NO_INITIALIZER_LISTS
+#ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# ifndef BOOST_NO_0X_HDR_INITIALIZER_LIST
+# define BOOST_NO_0X_HDR_INITIALIZER_LIST
+# endif
+# ifndef BOOST_NO_INITIALIZER_LISTS
+# define BOOST_NO_INITIALIZER_LISTS
+# endif
+#endif
+
+// Use BOOST_NO_CXX11_HDR_MUTEX instead of BOOST_NO_0X_HDR_MUTEX
+#if defined(BOOST_NO_CXX11_HDR_MUTEX) && !defined(BOOST_NO_0X_HDR_MUTEX)
+# define BOOST_NO_0X_HDR_MUTEX
+#endif
+// Use BOOST_NO_CXX11_HDR_RANDOM instead of BOOST_NO_0X_HDR_RANDOM
+#if defined(BOOST_NO_CXX11_HDR_RANDOM) && !defined(BOOST_NO_0X_HDR_RANDOM)
+# define BOOST_NO_0X_HDR_RANDOM
+#endif
+// Use BOOST_NO_CXX11_HDR_RATIO instead of BOOST_NO_0X_HDR_RATIO
+#if defined(BOOST_NO_CXX11_HDR_RATIO) && !defined(BOOST_NO_0X_HDR_RATIO)
+# define BOOST_NO_0X_HDR_RATIO
+#endif
+// Use BOOST_NO_CXX11_HDR_REGEX instead of BOOST_NO_0X_HDR_REGEX
+#if defined(BOOST_NO_CXX11_HDR_REGEX) && !defined(BOOST_NO_0X_HDR_REGEX)
+# define BOOST_NO_0X_HDR_REGEX
+#endif
+// Use BOOST_NO_CXX11_HDR_SYSTEM_ERROR instead of BOOST_NO_0X_HDR_SYSTEM_ERROR
+#if defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) && !defined(BOOST_NO_0X_HDR_SYSTEM_ERROR)
+# define BOOST_NO_0X_HDR_SYSTEM_ERROR
+#endif
+// Use BOOST_NO_CXX11_HDR_THREAD instead of BOOST_NO_0X_HDR_THREAD
+#if defined(BOOST_NO_CXX11_HDR_THREAD) && !defined(BOOST_NO_0X_HDR_THREAD)
+# define BOOST_NO_0X_HDR_THREAD
+#endif
+// Use BOOST_NO_CXX11_HDR_TUPLE instead of BOOST_NO_0X_HDR_TUPLE
+#if defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_0X_HDR_TUPLE)
+# define BOOST_NO_0X_HDR_TUPLE
+#endif
+// Use BOOST_NO_CXX11_HDR_TYPE_TRAITS instead of BOOST_NO_0X_HDR_TYPE_TRAITS
+#if defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) && !defined(BOOST_NO_0X_HDR_TYPE_TRAITS)
+# define BOOST_NO_0X_HDR_TYPE_TRAITS
+#endif
+// Use BOOST_NO_CXX11_HDR_TYPEINDEX instead of BOOST_NO_0X_HDR_TYPEINDEX
+#if defined(BOOST_NO_CXX11_HDR_TYPEINDEX) && !defined(BOOST_NO_0X_HDR_TYPEINDEX)
+# define BOOST_NO_0X_HDR_TYPEINDEX
+#endif
+// Use BOOST_NO_CXX11_HDR_UNORDERED_MAP instead of BOOST_NO_0X_HDR_UNORDERED_MAP
+#if defined(BOOST_NO_CXX11_HDR_UNORDERED_MAP) && !defined(BOOST_NO_0X_HDR_UNORDERED_MAP)
+# define BOOST_NO_0X_HDR_UNORDERED_MAP
+#endif
+// Use BOOST_NO_CXX11_HDR_UNORDERED_SET instead of BOOST_NO_0X_HDR_UNORDERED_SET
+#if defined(BOOST_NO_CXX11_HDR_UNORDERED_SET) && !defined(BOOST_NO_0X_HDR_UNORDERED_SET)
+# define BOOST_NO_0X_HDR_UNORDERED_SET
+#endif
+
+// ------------------ End of deprecated macros for 1.50 ---------------------------
+
+// -------------------- Deprecated macros for 1.51 ---------------------------
+// These will go away in a future release
+
+// Use BOOST_NO_CXX11_AUTO_DECLARATIONS instead of BOOST_NO_AUTO_DECLARATIONS
+#if defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) && !defined(BOOST_NO_AUTO_DECLARATIONS)
+# define BOOST_NO_AUTO_DECLARATIONS
+#endif
+// Use BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS instead of BOOST_NO_AUTO_MULTIDECLARATIONS
+#if defined(BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS) && !defined(BOOST_NO_AUTO_MULTIDECLARATIONS)
+# define BOOST_NO_AUTO_MULTIDECLARATIONS
+#endif
+// Use BOOST_NO_CXX11_CHAR16_T instead of BOOST_NO_CHAR16_T
+#if defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CHAR16_T)
+# define BOOST_NO_CHAR16_T
+#endif
+// Use BOOST_NO_CXX11_CHAR32_T instead of BOOST_NO_CHAR32_T
+#if defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CHAR32_T)
+# define BOOST_NO_CHAR32_T
+#endif
+// Use BOOST_NO_CXX11_TEMPLATE_ALIASES instead of BOOST_NO_TEMPLATE_ALIASES
+#if defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) && !defined(BOOST_NO_TEMPLATE_ALIASES)
+# define BOOST_NO_TEMPLATE_ALIASES
+#endif
+// Use BOOST_NO_CXX11_CONSTEXPR instead of BOOST_NO_CONSTEXPR
+#if defined(BOOST_NO_CXX11_CONSTEXPR) && !defined(BOOST_NO_CONSTEXPR)
+# define BOOST_NO_CONSTEXPR
+#endif
+// Use BOOST_NO_CXX11_DECLTYPE_N3276 instead of BOOST_NO_DECLTYPE_N3276
+#if defined(BOOST_NO_CXX11_DECLTYPE_N3276) && !defined(BOOST_NO_DECLTYPE_N3276)
+# define BOOST_NO_DECLTYPE_N3276
+#endif
+// Use BOOST_NO_CXX11_DECLTYPE instead of BOOST_NO_DECLTYPE
+#if defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_DECLTYPE)
+# define BOOST_NO_DECLTYPE
+#endif
+// Use BOOST_NO_CXX11_DEFAULTED_FUNCTIONS instead of BOOST_NO_DEFAULTED_FUNCTIONS
+#if defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_DEFAULTED_FUNCTIONS)
+# define BOOST_NO_DEFAULTED_FUNCTIONS
+#endif
+// Use BOOST_NO_CXX11_DELETED_FUNCTIONS instead of BOOST_NO_DELETED_FUNCTIONS
+#if defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) && !defined(BOOST_NO_DELETED_FUNCTIONS)
+# define BOOST_NO_DELETED_FUNCTIONS
+#endif
+// Use BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS instead of BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#if defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) && !defined(BOOST_NO_EXPLICIT_CONVERSION_OPERATORS)
+# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#endif
+// Use BOOST_NO_CXX11_EXTERN_TEMPLATE instead of BOOST_NO_EXTERN_TEMPLATE
+#if defined(BOOST_NO_CXX11_EXTERN_TEMPLATE) && !defined(BOOST_NO_EXTERN_TEMPLATE)
+# define BOOST_NO_EXTERN_TEMPLATE
+#endif
+// Use BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS instead of BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#if defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && !defined(BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS)
+# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#endif
+// Use BOOST_NO_CXX11_LAMBDAS instead of BOOST_NO_LAMBDAS
+#if defined(BOOST_NO_CXX11_LAMBDAS) && !defined(BOOST_NO_LAMBDAS)
+# define BOOST_NO_LAMBDAS
+#endif
+// Use BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS instead of BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#if defined(BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS) && !defined(BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS)
+# define BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#endif
+// Use BOOST_NO_CXX11_NOEXCEPT instead of BOOST_NO_NOEXCEPT
+#if defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_NOEXCEPT)
+# define BOOST_NO_NOEXCEPT
+#endif
+// Use BOOST_NO_CXX11_NULLPTR instead of BOOST_NO_NULLPTR
+#if defined(BOOST_NO_CXX11_NULLPTR) && !defined(BOOST_NO_NULLPTR)
+# define BOOST_NO_NULLPTR
+#endif
+// Use BOOST_NO_CXX11_RAW_LITERALS instead of BOOST_NO_RAW_LITERALS
+#if defined(BOOST_NO_CXX11_RAW_LITERALS) && !defined(BOOST_NO_RAW_LITERALS)
+# define BOOST_NO_RAW_LITERALS
+#endif
+// Use BOOST_NO_CXX11_RVALUE_REFERENCES instead of BOOST_NO_RVALUE_REFERENCES
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_RVALUE_REFERENCES)
+# define BOOST_NO_RVALUE_REFERENCES
+#endif
+// Use BOOST_NO_CXX11_SCOPED_ENUMS instead of BOOST_NO_SCOPED_ENUMS
+#if defined(BOOST_NO_CXX11_SCOPED_ENUMS) && !defined(BOOST_NO_SCOPED_ENUMS)
+# define BOOST_NO_SCOPED_ENUMS
+#endif
+// Use BOOST_NO_CXX11_STATIC_ASSERT instead of BOOST_NO_STATIC_ASSERT
+#if defined(BOOST_NO_CXX11_STATIC_ASSERT) && !defined(BOOST_NO_STATIC_ASSERT)
+# define BOOST_NO_STATIC_ASSERT
+#endif
+// Use BOOST_NO_CXX11_STD_UNORDERED instead of BOOST_NO_STD_UNORDERED
+#if defined(BOOST_NO_CXX11_STD_UNORDERED) && !defined(BOOST_NO_STD_UNORDERED)
+# define BOOST_NO_STD_UNORDERED
+#endif
+// Use BOOST_NO_CXX11_UNICODE_LITERALS instead of BOOST_NO_UNICODE_LITERALS
+#if defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(BOOST_NO_UNICODE_LITERALS)
+# define BOOST_NO_UNICODE_LITERALS
+#endif
+// Use BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX instead of BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
+#if defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) && !defined(BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX)
+# define BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
+#endif
+// Use BOOST_NO_CXX11_VARIADIC_TEMPLATES instead of BOOST_NO_VARIADIC_TEMPLATES
+#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_VARIADIC_TEMPLATES)
+# define BOOST_NO_VARIADIC_TEMPLATES
+#endif
+// Use BOOST_NO_CXX11_VARIADIC_MACROS instead of BOOST_NO_VARIADIC_MACROS
+#if defined(BOOST_NO_CXX11_VARIADIC_MACROS) && !defined(BOOST_NO_VARIADIC_MACROS)
+# define BOOST_NO_VARIADIC_MACROS
+#endif
+// Use BOOST_NO_CXX11_NUMERIC_LIMITS instead of BOOST_NO_NUMERIC_LIMITS_LOWEST
+#if defined(BOOST_NO_CXX11_NUMERIC_LIMITS) && !defined(BOOST_NO_NUMERIC_LIMITS_LOWEST)
+# define BOOST_NO_NUMERIC_LIMITS_LOWEST
+#endif
+// ------------------ End of deprecated macros for 1.51 ---------------------------
+
+
+
+//
+// Helper macros BOOST_NOEXCEPT, BOOST_NOEXCEPT_IF, BOOST_NOEXCEPT_EXPR
+// These aid the transition to C++11 while still supporting C++03 compilers
+//
+#ifdef BOOST_NO_CXX11_NOEXCEPT
+# define BOOST_NOEXCEPT
+# define BOOST_NOEXCEPT_OR_NOTHROW throw()
+# define BOOST_NOEXCEPT_IF(Predicate)
+# define BOOST_NOEXCEPT_EXPR(Expression) false
+#else
+# define BOOST_NOEXCEPT noexcept
+# define BOOST_NOEXCEPT_OR_NOTHROW noexcept
+# define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate))
+# define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression))
+#endif
+//
+// Helper macro BOOST_FALLTHROUGH
+// Fallback definition of BOOST_FALLTHROUGH macro used to mark intended
+// fall-through between case labels in a switch statement. We use a definition
+// that requires a semicolon after it to avoid at least one type of misuse even
+// on unsupported compilers.
+//
+#ifndef BOOST_FALLTHROUGH
+# define BOOST_FALLTHROUGH ((void)0)
+#endif
+
+//
+// constexpr workarounds
+//
+#if defined(BOOST_NO_CXX11_CONSTEXPR)
+#define BOOST_CONSTEXPR
+#define BOOST_CONSTEXPR_OR_CONST const
+#else
+#define BOOST_CONSTEXPR constexpr
+#define BOOST_CONSTEXPR_OR_CONST constexpr
+#endif
+
+#define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST
+
+//
+// Set BOOST_HAS_STATIC_ASSERT when BOOST_NO_CXX11_STATIC_ASSERT is not defined
+//
+#if !defined(BOOST_NO_CXX11_STATIC_ASSERT) && !defined(BOOST_HAS_STATIC_ASSERT)
+# define BOOST_HAS_STATIC_ASSERT
+#endif
+
+//
+// Set BOOST_HAS_RVALUE_REFS when BOOST_NO_CXX11_RVALUE_REFERENCES is not defined
+//
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_HAS_RVALUE_REFS)
+#define BOOST_HAS_RVALUE_REFS
+#endif
+
+//
+// Set BOOST_HAS_VARIADIC_TMPL when BOOST_NO_CXX11_VARIADIC_TEMPLATES is not defined
+//
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_HAS_VARIADIC_TMPL)
+#define BOOST_HAS_VARIADIC_TMPL
+#endif
+
+
+#endif
// Note that THIS HEADER MUST NOT INCLUDE ANY OTHER HEADERS:
// not even std library ones! Doing so may turn the warning
// off too late to be of any use. For example the VC++ C4996
-// warning can be omitted from <iosfwd> if that header is included
+// warning can be emitted from <iosfwd> if that header is included
// before or by this one :-(
//
--- /dev/null
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2005-2012. 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)
+//
+// See http://www.boost.org/libs/container for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP
+#define BOOST_CONTAINER_CONTAINER_FWD_HPP
+
+#if defined(_MSC_VER)
+# pragma once
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// Standard predeclarations
+//////////////////////////////////////////////////////////////////////////////
+
+/// @cond
+
+namespace boost{
+namespace intrusive{
+ //Create namespace to avoid compilation errors
+}}
+
+namespace boost{ namespace container{ namespace container_detail{
+
+namespace bi = boost::intrusive;
+
+}}}
+
+#include <utility>
+#include <memory>
+#include <functional>
+#include <iosfwd>
+#include <string>
+
+/// @endcond
+
+//////////////////////////////////////////////////////////////////////////////
+// Containers
+//////////////////////////////////////////////////////////////////////////////
+
+namespace boost {
+namespace container {
+
+//vector class
+template <class T
+ ,class Allocator = std::allocator<T> >
+class vector;
+
+//vector class
+template <class T
+ ,class Allocator = std::allocator<T> >
+class stable_vector;
+
+//vector class
+template <class T
+ ,class Allocator = std::allocator<T> >
+class deque;
+
+//list class
+template <class T
+ ,class Allocator = std::allocator<T> >
+class list;
+
+//slist class
+template <class T
+ ,class Allocator = std::allocator<T> >
+class slist;
+
+//set class
+template <class Key
+ ,class Compare = std::less<Key>
+ ,class Allocator = std::allocator<Key> >
+class set;
+
+//multiset class
+template <class Key
+ ,class Compare = std::less<Key>
+ ,class Allocator = std::allocator<Key> >
+class multiset;
+
+//map class
+template <class Key
+ ,class T
+ ,class Compare = std::less<Key>
+ ,class Allocator = std::allocator<std::pair<const Key, T> > >
+class map;
+
+//multimap class
+template <class Key
+ ,class T
+ ,class Compare = std::less<Key>
+ ,class Allocator = std::allocator<std::pair<const Key, T> > >
+class multimap;
+
+//flat_set class
+template <class Key
+ ,class Compare = std::less<Key>
+ ,class Allocator = std::allocator<Key> >
+class flat_set;
+
+//flat_multiset class
+template <class Key
+ ,class Compare = std::less<Key>
+ ,class Allocator = std::allocator<Key> >
+class flat_multiset;
+
+//flat_map class
+template <class Key
+ ,class T
+ ,class Compare = std::less<Key>
+ ,class Allocator = std::allocator<std::pair<Key, T> > >
+class flat_map;
+
+//flat_multimap class
+template <class Key
+ ,class T
+ ,class Compare = std::less<Key>
+ ,class Allocator = std::allocator<std::pair<Key, T> > >
+class flat_multimap;
+
+//basic_string class
+template <class CharT
+ ,class Traits = std::char_traits<CharT>
+ ,class Allocator = std::allocator<CharT> >
+class basic_string;
+
+//! Type used to tag that the input range is
+//! guaranteed to be ordered
+struct ordered_range_t
+{};
+
+//! Value used to tag that the input range is
+//! guaranteed to be ordered
+static const ordered_range_t ordered_range = ordered_range_t();
+
+//! Type used to tag that the input range is
+//! guaranteed to be ordered and unique
+struct ordered_unique_range_t
+ : public ordered_range_t
+{};
+
+//! Value used to tag that the input range is
+//! guaranteed to be ordered and unique
+static const ordered_unique_range_t ordered_unique_range = ordered_unique_range_t();
+
+//! Type used to tag that the input range is
+//! guaranteed to be ordered and unique
+struct default_init_t
+{};
+
+//! Value used to tag that the input range is
+//! guaranteed to be ordered and unique
+static const default_init_t default_init = default_init_t();
+/// @cond
+
+namespace detail_really_deep_namespace {
+
+//Otherwise, gcc issues a warning of previously defined
+//anonymous_instance and unique_instance
+struct dummy
+{
+ dummy()
+ {
+ (void)ordered_range;
+ (void)ordered_unique_range;
+ (void)default_init;
+ }
+};
+
+} //detail_really_deep_namespace {
+
+/// @endcond
+
+}} //namespace boost { namespace container {
+
+#endif //#ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP
// boost cstdint.hpp header file ------------------------------------------//
-// (C) Copyright Beman Dawes 1999.
-// (C) Copyright Jens Mauer 2001
-// (C) Copyright John Maddock 2001
+// (C) Copyright Beman Dawes 1999.
+// (C) Copyright Jens Mauer 2001
+// (C) Copyright John Maddock 2001
// 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)
#define BOOST_CSTDINT_HPP
//
-// Since we always define the INT#_C macros as per C++0x,
+// Since we always define the INT#_C macros as per C++0x,
// define __STDC_CONSTANT_MACROS so that <stdint.h> does the right
-// thing if possible, and so that the user knows that the macros
+// thing if possible, and so that the user knows that the macros
// are actually defined as per C99.
//
#ifndef __STDC_CONSTANT_MACROS
// so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG.
// See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990
//
-#if defined(BOOST_HAS_STDINT_H) && (!defined(__GLIBC__) || defined(__GLIBC_HAVE_LONG_LONG))
+#if defined(BOOST_HAS_STDINT_H) \
+ && (!defined(__GLIBC__) \
+ || defined(__GLIBC_HAVE_LONG_LONG) \
+ || (defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 17)))))
// The following #include is an implementation artifact; not part of interface.
# ifdef __hpux
# ifdef __STDC_32_MODE__
// this is triggered with GCC, because it defines __cplusplus < 199707L
# define BOOST_NO_INT64_T
-# endif
+# endif
# elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX)
# include <inttypes.h>
# else
namespace boost
{
- using ::int8_t;
- using ::int_least8_t;
- using ::int_fast8_t;
- using ::uint8_t;
- using ::uint_least8_t;
- using ::uint_fast8_t;
-
- using ::int16_t;
- using ::int_least16_t;
- using ::int_fast16_t;
- using ::uint16_t;
- using ::uint_least16_t;
- using ::uint_fast16_t;
-
- using ::int32_t;
- using ::int_least32_t;
- using ::int_fast32_t;
- using ::uint32_t;
- using ::uint_least32_t;
- using ::uint_fast32_t;
-
+ using ::int8_t;
+ using ::int_least8_t;
+ using ::int_fast8_t;
+ using ::uint8_t;
+ using ::uint_least8_t;
+ using ::uint_fast8_t;
+
+ using ::int16_t;
+ using ::int_least16_t;
+ using ::int_fast16_t;
+ using ::uint16_t;
+ using ::uint_least16_t;
+ using ::uint_fast16_t;
+
+ using ::int32_t;
+ using ::int_least32_t;
+ using ::int_fast32_t;
+ using ::uint32_t;
+ using ::uint_least32_t;
+ using ::uint_fast32_t;
+
# ifndef BOOST_NO_INT64_T
- using ::int64_t;
- using ::int_least64_t;
- using ::int_fast64_t;
- using ::uint64_t;
- using ::uint_least64_t;
- using ::uint_fast64_t;
-
+ using ::int64_t;
+ using ::int_least64_t;
+ using ::int_fast64_t;
+ using ::uint64_t;
+ using ::uint_least64_t;
+ using ::uint_fast64_t;
+
# endif
- using ::intmax_t;
- using ::uintmax_t;
+ using ::intmax_t;
+ using ::uintmax_t;
} // namespace boost
-#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__)
+#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__) || defined(__VMS)
// FreeBSD and Tru64 have an <inttypes.h> that contains much of what we need.
# include <inttypes.h>
namespace boost {
- using ::int8_t;
- typedef int8_t int_least8_t;
- typedef int8_t int_fast8_t;
- using ::uint8_t;
- typedef uint8_t uint_least8_t;
- typedef uint8_t uint_fast8_t;
-
- using ::int16_t;
- typedef int16_t int_least16_t;
- typedef int16_t int_fast16_t;
- using ::uint16_t;
- typedef uint16_t uint_least16_t;
- typedef uint16_t uint_fast16_t;
-
- using ::int32_t;
- typedef int32_t int_least32_t;
- typedef int32_t int_fast32_t;
- using ::uint32_t;
- typedef uint32_t uint_least32_t;
- typedef uint32_t uint_fast32_t;
-
-# ifndef BOOST_NO_INT64_T
-
- using ::int64_t;
- typedef int64_t int_least64_t;
- typedef int64_t int_fast64_t;
- using ::uint64_t;
- typedef uint64_t uint_least64_t;
- typedef uint64_t uint_fast64_t;
+ using ::int8_t;
+ typedef int8_t int_least8_t;
+ typedef int8_t int_fast8_t;
+ using ::uint8_t;
+ typedef uint8_t uint_least8_t;
+ typedef uint8_t uint_fast8_t;
+
+ using ::int16_t;
+ typedef int16_t int_least16_t;
+ typedef int16_t int_fast16_t;
+ using ::uint16_t;
+ typedef uint16_t uint_least16_t;
+ typedef uint16_t uint_fast16_t;
+
+ using ::int32_t;
+ typedef int32_t int_least32_t;
+ typedef int32_t int_fast32_t;
+ using ::uint32_t;
+ typedef uint32_t uint_least32_t;
+ typedef uint32_t uint_fast32_t;
+
+# ifndef BOOST_NO_INT64_T
+
+ using ::int64_t;
+ typedef int64_t int_least64_t;
+ typedef int64_t int_fast64_t;
+ using ::uint64_t;
+ typedef uint64_t uint_least64_t;
+ typedef uint64_t uint_fast64_t;
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
typedef unsigned short uint_least16_t;
typedef unsigned short uint_fast16_t;
# endif
-# elif (USHRT_MAX == 0xffffffff) && defined(__MTA__)
- // On MTA / XMT short is 32 bits unless the -short16 compiler flag is specified
- // MTA / XMT does support the following non-standard integer types
- typedef __short16 int16_t;
- typedef __short16 int_least16_t;
- typedef __short16 int_fast16_t;
- typedef unsigned __short16 uint16_t;
- typedef unsigned __short16 uint_least16_t;
- typedef unsigned __short16 uint_fast16_t;
+# elif (USHRT_MAX == 0xffffffff) && defined(__MTA__)
+ // On MTA / XMT short is 32 bits unless the -short16 compiler flag is specified
+ // MTA / XMT does support the following non-standard integer types
+ typedef __short16 int16_t;
+ typedef __short16 int_least16_t;
+ typedef __short16 int_fast16_t;
+ typedef unsigned __short16 uint16_t;
+ typedef unsigned __short16 uint_least16_t;
+ typedef unsigned __short16 uint_fast16_t;
# elif (USHRT_MAX == 0xffffffff) && defined(CRAY)
// no 16-bit types on Cray:
typedef short int_least16_t;
// 32-bit types -----------------------------------------------------------//
-# if ULONG_MAX == 0xffffffff
- typedef long int32_t;
- typedef long int_least32_t;
- typedef long int_fast32_t;
- typedef unsigned long uint32_t;
- typedef unsigned long uint_least32_t;
- typedef unsigned long uint_fast32_t;
-# elif UINT_MAX == 0xffffffff
+# if UINT_MAX == 0xffffffff
typedef int int32_t;
typedef int int_least32_t;
typedef int int_fast32_t;
typedef unsigned int uint32_t;
typedef unsigned int uint_least32_t;
typedef unsigned int uint_fast32_t;
-# elif (UINT_MAX == 0xffffffffffffffff) && defined(__MTA__)
- // Integers are 64 bits on the MTA / XMT
- typedef __int32 int32_t;
- typedef __int32 int_least32_t;
- typedef __int32 int_fast32_t;
- typedef unsigned __int32 uint32_t;
- typedef unsigned __int32 uint_least32_t;
- typedef unsigned __int32 uint_fast32_t;
+# elif (USHRT_MAX == 0xffffffff)
+ typedef short int32_t;
+ typedef short int_least32_t;
+ typedef short int_fast32_t;
+ typedef unsigned short uint32_t;
+ typedef unsigned short uint_least32_t;
+ typedef unsigned short uint_fast32_t;
+# elif ULONG_MAX == 0xffffffff
+ typedef long int32_t;
+ typedef long int_least32_t;
+ typedef long int_fast32_t;
+ typedef unsigned long uint32_t;
+ typedef unsigned long uint_least32_t;
+ typedef unsigned long uint_fast32_t;
+# elif (UINT_MAX == 0xffffffffffffffff) && defined(__MTA__)
+ // Integers are 64 bits on the MTA / XMT
+ typedef __int32 int32_t;
+ typedef __int32 int_least32_t;
+ typedef __int32 int_fast32_t;
+ typedef unsigned __int32 uint32_t;
+ typedef unsigned __int32 uint_least32_t;
+ typedef unsigned __int32 uint_fast32_t;
# else
# error defaults not correct; you must hand modify boost/cstdint.hpp
# endif
#endif // BOOST_HAS_STDINT_H
+// intptr_t/uintptr_t are defined separately because they are optional and not universally available
+#if defined(BOOST_WINDOWS) && !defined(_WIN32_WCE) && !defined(BOOST_HAS_STDINT_H)
+// Older MSVC don't have stdint.h and have intptr_t/uintptr_t defined in stddef.h
+#include <stddef.h>
+#endif
+
+// PGI seems to not support intptr_t/uintptr_t properly. BOOST_HAS_STDINT_H is not defined for this compiler by Boost.Config.
+#if !defined(__PGIC__)
+
+#if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \
+ || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \
+ || defined(__CYGWIN__) \
+ || defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \
+ || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+
+namespace boost {
+ using ::intptr_t;
+ using ::uintptr_t;
+}
+#define BOOST_HAS_INTPTR_T
+
+// Clang pretends to be GCC, so it'll match this condition
+#elif defined(__GNUC__) && defined(__INTPTR_TYPE__) && defined(__UINTPTR_TYPE__)
+
+namespace boost {
+ typedef __INTPTR_TYPE__ intptr_t;
+ typedef __UINTPTR_TYPE__ uintptr_t;
+}
+#define BOOST_HAS_INTPTR_T
+
+#endif
+
+#endif // !defined(__PGIC__)
+
#endif // BOOST_CSTDINT_HPP
#if !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && \
(!defined(INT8_C) || !defined(INT16_C) || !defined(INT32_C) || !defined(INT64_C))
//
-// For the following code we get several warnings along the lines of:
-//
-// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant
-//
-// So we declare this a system header to suppress these warnings.
+// For the following code we get several warnings along the lines of:
+//
+// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant
//
-#if defined(__GNUC__) && (__GNUC__ >= 4)
-#pragma GCC system_header
-#endif
+// So we declare this a system header to suppress these warnings.
+//
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+#pragma GCC system_header
+#endif
#include <limits.h>
# define BOOST__STDC_CONSTANT_MACROS_DEFINED
inline void current_function_helper()
{
-#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600))
+#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600)) || defined(__ghs__)
# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
} // namespace boost
#endif // #ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
+
+++ /dev/null
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to 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).
-//
-// See http://www.boost.org/libs/utility for most recent version including documentation.
-
-// call_traits: defines typedefs for function usage
-// (see libs/utility/call_traits.htm)
-
-/* Release notes:
- 23rd July 2000:
- Fixed array specialization. (JM)
- Added Borland specific fixes for reference types
- (issue raised by Steve Cleary).
-*/
-
-#ifndef BOOST_DETAIL_CALL_TRAITS_HPP
-#define BOOST_DETAIL_CALL_TRAITS_HPP
-
-#ifndef BOOST_CONFIG_HPP
-#include <boost/config.hpp>
-#endif
-#include <cstddef>
-
-#include <boost/type_traits/is_arithmetic.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/detail/workaround.hpp>
-
-namespace boost{
-
-namespace detail{
-
-template <typename T, bool small_>
-struct ct_imp2
-{
- typedef const T& param_type;
-};
-
-template <typename T>
-struct ct_imp2<T, true>
-{
- typedef const T param_type;
-};
-
-template <typename T, bool isp, bool b1>
-struct ct_imp
-{
- typedef const T& param_type;
-};
-
-template <typename T, bool isp>
-struct ct_imp<T, isp, true>
-{
- typedef typename ct_imp2<T, sizeof(T) <= sizeof(void*)>::param_type param_type;
-};
-
-template <typename T, bool b1>
-struct ct_imp<T, true, b1>
-{
- typedef const T param_type;
-};
-
-}
-
-template <typename T>
-struct call_traits
-{
-public:
- typedef T value_type;
- typedef T& reference;
- typedef const T& const_reference;
- //
- // C++ Builder workaround: we should be able to define a compile time
- // constant and pass that as a single template parameter to ct_imp<T,bool>,
- // however compiler bugs prevent this - instead pass three bool's to
- // ct_imp<T,bool,bool,bool> and add an extra partial specialisation
- // of ct_imp to handle the logic. (JM)
- typedef typename boost::detail::ct_imp<
- T,
- ::boost::is_pointer<T>::value,
- ::boost::is_arithmetic<T>::value
- >::param_type param_type;
-};
-
-template <typename T>
-struct call_traits<T&>
-{
- typedef T& value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef T& param_type; // hh removed const
-};
-
-#if BOOST_WORKAROUND( __BORLANDC__, < 0x5A0 )
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-template <typename T>
-struct call_traits<T&const>
-{
- typedef T& value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef T& param_type; // hh removed const
-};
-template <typename T>
-struct call_traits<T&volatile>
-{
- typedef T& value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef T& param_type; // hh removed const
-};
-template <typename T>
-struct call_traits<T&const volatile>
-{
- typedef T& value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef T& param_type; // hh removed const
-};
-
-template <typename T>
-struct call_traits< T * >
-{
- typedef T * value_type;
- typedef T * & reference;
- typedef T * const & const_reference;
- typedef T * const param_type; // hh removed const
-};
-#endif
-#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
-template <typename T, std::size_t N>
-struct call_traits<T [N]>
-{
-private:
- typedef T array_type[N];
-public:
- // degrades array to pointer:
- typedef const T* value_type;
- typedef array_type& reference;
- typedef const array_type& const_reference;
- typedef const T* const param_type;
-};
-
-template <typename T, std::size_t N>
-struct call_traits<const T [N]>
-{
-private:
- typedef const T array_type[N];
-public:
- // degrades array to pointer:
- typedef const T* value_type;
- typedef array_type& reference;
- typedef const array_type& const_reference;
- typedef const T* const param_type;
-};
-#endif
-
-}
-
-#endif // BOOST_DETAIL_CALL_TRAITS_HPP
-// Copyright 2005 Caleb Epstein
-// Copyright 2006 John Maddock
-// Copyright 2010 Rene Rivera
+// Copyright 2013 Redshift Software Inc
// Distributed under the Boost Software License, Version 1.0. (See accompany-
// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/*
- * Copyright notice reproduced from <boost/detail/limits.hpp>, from
- * which this code was originally taken.
- *
- * Modified by Caleb Epstein to use <endian.h> with GNU libc and to
- * defined the BOOST_ENDIAN macro.
- */
-
#ifndef BOOST_DETAIL_ENDIAN_HPP
#define BOOST_DETAIL_ENDIAN_HPP
-// GNU libc offers the helpful header <endian.h> which defines
-// __BYTE_ORDER
-
-#if defined (__GLIBC__)
-# include <endian.h>
-# if (__BYTE_ORDER == __LITTLE_ENDIAN)
-# define BOOST_LITTLE_ENDIAN
-# elif (__BYTE_ORDER == __BIG_ENDIAN)
-# define BOOST_BIG_ENDIAN
-# elif (__BYTE_ORDER == __PDP_ENDIAN)
-# define BOOST_PDP_ENDIAN
-# else
-# error Unknown machine endianness detected.
-# endif
-# define BOOST_BYTE_ORDER __BYTE_ORDER
-#elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN) || \
- defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
-# define BOOST_BIG_ENDIAN
-# define BOOST_BYTE_ORDER 4321
-#elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) || \
- defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
-# define BOOST_LITTLE_ENDIAN
-# define BOOST_BYTE_ORDER 1234
-#elif defined(__sparc) || defined(__sparc__) \
- || defined(_POWER) || defined(__powerpc__) \
- || defined(__ppc__) || defined(__hpux) || defined(__hppa) \
- || defined(_MIPSEB) || defined(_POWER) \
- || defined(__s390__)
-# define BOOST_BIG_ENDIAN
-# define BOOST_BYTE_ORDER 4321
-#elif defined(__i386__) || defined(__alpha__) \
- || defined(__ia64) || defined(__ia64__) \
- || defined(_M_IX86) || defined(_M_IA64) \
- || defined(_M_ALPHA) || defined(__amd64) \
- || defined(__amd64__) || defined(_M_AMD64) \
- || defined(__x86_64) || defined(__x86_64__) \
- || defined(_M_X64) || defined(__bfin__)
-
-# define BOOST_LITTLE_ENDIAN
-# define BOOST_BYTE_ORDER 1234
-#else
-# error The file boost/detail/endian.hpp needs to be set up for your CPU type.
-#endif
-
+// Use the Predef library for the detection of endianess.
+#include <boost/predef/detail/endian_compat.h>
#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2010 Bryce Lelbach
+
+ 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)
+=============================================================================*/
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_NO_FENV_H)
+ #error This platform does not have a floating point environment
+#endif
+
+#if !defined(BOOST_DETAIL_FENV_HPP)
+#define BOOST_DETAIL_FENV_HPP
+
+/* If we're using clang + glibc, we have to get hacky.
+ * See http://llvm.org/bugs/show_bug.cgi?id=6907 */
+#if defined(__clang__) && (__clang_major__ < 3) && \
+ defined(__GNU_LIBRARY__) && /* up to version 5 */ \
+ defined(__GLIBC__) && /* version 6 + */ \
+ !defined(_FENV_H)
+ #define _FENV_H
+
+ #include <features.h>
+ #include <bits/fenv.h>
+
+ extern "C" {
+ extern int fegetexceptflag (fexcept_t*, int) __THROW;
+ extern int fesetexceptflag (__const fexcept_t*, int) __THROW;
+ extern int feclearexcept (int) __THROW;
+ extern int feraiseexcept (int) __THROW;
+ extern int fetestexcept (int) __THROW;
+ extern int fegetround (void) __THROW;
+ extern int fesetround (int) __THROW;
+ extern int fegetenv (fenv_t*) __THROW;
+ extern int fesetenv (__const fenv_t*) __THROW;
+ extern int feupdateenv (__const fenv_t*) __THROW;
+ extern int feholdexcept (fenv_t*) __THROW;
+
+ #ifdef __USE_GNU
+ extern int feenableexcept (int) __THROW;
+ extern int fedisableexcept (int) __THROW;
+ extern int fegetexcept (void) __THROW;
+ #endif
+ }
+
+ namespace std { namespace tr1 {
+ using ::fenv_t;
+ using ::fexcept_t;
+ using ::fegetexceptflag;
+ using ::fesetexceptflag;
+ using ::feclearexcept;
+ using ::feraiseexcept;
+ using ::fetestexcept;
+ using ::fegetround;
+ using ::fesetround;
+ using ::fegetenv;
+ using ::fesetenv;
+ using ::feupdateenv;
+ using ::feholdexcept;
+ } }
+
+#else /* if we're not using GNU's C stdlib, fenv.h should work with clang */
+ #if defined(__SUNPRO_CC) /* lol suncc */
+ #include <stdio.h>
+ #endif
+
+ #include <fenv.h>
+
+#endif
+
+#endif /* BOOST_DETAIL_FENV_HPP */
+
--- /dev/null
+// Copyright David Abrahams 2002.
+// 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)
+#ifndef INDIRECT_TRAITS_DWA2002131_HPP
+# define INDIRECT_TRAITS_DWA2002131_HPP
+# include <boost/type_traits/is_function.hpp>
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_pointer.hpp>
+# include <boost/type_traits/is_class.hpp>
+# include <boost/type_traits/is_const.hpp>
+# include <boost/type_traits/is_volatile.hpp>
+# include <boost/type_traits/is_member_function_pointer.hpp>
+# include <boost/type_traits/is_member_pointer.hpp>
+# include <boost/type_traits/remove_cv.hpp>
+# include <boost/type_traits/remove_reference.hpp>
+# include <boost/type_traits/remove_pointer.hpp>
+
+# include <boost/type_traits/detail/ice_and.hpp>
+# include <boost/detail/workaround.hpp>
+
+# include <boost/mpl/eval_if.hpp>
+# include <boost/mpl/if.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/and.hpp>
+# include <boost/mpl/not.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+
+# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# include <boost/detail/is_function_ref_tester.hpp>
+# endif
+
+namespace boost { namespace detail {
+
+namespace indirect_traits {
+
+# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <class T>
+struct is_reference_to_const : mpl::false_
+{
+};
+
+template <class T>
+struct is_reference_to_const<T const&> : mpl::true_
+{
+};
+
+# if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround
+template<class T>
+struct is_reference_to_const<T const volatile&> : mpl::true_
+{
+};
+# endif
+
+template <class T>
+struct is_reference_to_function : mpl::false_
+{
+};
+
+template <class T>
+struct is_reference_to_function<T&> : is_function<T>
+{
+};
+
+template <class T>
+struct is_pointer_to_function : mpl::false_
+{
+};
+
+// There's no such thing as a pointer-to-cv-function, so we don't need
+// specializations for those
+template <class T>
+struct is_pointer_to_function<T*> : is_function<T>
+{
+};
+
+template <class T>
+struct is_reference_to_member_function_pointer_impl : mpl::false_
+{
+};
+
+template <class T>
+struct is_reference_to_member_function_pointer_impl<T&>
+ : is_member_function_pointer<typename remove_cv<T>::type>
+{
+};
+
+
+template <class T>
+struct is_reference_to_member_function_pointer
+ : is_reference_to_member_function_pointer_impl<T>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T))
+};
+
+template <class T>
+struct is_reference_to_function_pointer_aux
+ : mpl::and_<
+ is_reference<T>
+ , is_pointer_to_function<
+ typename remove_cv<
+ typename remove_reference<T>::type
+ >::type
+ >
+ >
+{
+ // There's no such thing as a pointer-to-cv-function, so we don't need specializations for those
+};
+
+template <class T>
+struct is_reference_to_function_pointer
+ : mpl::if_<
+ is_reference_to_function<T>
+ , mpl::false_
+ , is_reference_to_function_pointer_aux<T>
+ >::type
+{
+};
+
+template <class T>
+struct is_reference_to_non_const
+ : mpl::and_<
+ is_reference<T>
+ , mpl::not_<
+ is_reference_to_const<T>
+ >
+ >
+{
+};
+
+template <class T>
+struct is_reference_to_volatile : mpl::false_
+{
+};
+
+template <class T>
+struct is_reference_to_volatile<T volatile&> : mpl::true_
+{
+};
+
+# if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround
+template <class T>
+struct is_reference_to_volatile<T const volatile&> : mpl::true_
+{
+};
+# endif
+
+
+template <class T>
+struct is_reference_to_pointer : mpl::false_
+{
+};
+
+template <class T>
+struct is_reference_to_pointer<T*&> : mpl::true_
+{
+};
+
+template <class T>
+struct is_reference_to_pointer<T* const&> : mpl::true_
+{
+};
+
+template <class T>
+struct is_reference_to_pointer<T* volatile&> : mpl::true_
+{
+};
+
+template <class T>
+struct is_reference_to_pointer<T* const volatile&> : mpl::true_
+{
+};
+
+template <class T>
+struct is_reference_to_class
+ : mpl::and_<
+ is_reference<T>
+ , is_class<
+ typename remove_cv<
+ typename remove_reference<T>::type
+ >::type
+ >
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T))
+};
+
+template <class T>
+struct is_pointer_to_class
+ : mpl::and_<
+ is_pointer<T>
+ , is_class<
+ typename remove_cv<
+ typename remove_pointer<T>::type
+ >::type
+ >
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_class,(T))
+};
+
+# else
+
+using namespace boost::detail::is_function_ref_tester_;
+
+typedef char (&inner_yes_type)[3];
+typedef char (&inner_no_type)[2];
+typedef char (&outer_no_type)[1];
+
+template <typename V>
+struct is_const_help
+{
+ typedef typename mpl::if_<
+ is_const<V>
+ , inner_yes_type
+ , inner_no_type
+ >::type type;
+};
+
+template <typename V>
+struct is_volatile_help
+{
+ typedef typename mpl::if_<
+ is_volatile<V>
+ , inner_yes_type
+ , inner_no_type
+ >::type type;
+};
+
+template <typename V>
+struct is_pointer_help
+{
+ typedef typename mpl::if_<
+ is_pointer<V>
+ , inner_yes_type
+ , inner_no_type
+ >::type type;
+};
+
+template <typename V>
+struct is_class_help
+{
+ typedef typename mpl::if_<
+ is_class<V>
+ , inner_yes_type
+ , inner_no_type
+ >::type type;
+};
+
+template <class T>
+struct is_reference_to_function_aux
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value = sizeof(detail::is_function_ref_tester(t,0)) == sizeof(::boost::type_traits::yes_type));
+ typedef mpl::bool_<value> type;
+ };
+
+template <class T>
+struct is_reference_to_function
+ : mpl::if_<is_reference<T>, is_reference_to_function_aux<T>, mpl::bool_<false> >::type
+{
+};
+
+template <class T>
+struct is_pointer_to_function_aux
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = sizeof(::boost::type_traits::is_function_ptr_tester(t)) == sizeof(::boost::type_traits::yes_type));
+ typedef mpl::bool_<value> type;
+};
+
+template <class T>
+struct is_pointer_to_function
+ : mpl::if_<is_pointer<T>, is_pointer_to_function_aux<T>, mpl::bool_<false> >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_function,(T))
+};
+
+struct false_helper1
+{
+ template <class T>
+ struct apply : mpl::false_
+ {
+ };
+};
+
+template <typename V>
+typename is_const_help<V>::type reference_to_const_helper(V&);
+outer_no_type
+reference_to_const_helper(...);
+
+struct true_helper1
+{
+ template <class T>
+ struct apply
+ {
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = sizeof(reference_to_const_helper(t)) == sizeof(inner_yes_type));
+ typedef mpl::bool_<value> type;
+ };
+};
+
+template <bool ref = true>
+struct is_reference_to_const_helper1 : true_helper1
+{
+};
+
+template <>
+struct is_reference_to_const_helper1<false> : false_helper1
+{
+};
+
+
+template <class T>
+struct is_reference_to_const
+ : is_reference_to_const_helper1<is_reference<T>::value>::template apply<T>
+{
+};
+
+
+template <bool ref = true>
+struct is_reference_to_non_const_helper1
+{
+ template <class T>
+ struct apply
+ {
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = sizeof(reference_to_const_helper(t)) == sizeof(inner_no_type));
+
+ typedef mpl::bool_<value> type;
+ };
+};
+
+template <>
+struct is_reference_to_non_const_helper1<false> : false_helper1
+{
+};
+
+
+template <class T>
+struct is_reference_to_non_const
+ : is_reference_to_non_const_helper1<is_reference<T>::value>::template apply<T>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_non_const,(T))
+};
+
+
+template <typename V>
+typename is_volatile_help<V>::type reference_to_volatile_helper(V&);
+outer_no_type
+reference_to_volatile_helper(...);
+
+template <bool ref = true>
+struct is_reference_to_volatile_helper1
+{
+ template <class T>
+ struct apply
+ {
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = sizeof(reference_to_volatile_helper(t)) == sizeof(inner_yes_type));
+ typedef mpl::bool_<value> type;
+ };
+};
+
+template <>
+struct is_reference_to_volatile_helper1<false> : false_helper1
+{
+};
+
+
+template <class T>
+struct is_reference_to_volatile
+ : is_reference_to_volatile_helper1<is_reference<T>::value>::template apply<T>
+{
+};
+
+template <typename V>
+typename is_pointer_help<V>::type reference_to_pointer_helper(V&);
+outer_no_type reference_to_pointer_helper(...);
+
+template <class T>
+struct reference_to_pointer_impl
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = (sizeof((reference_to_pointer_helper)(t)) == sizeof(inner_yes_type))
+ );
+
+ typedef mpl::bool_<value> type;
+};
+
+template <class T>
+struct is_reference_to_pointer
+ : mpl::eval_if<is_reference<T>, reference_to_pointer_impl<T>, mpl::false_>::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_pointer,(T))
+};
+
+template <class T>
+struct is_reference_to_function_pointer
+ : mpl::eval_if<is_reference<T>, is_pointer_to_function_aux<T>, mpl::false_>::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_function_pointer,(T))
+};
+
+
+template <class T>
+struct is_member_function_pointer_help
+ : mpl::if_<is_member_function_pointer<T>, inner_yes_type, inner_no_type>
+{};
+
+template <typename V>
+typename is_member_function_pointer_help<V>::type member_function_pointer_helper(V&);
+outer_no_type member_function_pointer_helper(...);
+
+template <class T>
+struct is_pointer_to_member_function_aux
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = sizeof((member_function_pointer_helper)(t)) == sizeof(inner_yes_type));
+ typedef mpl::bool_<value> type;
+};
+
+template <class T>
+struct is_reference_to_member_function_pointer
+ : mpl::if_<
+ is_reference<T>
+ , is_pointer_to_member_function_aux<T>
+ , mpl::bool_<false>
+ >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T))
+};
+
+template <typename V>
+typename is_class_help<V>::type reference_to_class_helper(V const volatile&);
+outer_no_type reference_to_class_helper(...);
+
+template <class T>
+struct is_reference_to_class
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = (is_reference<T>::value
+ & (sizeof(reference_to_class_helper(t)) == sizeof(inner_yes_type)))
+ );
+ typedef mpl::bool_<value> type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T))
+};
+
+template <typename V>
+typename is_class_help<V>::type pointer_to_class_helper(V const volatile*);
+outer_no_type pointer_to_class_helper(...);
+
+template <class T>
+struct is_pointer_to_class
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = (is_pointer<T>::value
+ && sizeof(pointer_to_class_helper(t)) == sizeof(inner_yes_type))
+ );
+ typedef mpl::bool_<value> type;
+};
+# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+}
+
+using namespace indirect_traits;
+
+}} // namespace boost::python::detail
+
+#endif // INDIRECT_TRAITS_DWA2002131_HPP
#ifndef BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
#define BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
//
// boost/detail/interlocked.hpp
//
#include <boost/config.hpp>
+// MS compatible compilers support #pragma once
+#ifdef BOOST_HAS_PRAGMA_ONCE
+#pragma once
+#endif
+
#if defined( BOOST_USE_WINDOWS_H )
# include <windows.h>
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER InterlockedCompareExchangePointer
# define BOOST_INTERLOCKED_EXCHANGE_POINTER InterlockedExchangePointer
+#elif defined( BOOST_USE_INTRIN_H )
+
+#include <intrin.h>
+
+# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement
+# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange
+# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange
+# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd
+
+# if defined(_M_IA64) || defined(_M_AMD64) || defined(__x86_64__) || defined(__x86_64)
+
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer
+
+# else
+
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
+ ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
+ ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
+
+# endif
+
#elif defined(_WIN32_WCE)
+#if _WIN32_WCE >= 0x600
+
+extern "C" long __cdecl _InterlockedIncrement( long volatile * );
+extern "C" long __cdecl _InterlockedDecrement( long volatile * );
+extern "C" long __cdecl _InterlockedCompareExchange( long volatile *, long, long );
+extern "C" long __cdecl _InterlockedExchange( long volatile *, long );
+extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long );
+
+# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement
+# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange
+# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange
+# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd
+
+#else
// under Windows CE we still have old-style Interlocked* functions
extern "C" long __cdecl InterlockedIncrement( long* );
# define BOOST_INTERLOCKED_EXCHANGE InterlockedExchange
# define BOOST_INTERLOCKED_EXCHANGE_ADD InterlockedExchangeAdd
+#endif
+
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long*)(dest),(long)(exchange),(long)(compare)))
# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
#elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN )
-#if defined( __CLRCALL_PURE_OR_CDECL )
+#if defined( BOOST_MSVC ) && BOOST_MSVC >= 1500
+
+#include <intrin.h>
+
+#elif defined( __CLRCALL_PURE_OR_CDECL )
extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedIncrement( long volatile * );
extern "C" long __CLRCALL_PURE_OR_CDECL _InterlockedDecrement( long volatile * );
#endif
-# pragma intrinsic( _InterlockedIncrement )
-# pragma intrinsic( _InterlockedDecrement )
-# pragma intrinsic( _InterlockedCompareExchange )
-# pragma intrinsic( _InterlockedExchange )
-# pragma intrinsic( _InterlockedExchangeAdd )
-
# if defined(_M_IA64) || defined(_M_AMD64)
extern "C" void* __cdecl _InterlockedCompareExchangePointer( void* volatile *, void*, void* );
extern "C" void* __cdecl _InterlockedExchangePointer( void* volatile *, void* );
-# pragma intrinsic( _InterlockedCompareExchangePointer )
-# pragma intrinsic( _InterlockedExchangePointer )
-
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer
# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer
# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange
# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd
+// Unlike __MINGW64__, __MINGW64_VERSION_MAJOR is defined by MinGW-w64 for both 32 and 64-bit targets.
+#elif defined(__MINGW64_VERSION_MAJOR)
+
+// MinGW-w64 provides intrin.h for both 32 and 64-bit targets.
+#include <intrin.h>
+
+# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement
+# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange
+# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange
+# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd
+# if defined(__x86_64__) || defined(__x86_64)
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer
+# else
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
+ ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
+ ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
+# endif
+
#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ )
+#define BOOST_INTERLOCKED_IMPORT __declspec(dllimport)
+
namespace boost
{
namespace detail
{
-extern "C" __declspec(dllimport) long __stdcall InterlockedIncrement( long volatile * );
-extern "C" __declspec(dllimport) long __stdcall InterlockedDecrement( long volatile * );
-extern "C" __declspec(dllimport) long __stdcall InterlockedCompareExchange( long volatile *, long, long );
-extern "C" __declspec(dllimport) long __stdcall InterlockedExchange( long volatile *, long );
-extern "C" __declspec(dllimport) long __stdcall InterlockedExchangeAdd( long volatile *, long );
+extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedIncrement( long volatile * );
+extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedDecrement( long volatile * );
+extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedCompareExchange( long volatile *, long, long );
+extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchange( long volatile *, long );
+extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchangeAdd( long volatile *, long );
+
+# if defined(_M_IA64) || defined(_M_AMD64)
+extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedCompareExchangePointer( void* volatile *, void*, void* );
+extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedExchangePointer( void* volatile *, void* );
+# endif
} // namespace detail
# define BOOST_INTERLOCKED_EXCHANGE ::boost::detail::InterlockedExchange
# define BOOST_INTERLOCKED_EXCHANGE_ADD ::boost::detail::InterlockedExchangeAdd
-# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
+# if defined(_M_IA64) || defined(_M_AMD64)
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER ::boost::detail::InterlockedCompareExchangePointer
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER ::boost::detail::InterlockedExchangePointer
+# else
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
-# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
+# endif
#else
--- /dev/null
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
+// 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)
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
+#define BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
+
+#include "boost/type_traits/detail/yes_no_type.hpp"
+#include "boost/type_traits/config.hpp"
+
+#if defined(BOOST_TT_PREPROCESSING_MODE)
+# include "boost/preprocessor/iterate.hpp"
+# include "boost/preprocessor/enum_params.hpp"
+# include "boost/preprocessor/comma_if.hpp"
+#endif
+
+namespace boost {
+namespace detail {
+namespace is_function_ref_tester_ {
+
+template <class T>
+boost::type_traits::no_type BOOST_TT_DECL is_function_ref_tester(T& ...);
+
+#if !defined(BOOST_TT_PREPROCESSING_MODE)
+// preprocessor-generated part, don't edit by hand!
+
+template <class R>
+boost::type_traits::yes_type is_function_ref_tester(R (&)(), int);
+
+template <class R,class T0 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0), int);
+
+template <class R,class T0,class T1 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1), int);
+
+template <class R,class T0,class T1,class T2 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2), int);
+
+template <class R,class T0,class T1,class T2,class T3 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23,class T24 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24), int);
+
+#else
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (0, 25, "boost/detail/is_function_ref_tester.hpp"))
+#include BOOST_PP_ITERATE()
+
+#endif // BOOST_TT_PREPROCESSING_MODE
+
+} // namespace detail
+} // namespace python
+} // namespace boost
+
+#endif // BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i BOOST_PP_FRAME_ITERATION(1)
+
+template <class R BOOST_PP_COMMA_IF(i) BOOST_PP_ENUM_PARAMS(i,class T) >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(BOOST_PP_ENUM_PARAMS(i,T)), int);
+
+#undef i
+#endif // BOOST_PP_IS_ITERATING
+
+++ /dev/null
-// Copyright 2001 John Maddock
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is not portable code. Parts of numeric_limits<> are
- * inherently machine-dependent, and this file is written for the MIPS
- * architecture and the SGI MIPSpro C++ compiler. Parts of it (in
- * particular, some of the characteristics of floating-point types)
- * are almost certainly incorrect for any other platform.
- */
-
-/* The above comment is almost certainly out of date. This file works
- * on systems other than SGI MIPSpro C++ now.
- */
-
-/*
- * Revision history:
- * 21 Sep 2001:
- * Only include <cwchar> if BOOST_NO_CWCHAR is defined. (Darin Adler)
- * 10 Aug 2001:
- * Added MIPS (big endian) to the big endian family. (Jens Maurer)
- * 13 Apr 2001:
- * Added powerpc to the big endian family. (Jeremy Siek)
- * 5 Apr 2001:
- * Added sparc (big endian) processor support (John Maddock).
- * Initial sub:
- * Modified by Jens Maurer for gcc 2.95 on x86.
- */
-
-#ifndef BOOST_SGI_CPP_LIMITS
-#define BOOST_SGI_CPP_LIMITS
-
-#include <climits>
-#include <cfloat>
-#include <boost/config.hpp>
-#include <boost/detail/endian.hpp>
-
-#ifndef BOOST_NO_CWCHAR
-#include <cwchar> // for WCHAR_MIN and WCHAR_MAX
-#endif
-
-namespace std {
-
-enum float_round_style {
- round_indeterminate = -1,
- round_toward_zero = 0,
- round_to_nearest = 1,
- round_toward_infinity = 2,
- round_toward_neg_infinity = 3
-};
-
-enum float_denorm_style {
- denorm_indeterminate = -1,
- denorm_absent = 0,
- denorm_present = 1
-};
-
-// The C++ standard (section 18.2.1) requires that some of the members of
-// numeric_limits be static const data members that are given constant-
-// initializers within the class declaration. On compilers where the
-// BOOST_NO_INCLASS_MEMBER_INITIALIZATION macro is defined, it is impossible to write
-// a standard-conforming numeric_limits class.
-//
-// There are two possible workarounds: either initialize the data
-// members outside the class, or change them from data members to
-// enums. Neither workaround is satisfactory: the former makes it
-// impossible to use the data members in constant-expressions, and the
-// latter means they have the wrong type and that it is impossible to
-// take their addresses. We choose the former workaround.
-
-#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \
- enum { __mem_name = __mem_value }
-#else /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */
-# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \
- static const __mem_type __mem_name = __mem_value
-#endif /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */
-
-// Base class for all specializations of numeric_limits.
-template <class __number>
-class _Numeric_limits_base {
-public:
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, false);
-
- static __number min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __number(); }
- static __number max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __number(); }
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, 0);
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, 0);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, false);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, false);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, false);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 0);
-
- static __number epsilon() throw() { return __number(); }
- static __number round_error() throw() { return __number(); }
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, 0);
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, 0);
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, 0);
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, 0);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, false);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, false);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, false);
- BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style,
- has_denorm,
- denorm_absent);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false);
-
- static __number infinity() throw() { return __number(); }
- static __number quiet_NaN() throw() { return __number(); }
- static __number signaling_NaN() throw() { return __number(); }
- static __number denorm_min() throw() { return __number(); }
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, false);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, false);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, false);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false);
- BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style,
- round_style,
- round_toward_zero);
-};
-
-// Base class for integers.
-
-template <class _Int,
- _Int __imin,
- _Int __imax,
- int __idigits = -1>
-class _Integer_limits : public _Numeric_limits_base<_Int>
-{
-public:
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true);
-
- static _Int min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __imin; }
- static _Int max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __imax; }
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(int,
- digits,
- (__idigits < 0) ? (int)(sizeof(_Int) * CHAR_BIT)
- - (__imin == 0 ? 0 : 1)
- : __idigits);
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, (digits * 301) / 1000);
- // log 2 = 0.301029995664...
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, __imin != 0);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, true);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, true);
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, true);
-};
-
-#if defined(BOOST_BIG_ENDIAN)
-
- template<class Number, unsigned int Word>
- struct float_helper{
- static Number get_word() throw() {
- // sizeof(long double) == 16
- const unsigned int _S_word[4] = { Word, 0, 0, 0 };
- return *reinterpret_cast<const Number*>(&_S_word);
- }
-};
-
-#else
-
- template<class Number, unsigned int Word>
- struct float_helper{
- static Number get_word() throw() {
- // sizeof(long double) == 12, but only 10 bytes significant
- const unsigned int _S_word[4] = { 0, 0, 0, Word };
- return *reinterpret_cast<const Number*>(
- reinterpret_cast<const char *>(&_S_word)+16-
- (sizeof(Number) == 12 ? 10 : sizeof(Number)));
- }
-};
-
-#endif
-
-// Base class for floating-point numbers.
-template <class __number,
- int __Digits, int __Digits10,
- int __MinExp, int __MaxExp,
- int __MinExp10, int __MaxExp10,
- unsigned int __InfinityWord,
- unsigned int __QNaNWord, unsigned int __SNaNWord,
- bool __IsIEC559,
- float_round_style __RoundStyle>
-class _Floating_limits : public _Numeric_limits_base<__number>
-{
-public:
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, __Digits);
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, __Digits10);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, true);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, __MinExp);
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, __MaxExp);
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, __MinExp10);
- BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, __MaxExp10);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, true);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, true);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, true);
- BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style,
- has_denorm,
- denorm_indeterminate);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false);
-
-
- static __number infinity() throw() {
- return float_helper<__number, __InfinityWord>::get_word();
- }
- static __number quiet_NaN() throw() {
- return float_helper<__number,__QNaNWord>::get_word();
- }
- static __number signaling_NaN() throw() {
- return float_helper<__number,__SNaNWord>::get_word();
- }
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, __IsIEC559);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true);
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false /* was: true */ );
- BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false);
-
- BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style, round_style, __RoundStyle);
-};
-
-// Class numeric_limits
-
-// The unspecialized class.
-
-template<class T>
-class numeric_limits : public _Numeric_limits_base<T> {};
-
-// Specializations for all built-in integral types.
-
-template<>
-class numeric_limits<bool>
- : public _Integer_limits<bool, false, true, 0>
-{};
-
-template<>
-class numeric_limits<char>
- : public _Integer_limits<char, CHAR_MIN, CHAR_MAX>
-{};
-
-template<>
-class numeric_limits<signed char>
- : public _Integer_limits<signed char, SCHAR_MIN, SCHAR_MAX>
-{};
-
-template<>
-class numeric_limits<unsigned char>
- : public _Integer_limits<unsigned char, 0, UCHAR_MAX>
-{};
-
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template<>
-class numeric_limits<wchar_t>
-#if !defined(WCHAR_MAX) || !defined(WCHAR_MIN)
-#if defined(_WIN32) || defined(__CYGWIN__)
- : public _Integer_limits<wchar_t, 0, USHRT_MAX>
-#elif defined(__hppa)
-// wchar_t has "unsigned int" as the underlying type
- : public _Integer_limits<wchar_t, 0, UINT_MAX>
-#else
-// assume that wchar_t has "int" as the underlying type
- : public _Integer_limits<wchar_t, INT_MIN, INT_MAX>
-#endif
-#else
-// we have WCHAR_MIN and WCHAR_MAX defined, so use it
- : public _Integer_limits<wchar_t, WCHAR_MIN, WCHAR_MAX>
-#endif
-{};
-#endif
-
-template<>
-class numeric_limits<short>
- : public _Integer_limits<short, SHRT_MIN, SHRT_MAX>
-{};
-
-template<>
-class numeric_limits<unsigned short>
- : public _Integer_limits<unsigned short, 0, USHRT_MAX>
-{};
-
-template<>
-class numeric_limits<int>
- : public _Integer_limits<int, INT_MIN, INT_MAX>
-{};
-
-template<>
-class numeric_limits<unsigned int>
- : public _Integer_limits<unsigned int, 0, UINT_MAX>
-{};
-
-template<>
-class numeric_limits<long>
- : public _Integer_limits<long, LONG_MIN, LONG_MAX>
-{};
-
-template<>
-class numeric_limits<unsigned long>
- : public _Integer_limits<unsigned long, 0, ULONG_MAX>
-{};
-
-#ifdef __GNUC__
-
-// Some compilers have long long, but don't define the
-// LONGLONG_MIN and LONGLONG_MAX macros in limits.h. This
-// assumes that long long is 64 bits.
-#if !defined(LONGLONG_MAX) && !defined(ULONGLONG_MAX)
-
-# define ULONGLONG_MAX 0xffffffffffffffffLLU
-# define LONGLONG_MAX 0x7fffffffffffffffLL
-
-#endif
-
-#if !defined(LONGLONG_MIN)
-# define LONGLONG_MIN (-LONGLONG_MAX - 1)
-#endif
-
-
-#if !defined(ULONGLONG_MIN)
-# define ULONGLONG_MIN 0
-#endif
-
-#endif /* __GNUC__ */
-
-// Specializations for all built-in floating-point type.
-
-template<> class numeric_limits<float>
- : public _Floating_limits<float,
- FLT_MANT_DIG, // Binary digits of precision
- FLT_DIG, // Decimal digits of precision
- FLT_MIN_EXP, // Minimum exponent
- FLT_MAX_EXP, // Maximum exponent
- FLT_MIN_10_EXP, // Minimum base 10 exponent
- FLT_MAX_10_EXP, // Maximum base 10 exponent
-#if defined(BOOST_BIG_ENDIAN)
- 0x7f80 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
- 0x7f81 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
- 0x7fc1 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
-#else
- 0x7f800000u, // Last word of +infinity
- 0x7f810000u, // Last word of quiet NaN
- 0x7fc10000u, // Last word of signaling NaN
-#endif
- true, // conforms to iec559
- round_to_nearest>
-{
-public:
- static float min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return FLT_MIN; }
- static float denorm_min() throw() { return FLT_MIN; }
- static float max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return FLT_MAX; }
- static float epsilon() throw() { return FLT_EPSILON; }
- static float round_error() throw() { return 0.5f; } // Units: ulps.
-};
-
-template<> class numeric_limits<double>
- : public _Floating_limits<double,
- DBL_MANT_DIG, // Binary digits of precision
- DBL_DIG, // Decimal digits of precision
- DBL_MIN_EXP, // Minimum exponent
- DBL_MAX_EXP, // Maximum exponent
- DBL_MIN_10_EXP, // Minimum base 10 exponent
- DBL_MAX_10_EXP, // Maximum base 10 exponent
-#if defined(BOOST_BIG_ENDIAN)
- 0x7ff0 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
- 0x7ff1 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
- 0x7ff9 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
-#else
- 0x7ff00000u, // Last word of +infinity
- 0x7ff10000u, // Last word of quiet NaN
- 0x7ff90000u, // Last word of signaling NaN
-#endif
- true, // conforms to iec559
- round_to_nearest>
-{
-public:
- static double min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return DBL_MIN; }
- static double denorm_min() throw() { return DBL_MIN; }
- static double max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return DBL_MAX; }
- static double epsilon() throw() { return DBL_EPSILON; }
- static double round_error() throw() { return 0.5; } // Units: ulps.
-};
-
-template<> class numeric_limits<long double>
- : public _Floating_limits<long double,
- LDBL_MANT_DIG, // Binary digits of precision
- LDBL_DIG, // Decimal digits of precision
- LDBL_MIN_EXP, // Minimum exponent
- LDBL_MAX_EXP, // Maximum exponent
- LDBL_MIN_10_EXP,// Minimum base 10 exponent
- LDBL_MAX_10_EXP,// Maximum base 10 exponent
-#if defined(BOOST_BIG_ENDIAN)
- 0x7ff0 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
- 0x7ff1 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
- 0x7ff9 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
-#else
- 0x7fff8000u, // Last word of +infinity
- 0x7fffc000u, // Last word of quiet NaN
- 0x7fff9000u, // Last word of signaling NaN
-#endif
- false, // Doesn't conform to iec559
- round_to_nearest>
-{
-public:
- static long double min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return LDBL_MIN; }
- static long double denorm_min() throw() { return LDBL_MIN; }
- static long double max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return LDBL_MAX; }
- static long double epsilon() throw() { return LDBL_EPSILON; }
- static long double round_error() throw() { return 4; } // Units: ulps.
-};
-
-} // namespace std
-
-#endif /* BOOST_SGI_CPP_LIMITS */
-
-// Local Variables:
-// mode:C++
-// End:
-
-
-
+++ /dev/null
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to 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).
-//
-// See http://www.boost.org/libs/utility for most recent version including documentation.
-//
-// Crippled version for crippled compilers:
-// see libs/utility/call_traits.htm
-//
-
-/* Release notes:
- 01st October 2000:
- Fixed call_traits on VC6, using "poor man's partial specialisation",
- using ideas taken from "Generative programming" by Krzysztof Czarnecki
- & Ulrich Eisenecker.
-*/
-
-#ifndef BOOST_OB_CALL_TRAITS_HPP
-#define BOOST_OB_CALL_TRAITS_HPP
-
-#ifndef BOOST_CONFIG_HPP
-#include <boost/config.hpp>
-#endif
-
-#ifndef BOOST_ARITHMETIC_TYPE_TRAITS_HPP
-#include <boost/type_traits/arithmetic_traits.hpp>
-#endif
-#ifndef BOOST_COMPOSITE_TYPE_TRAITS_HPP
-#include <boost/type_traits/composite_traits.hpp>
-#endif
-
-namespace boost{
-
-#ifdef BOOST_MSVC6_MEMBER_TEMPLATES
-//
-// use member templates to emulate
-// partial specialisation:
-//
-namespace detail{
-
-template <class T>
-struct standard_call_traits
-{
- typedef T value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef const T& param_type;
-};
-template <class T>
-struct simple_call_traits
-{
- typedef T value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef const T param_type;
-};
-template <class T>
-struct reference_call_traits
-{
- typedef T value_type;
- typedef T reference;
- typedef T const_reference;
- typedef T param_type;
-};
-
-template <bool pointer, bool arithmetic, bool reference>
-struct call_traits_chooser
-{
- template <class T>
- struct rebind
- {
- typedef standard_call_traits<T> type;
- };
-};
-
-template <>
-struct call_traits_chooser<true, false, false>
-{
- template <class T>
- struct rebind
- {
- typedef simple_call_traits<T> type;
- };
-};
-
-template <>
-struct call_traits_chooser<false, false, true>
-{
- template <class T>
- struct rebind
- {
- typedef reference_call_traits<T> type;
- };
-};
-
-template <bool size_is_small>
-struct call_traits_sizeof_chooser2
-{
- template <class T>
- struct small_rebind
- {
- typedef simple_call_traits<T> small_type;
- };
-};
-
-template<>
-struct call_traits_sizeof_chooser2<false>
-{
- template <class T>
- struct small_rebind
- {
- typedef standard_call_traits<T> small_type;
- };
-};
-
-template <>
-struct call_traits_chooser<false, true, false>
-{
- template <class T>
- struct rebind
- {
- enum { sizeof_choice = (sizeof(T) <= sizeof(void*)) };
- typedef call_traits_sizeof_chooser2<(sizeof(T) <= sizeof(void*))> chooser;
- typedef typename chooser::template small_rebind<T> bound_type;
- typedef typename bound_type::small_type type;
- };
-};
-
-} // namespace detail
-template <typename T>
-struct call_traits
-{
-private:
- typedef detail::call_traits_chooser<
- ::boost::is_pointer<T>::value,
- ::boost::is_arithmetic<T>::value,
- ::boost::is_reference<T>::value
- > chooser;
- typedef typename chooser::template rebind<T> bound_type;
- typedef typename bound_type::type call_traits_type;
-public:
- typedef typename call_traits_type::value_type value_type;
- typedef typename call_traits_type::reference reference;
- typedef typename call_traits_type::const_reference const_reference;
- typedef typename call_traits_type::param_type param_type;
-};
-
-#else
-//
-// sorry call_traits is completely non-functional
-// blame your broken compiler:
-//
-
-template <typename T>
-struct call_traits
-{
- typedef T value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef const T& param_type;
-};
-
-#endif // member templates
-
-}
-
-#endif // BOOST_OB_CALL_TRAITS_HPP
}
};
+#if defined(__SUNPRO_CC)
+// see #4199, the Sun Studio compiler gets confused about static initialization
+// constructor arguments. But an assignment works just fine.
template<class T> sp_typeinfo sp_typeid_< T >::ti_ = sp_typeid_< T >::name();
+#else
+template<class T> sp_typeinfo sp_typeid_< T >::ti_(sp_typeid_< T >::name());
+#endif
template<class T> struct sp_typeid_< T & >: sp_typeid_< T >
{
--- /dev/null
+//-----------------------------------------------------------------------------
+// boost detail/templated_streams.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2003
+// Eric Friedman
+//
+// 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)
+
+#ifndef BOOST_DETAIL_TEMPLATED_STREAMS_HPP
+#define BOOST_DETAIL_TEMPLATED_STREAMS_HPP
+
+#include "boost/config.hpp"
+
+///////////////////////////////////////////////////////////////////////////////
+// (detail) BOOST_TEMPLATED_STREAM_* macros
+//
+// Provides workaround platforms without stream class templates.
+//
+
+#if !defined(BOOST_NO_STD_LOCALE)
+
+#define BOOST_TEMPLATED_STREAM_TEMPLATE(E,T) \
+ template < typename E , typename T >
+
+#define BOOST_TEMPLATED_STREAM_TEMPLATE_ALLOC(E,T,A) \
+ template < typename E , typename T , typename A >
+
+#define BOOST_TEMPLATED_STREAM_ARGS(E,T) \
+ typename E , typename T
+
+#define BOOST_TEMPLATED_STREAM_ARGS_ALLOC(E,T,A) \
+ typename E , typename T , typename A
+
+#define BOOST_TEMPLATED_STREAM_COMMA ,
+
+#define BOOST_TEMPLATED_STREAM_ELEM(E) E
+#define BOOST_TEMPLATED_STREAM_TRAITS(T) T
+#define BOOST_TEMPLATED_STREAM_ALLOC(A) A
+
+#define BOOST_TEMPLATED_STREAM(X,E,T) \
+ BOOST_JOIN(std::basic_,X)< E , T >
+
+#define BOOST_TEMPLATED_STREAM_WITH_ALLOC(X,E,T,A) \
+ BOOST_JOIN(std::basic_,X)< E , T , A >
+
+#else // defined(BOOST_NO_STD_LOCALE)
+
+#define BOOST_TEMPLATED_STREAM_TEMPLATE(E,T) /**/
+
+#define BOOST_TEMPLATED_STREAM_TEMPLATE_ALLOC(E,T,A) /**/
+
+#define BOOST_TEMPLATED_STREAM_ARGS(E,T) /**/
+
+#define BOOST_TEMPLATED_STREAM_ARGS_ALLOC(E,T,A) /**/
+
+#define BOOST_TEMPLATED_STREAM_COMMA /**/
+
+#define BOOST_TEMPLATED_STREAM_ELEM(E) char
+#define BOOST_TEMPLATED_STREAM_TRAITS(T) std::char_traits<char>
+#define BOOST_TEMPLATED_STREAM_ALLOC(A) std::allocator<char>
+
+#define BOOST_TEMPLATED_STREAM(X,E,T) \
+ std::X
+
+#define BOOST_TEMPLATED_STREAM_WITH_ALLOC(X,E,T,A) \
+ std::X
+
+#endif // BOOST_NO_STD_LOCALE
+
+#endif // BOOST_DETAIL_TEMPLATED_STREAMS_HPP
#if defined(_MSC_VER)
#define BOOST_ATTRIBUTE_NORETURN __declspec(noreturn)
#elif defined(__GNUC__)
-#define BOOST_ATTRIBUTE_NORETURN __attribute__((noreturn))
+#define BOOST_ATTRIBUTE_NORETURN __attribute__((__noreturn__))
#else
#define BOOST_ATTRIBUTE_NORETURN
#endif
#ifndef UUID_274DA366004E11DCB1DDFE2E56D89593
#define UUID_274DA366004E11DCB1DDFE2E56D89593
-#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
#pragma GCC system_header
#endif
#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
}
};
+#if defined(__GNUC__)
+# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+# pragma GCC visibility push (default)
+# endif
+#endif
class exception;
+#if defined(__GNUC__)
+# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+# pragma GCC visibility pop
+# endif
+#endif
template <class T>
class shared_ptr;
E const & set_info( E const &, throw_line const & );
}
+#if defined(__GNUC__)
+# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+# pragma GCC visibility push (default)
+# endif
+#endif
class
exception
{
mutable char const * throw_file_;
mutable int throw_line_;
};
+#if defined(__GNUC__)
+# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+# pragma GCC visibility pop
+# endif
+#endif
inline
exception::
namespace
exception_detail
{
+#if defined(__GNUC__)
+# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+# pragma GCC visibility push (default)
+# endif
+#endif
template <class T>
struct
error_info_injector:
{
}
};
+#if defined(__GNUC__)
+# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+# pragma GCC visibility pop
+# endif
+#endif
struct large_size { char c[256]; };
large_size dispatch_boost_exception( exception const * );
struct
enable_error_info_return_type
{
- typedef typename enable_error_info_helper<T,sizeof(exception_detail::dispatch_boost_exception((T*)0))>::type type;
+ typedef typename enable_error_info_helper<T,sizeof(exception_detail::dispatch_boost_exception(static_cast<T *>(0)))>::type type;
};
}
namespace
exception_detail
{
+#if defined(__GNUC__)
+# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+# pragma GCC visibility push (default)
+# endif
+#endif
class
clone_base
{
{
}
};
+#if defined(__GNUC__)
+# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+# pragma GCC visibility pop
+# endif
+#endif
inline
void
class
clone_impl:
public T,
- public clone_base
+ public virtual clone_base
{
+ struct clone_tag { };
+ clone_impl( clone_impl const & x, clone_tag ):
+ T(x)
+ {
+ copy_boost_exception(this,&x);
+ }
+
public:
explicit
clone_base const *
clone() const
{
- return new clone_impl(*this);
+ return new clone_impl(*this,clone_tag());
}
void
--- /dev/null
+
+// Copyright 2005-2009 Daniel James.
+// 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)
+
+// Based on Peter Dimov's proposal
+// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf
+// issue 6.18.
+
+#if !defined(BOOST_FUNCTIONAL_HASH_FWD_HPP)
+#define BOOST_FUNCTIONAL_HASH_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <boost/config.hpp>
+#include <cstddef>
+#include <boost/detail/workaround.hpp>
+
+namespace boost
+{
+ template <class T> struct hash;
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ template <class T> void hash_combine(std::size_t& seed, T& v);
+#else
+ template <class T> void hash_combine(std::size_t& seed, T const& v);
+#endif
+
+ template <class It> std::size_t hash_range(It, It);
+ template <class It> void hash_range(std::size_t&, It, It);
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
+ template <class T> inline std::size_t hash_range(T*, T*);
+ template <class T> inline void hash_range(std::size_t&, T*, T*);
+#endif
+}
+
+#endif
--- /dev/null
+
+// Copyright 2005-2009 Daniel James.
+// 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)
+
+#include <boost/functional/hash/hash_fwd.hpp>
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_BEGIN_IMPL_31122005_1209)
+#define BOOST_FUSION_BEGIN_IMPL_31122005_1209
+
+#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+#include <boost/mpl/begin.hpp>
+#include <boost/type_traits/remove_const.hpp>
+
+namespace boost { namespace fusion {
+
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<mpl_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename mpl::begin<
+ typename remove_const<Sequence>::type
+ >::type iterator;
+ typedef mpl_iterator<iterator> type;
+
+ static type
+ call(Sequence)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_END_IMPL_31122005_1237)
+#define BOOST_FUSION_END_IMPL_31122005_1237
+
+#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+#include <boost/mpl/end.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<mpl_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename mpl::end<
+ typename remove_const<Sequence>::type
+ >::type iterator;
+ typedef mpl_iterator<iterator> type;
+
+ static type
+ call(Sequence)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_MPL_ITERATOR_05052005_0731)
+#define FUSION_MPL_ITERATOR_05052005_0731
+
+#include <boost/fusion/support/detail/mpl_iterator_category.hpp>
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/mpl/deref.hpp>
+#include <boost/mpl/next.hpp>
+#include <boost/mpl/prior.hpp>
+#include <boost/mpl/advance.hpp>
+#include <boost/mpl/distance.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename Iterator_>
+ struct mpl_iterator
+ : iterator_facade<
+ mpl_iterator<Iterator_>
+ , typename detail::mpl_iterator_category<typename Iterator_::category>::type
+ >
+ {
+ typedef typename remove_const<Iterator_>::type iterator_type;
+
+ template <typename Iterator>
+ struct value_of : mpl::deref<typename Iterator::iterator_type> {};
+
+ template <typename Iterator>
+ struct deref
+ {
+ typedef typename mpl::deref<
+ typename Iterator::iterator_type>::type
+ type;
+
+ static type
+ call(Iterator)
+ {
+ return type();
+ }
+ };
+
+ template <typename Iterator>
+ struct next
+ {
+ typedef mpl_iterator<
+ typename mpl::next<typename Iterator::iterator_type>::type>
+ type;
+
+ static type
+ call(Iterator)
+ {
+ return type();
+ }
+ };
+
+ template <typename Iterator>
+ struct prior
+ {
+ typedef mpl_iterator<
+ typename mpl::prior<typename Iterator::iterator_type>::type>
+ type;
+
+ static type
+ call(Iterator)
+ {
+ return type();
+ }
+ };
+
+ template <typename Iterator, typename N>
+ struct advance
+ {
+ typedef mpl_iterator<
+ typename mpl::advance<typename Iterator::iterator_type, N>::type>
+ type;
+
+ static type
+ call(Iterator const& /*i*/)
+ {
+ return type();
+ }
+ };
+
+ template <typename I1, typename I2>
+ struct distance :
+ mpl::distance<
+ typename I1::iterator_type
+ , typename I2::iterator_type>
+ {
+ typedef typename
+ mpl::distance<
+ typename I1::iterator_type
+ , typename I2::iterator_type
+ >::type
+ type;
+
+ static type
+ call(I1 const&, I2 const&)
+ {
+ return type();
+ }
+ };
+ };
+}}
+
+#endif
+
+
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2009-2010 Christopher Schmidt
#define BOOST_FUSION_ADAPTED_STD_PAIR_HPP
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
-
-namespace std
-{
- template<class T1, class T2>
- struct pair;
-}
+#include <utility>
BOOST_FUSION_ADAPT_TPL_STRUCT(
(T1)(T2),(std::pair)(T1)(T2),(T1, first)(T2, second))
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
- Copyright (c) 2009-2010 Christopher Schmidt
+ Copyright (c) 2009-2011 Christopher Schmidt
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)
(1)NAME_SEQ, \
struct_tag, \
0, \
- BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \
+ ((0,0)) BOOST_PP_CAT( \
+ BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \
BOOST_FUSION_ADAPT_STRUCT_C)
#define BOOST_FUSION_ADAPT_STRUCT(NAME, ATTRIBUTES) \
(0)(NAME), \
struct_tag, \
0, \
- BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \
+ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0(0,0)ATTRIBUTES,_END), \
BOOST_FUSION_ADAPT_STRUCT_C)
#define BOOST_FUSION_ADAPT_STRUCT_AS_VIEW(NAME, ATTRIBUTES) \
(0)(NAME), \
struct_tag, \
1, \
- BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \
+ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0(0,0)ATTRIBUTES,_END), \
BOOST_FUSION_ADAPT_STRUCT_C)
#endif
/*=============================================================================
Copyright (c) 2001-2009 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
- Copyright (c) 2009-2010 Christopher Schmidt
+ Copyright (c) 2009-2011 Christopher Schmidt
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)
#include <boost/preprocessor/seq/seq.hpp>
#include <boost/preprocessor/tuple/eat.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
#include <boost/mpl/bool.hpp>
#include <boost/mpl/tag.hpp>
#include <boost/mpl/eval_if.hpp>
I, \
ATTRIBUTE)
+#ifdef BOOST_MSVC
+# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAM(R,_,ELEM) \
+ typedef ELEM ELEM;
+# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS_IMPL(SEQ) \
+ BOOST_PP_SEQ_FOR_EACH( \
+ BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAM, \
+ _, \
+ BOOST_PP_SEQ_TAIL(SEQ))
+# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS(SEQ) \
+ BOOST_PP_IF( \
+ BOOST_PP_SEQ_HEAD(SEQ), \
+ BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS_IMPL, \
+ BOOST_PP_TUPLE_EAT(1))(SEQ)
+#else
+# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS(SEQ)
+#endif
+
#define BOOST_FUSION_ADAPT_STRUCT_C_BASE( \
TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,PREFIX,ATTRIBUTE,ATTRIBUTE_TUPEL_SIZE) \
\
template< \
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
> \
- struct struct_member<BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ), I> \
+ struct access::struct_member< \
+ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
+ , I \
+ > \
{ \
- typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \
+ typedef \
+ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) \
+ attribute_type; \
+ BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS( \
+ TEMPLATE_PARAMS_SEQ) \
+ \
+ typedef attribute_type type; \
\
template<typename Seq> \
struct apply \
add_reference< \
typename mpl::eval_if< \
is_const<Seq> \
- , add_const<BOOST_PP_TUPLE_ELEM( \
- ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) \
- > \
- , mpl::identity<BOOST_PP_TUPLE_ELEM( \
- ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) \
- > \
+ , add_const<attribute_type> \
+ , mpl::identity<attribute_type> \
>::type \
>::type \
type; \
\
namespace extension \
{ \
- BOOST_PP_SEQ_FOR_EACH_I_R( \
- 1, \
- BOOST_FUSION_ADAPT_STRUCT_BASE_UNPACK_AND_CALL, \
- (ATTRIBUTES_CALLBACK,TEMPLATE_PARAMS_SEQ,NAME_SEQ), \
- ATTRIBUTES_SEQ) \
+ BOOST_PP_IF( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \
+ BOOST_PP_SEQ_FOR_EACH_I_R, \
+ BOOST_PP_TUPLE_EAT(4))( \
+ 1, \
+ BOOST_FUSION_ADAPT_STRUCT_BASE_UNPACK_AND_CALL, \
+ (ATTRIBUTES_CALLBACK,TEMPLATE_PARAMS_SEQ,NAME_SEQ), \
+ BOOST_PP_SEQ_TAIL(ATTRIBUTES_SEQ)) \
\
template< \
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS( \
TEMPLATE_PARAMS_SEQ) \
> \
struct struct_size<BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)> \
- : mpl::int_<BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)> \
+ : mpl::int_<BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ))> \
{}; \
\
template< \
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2009-2010 Christopher Schmidt
{
template <typename Seq, typename N>
struct apply
- : extension::struct_member<
+ : access::struct_member<
typename remove_const<Seq>::type
, N::value
>::template apply<Seq>
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2009-2010 Christopher Schmidt
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2009-2010 Christopher Schmidt
struct apply
{
typedef typename
- extension::struct_member<
+ access::struct_member<
typename remove_const<typename It::seq_type>::type
, It::index::value
>::template apply<typename It::seq_type>
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2009-2010 Christopher Schmidt
{
struct no_such_member;
- template<typename Seq, int N>
- struct struct_member;
+ struct access
+ {
+ template<typename Seq, int N>
+ struct struct_member;
+
+ template<typename Seq, int N>
+ struct adt_attribute_access;
+ };
+
+ template <typename T, int N, bool Const>
+ struct adt_attribute_proxy;
template<typename Seq, int N>
struct struct_member_name;
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2009-2010 Christopher Schmidt
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2009-2010 Christopher Schmidt
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2009-2010 Christopher Schmidt
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2009-2010 Christopher Schmidt
{
template <typename Seq, typename N>
struct apply
- : struct_member<typename remove_const<Seq>::type, N::value>
+ : access::struct_member<typename remove_const<Seq>::type, N::value>
{};
};
{
template <typename It>
struct apply
- : extension::struct_member<
+ : access::struct_member<
typename remove_const<typename It::seq_type>::type
, It::index::value
>
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_PUSH_BACK_07162005_0235)
+#define FUSION_PUSH_BACK_07162005_0235
+
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/view/joint_view/joint_view.hpp>
+#include <boost/fusion/view/single_view/single_view.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename T>
+ struct push_back
+ {
+ typedef fusion::single_view<typename detail::as_fusion_element<T>::type> single_view;
+ typedef joint_view<Sequence, single_view const> type;
+ };
+ }
+
+ template <typename Sequence, typename T>
+ inline
+ typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::push_back<Sequence const, T>
+ >::type
+ push_back(Sequence const& seq, T const& x)
+ {
+ typedef typename result_of::push_back<Sequence const, T> push_back;
+ typedef typename push_back::single_view single_view;
+ typedef typename push_back::type result;
+ single_view x_(x);
+ return result(seq, x_);
+ }
+}}
+
+#endif
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_PUSH_FRONT_07162005_0749)
+#define FUSION_PUSH_FRONT_07162005_0749
+
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/view/joint_view/joint_view.hpp>
+#include <boost/fusion/view/single_view/single_view.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename T>
+ struct push_front
+ {
+ typedef fusion::single_view<typename detail::as_fusion_element<T>::type> single_view;
+ typedef joint_view<single_view const, Sequence> type;
+ };
+ }
+
+ template <typename Sequence, typename T>
+ inline
+ typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::push_front<Sequence const, T>
+ >::type
+ push_front(Sequence const& seq, T const& x)
+ {
+ typedef typename result_of::push_front<Sequence const, T> push_front;
+ typedef typename push_front::single_view single_view;
+ typedef typename push_front::type result;
+ single_view x_(x);
+ return result(x_, seq);
+ }
+}}
+
+#endif
+
/*=============================================================================
Copyright (c) 2001 Doug Gregor
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_CONS_07172005_0843)
+#define FUSION_CONS_07172005_0843
+
+#include <boost/fusion/container/list/cons_fwd.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/container/list/cons_iterator.hpp>
+#include <boost/fusion/container/list/detail/begin_impl.hpp>
+#include <boost/fusion/container/list/detail/end_impl.hpp>
+#include <boost/fusion/container/list/detail/at_impl.hpp>
+#include <boost/fusion/container/list/detail/value_at_impl.hpp>
+#include <boost/fusion/container/list/detail/empty_impl.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/or.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct cons_tag;
+ struct forward_traversal_tag;
+ struct fusion_sequence_tag;
+
+ struct nil_ : sequence_base<nil_>
+ {
+ typedef mpl::int_<0> size;
+ typedef cons_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
+ typedef forward_traversal_tag category;
+ typedef void_ car_type;
+ typedef void_ cdr_type;
+
+ nil_() {}
+
+ template <typename Iterator>
+ nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
+ {}
+
+ template <typename Iterator>
+ void assign_from_iter(Iterator const& /*iter*/)
+ {
+ }
+ };
+
+ template <typename Car, typename Cdr /*= nil_*/>
+ struct cons : sequence_base<cons<Car, Cdr> >
+ {
+ typedef mpl::int_<Cdr::size::value+1> size;
+ typedef cons_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
+ typedef forward_traversal_tag category;
+ typedef Car car_type;
+ typedef Cdr cdr_type;
+
+ cons()
+ : car(), cdr() {}
+
+ explicit cons(typename detail::call_param<Car>::type in_car)
+ : car(in_car), cdr() {}
+
+ cons(
+ typename detail::call_param<Car>::type in_car
+ , typename detail::call_param<Cdr>::type in_cdr)
+ : car(in_car), cdr(in_cdr) {}
+
+ template <typename Car2, typename Cdr2>
+ cons(cons<Car2, Cdr2> const& rhs)
+ : car(rhs.car), cdr(rhs.cdr) {}
+
+ cons(cons const& rhs)
+ : car(rhs.car), cdr(rhs.cdr) {}
+
+ template <typename Sequence>
+ cons(
+ Sequence const& seq
+ , typename boost::disable_if<
+ mpl::or_<
+ is_convertible<Sequence, cons> // use copy ctor instead
+ , is_convertible<Sequence, Car> // use copy to car instead
+ >
+ >::type* /*dummy*/ = 0
+ )
+ : car(*fusion::begin(seq))
+ , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {}
+
+ template <typename Iterator>
+ cons(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/)
+ : car(*iter)
+ , cdr(fusion::next(iter), mpl::true_()) {}
+
+ template <typename Car2, typename Cdr2>
+ cons& operator=(cons<Car2, Cdr2> const& rhs)
+ {
+ car = rhs.car;
+ cdr = rhs.cdr;
+ return *this;
+ }
+
+ cons& operator=(cons const& rhs)
+ {
+ car = rhs.car;
+ cdr = rhs.cdr;
+ return *this;
+ }
+
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, Car>, cons&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type Iterator;
+ Iterator iter = fusion::begin(seq);
+ this->assign_from_iter(iter);
+ return *this;
+ }
+
+ template <typename Iterator>
+ void assign_from_iter(Iterator const& iter)
+ {
+ car = *iter;
+ cdr.assign_from_iter(fusion::next(iter));
+ }
+
+ car_type car;
+ cdr_type cdr;
+ };
+}}
+
+#endif
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_CONS_FWD_HPP_INCLUDED)
+#define BOOST_FUSION_CONS_FWD_HPP_INCLUDED
+
+namespace boost { namespace fusion
+{
+ struct nil_;
+ #ifndef nil
+ typedef nil_ nil;
+ #endif
+
+ template <typename Car, typename Cdr = nil_>
+ struct cons;
+}}
+
+#endif
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_CONS_ITERATOR_07172005_0849)
+#define FUSION_CONS_ITERATOR_07172005_0849
+
+#include <boost/type_traits/add_const.hpp>
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/container/list/detail/deref_impl.hpp>
+#include <boost/fusion/container/list/detail/next_impl.hpp>
+#include <boost/fusion/container/list/detail/value_of_impl.hpp>
+#include <boost/fusion/container/list/detail/equal_to_impl.hpp>
+#include <boost/fusion/container/list/list_fwd.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil_;
+ struct cons_iterator_tag;
+ struct forward_traversal_tag;
+
+ template <typename Cons>
+ struct cons_iterator_identity;
+
+ template <typename Cons = nil_>
+ struct cons_iterator : iterator_base<cons_iterator<Cons> >
+ {
+ typedef cons_iterator_tag fusion_tag;
+ typedef forward_traversal_tag category;
+ typedef Cons cons_type;
+ typedef cons_iterator_identity<
+ typename add_const<Cons>::type>
+ identity;
+
+ explicit cons_iterator(cons_type& in_cons)
+ : cons(in_cons) {}
+
+ cons_type& cons;
+
+ private:
+ // silence MSVC warning C4512: assignment operator could not be generated
+ cons_iterator& operator= (cons_iterator const&);
+ };
+
+ struct nil_iterator : iterator_base<nil_iterator>
+ {
+ typedef forward_traversal_tag category;
+ typedef cons_iterator_tag fusion_tag;
+ typedef nil_ cons_type;
+ typedef cons_iterator_identity<
+ add_const<nil_>::type>
+ identity;
+ nil_iterator() {}
+ explicit nil_iterator(nil_ const&) {}
+ };
+
+ template <>
+ struct cons_iterator<nil_> : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil_ const&) {}
+ };
+
+ template <>
+ struct cons_iterator<nil_ const> : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil_ const&) {}
+ };
+
+ template <>
+ struct cons_iterator<list<> > : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil_ const&) {}
+ };
+
+ template <>
+ struct cons_iterator<list<> const> : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil_ const&) {}
+ };
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_AT_IMPL_07172005_0726)
+#define FUSION_AT_IMPL_07172005_0726
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
+ template <typename Cons>
+ struct cons_deref
+ {
+ typedef typename Cons::car_type type;
+ };
+
+ template <typename Cons, int I>
+ struct cons_advance
+ {
+ typedef typename
+ cons_advance<Cons, I-1>::type::cdr_type
+ type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 0>
+ {
+ typedef Cons type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 1>
+ {
+ typedef typename Cons::cdr_type type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 2>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type type;
+#endif
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 3>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type _b;
+ typedef typename _b::cdr_type type;
+#endif
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 4>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type _b;
+ typedef typename _b::cdr_type _c;
+ typedef typename _c::cdr_type type;
+#endif
+ };
+ }
+
+ struct cons_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<cons_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename detail::cons_deref<
+ typename detail::cons_advance<Sequence, N::value>::type>::type
+ element;
+
+ typedef typename
+ mpl::if_<
+ is_const<Sequence>
+ , typename detail::cref_result<element>::type
+ , typename detail::ref_result<element>::type
+ >::type
+ type;
+
+ template <typename Cons, int N2>
+ static type
+ call(Cons& s, mpl::int_<N2>)
+ {
+ return call(s.cdr, mpl::int_<N2-1>());
+ }
+
+ template <typename Cons>
+ static type
+ call(Cons& s, mpl::int_<0>)
+ {
+ return s.car;
+ }
+
+ static type
+ call(Sequence& s)
+ {
+ return call(s, mpl::int_<N::value>());
+ }
+ };
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_BEGIN_IMPL_07172005_0824)
+#define FUSION_BEGIN_IMPL_07172005_0824
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil_;
+
+ struct cons_tag;
+
+ template <typename Car, typename Cdr>
+ struct cons;
+
+ template <typename Cons>
+ struct cons_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef cons_iterator<Sequence> type;
+
+ static type
+ call(Sequence& t)
+ {
+ return type(t);
+ }
+ };
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_DEREF_IMPL_07172005_0831)
+#define FUSION_DEREF_IMPL_07172005_0831
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<cons_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::cons_type cons_type;
+ typedef typename cons_type::car_type value_type;
+
+ typedef typename mpl::eval_if<
+ is_const<cons_type>
+ , add_reference<typename add_const<value_type>::type>
+ , add_reference<value_type> >::type
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return i.cons.car;
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2007 Tobias Schwinger
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED)
+#define BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED
+
+#include <boost/type_traits/is_convertible.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+
+ struct nil_;
+
+ template <typename Car, typename Cdr>
+ struct cons;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct empty_impl;
+
+ template <>
+ struct empty_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ : boost::is_convertible<Sequence, nil_>
+ {};
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_END_IMPL_07172005_0828)
+#define FUSION_END_IMPL_07172005_0828
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil_;
+
+ struct cons_tag;
+
+ template <typename Car, typename Cdr>
+ struct cons;
+
+ template <typename Cons>
+ struct cons_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef cons_iterator<
+ typename mpl::if_<is_const<Sequence>, nil_ const, nil_>::type>
+ type;
+
+ static type
+ call(Sequence&)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_EQUAL_TO_IMPL_09172005_1120)
+#define FUSION_EQUAL_TO_IMPL_09172005_1120
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/and.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct equal_to_impl;
+
+ template <>
+ struct equal_to_impl<cons_iterator_tag>
+ {
+ template <typename I1, typename I2>
+ struct apply
+ : is_same<
+ typename I1::identity
+ , typename I2::identity
+ >
+ {
+ };
+ };
+ }
+}}
+
+#endif
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_NEXT_IMPL_07172005_0836)
+#define FUSION_NEXT_IMPL_07172005_0836
+
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ template <typename Cons>
+ struct cons_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct next_impl;
+
+ template <>
+ struct next_impl<cons_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::cons_type cons_type;
+ typedef typename cons_type::cdr_type cdr_type;
+
+ typedef cons_iterator<
+ typename mpl::eval_if<
+ is_const<cons_type>
+ , add_const<cdr_type>
+ , mpl::identity<cdr_type>
+ >::type>
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.cons.cdr);
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_
+ >
+ struct list;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_
+ >
+ struct list;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_ , typename T20 = void_ , typename T21 = void_ , typename T22 = void_ , typename T23 = void_ , typename T24 = void_ , typename T25 = void_ , typename T26 = void_ , typename T27 = void_ , typename T28 = void_ , typename T29 = void_
+ >
+ struct list;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_ , typename T20 = void_ , typename T21 = void_ , typename T22 = void_ , typename T23 = void_ , typename T24 = void_ , typename T25 = void_ , typename T26 = void_ , typename T27 = void_ , typename T28 = void_ , typename T29 = void_ , typename T30 = void_ , typename T31 = void_ , typename T32 = void_ , typename T33 = void_ , typename T34 = void_ , typename T35 = void_ , typename T36 = void_ , typename T37 = void_ , typename T38 = void_ , typename T39 = void_
+ >
+ struct list;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_ , typename T20 = void_ , typename T21 = void_ , typename T22 = void_ , typename T23 = void_ , typename T24 = void_ , typename T25 = void_ , typename T26 = void_ , typename T27 = void_ , typename T28 = void_ , typename T29 = void_ , typename T30 = void_ , typename T31 = void_ , typename T32 = void_ , typename T33 = void_ , typename T34 = void_ , typename T35 = void_ , typename T36 = void_ , typename T37 = void_ , typename T38 = void_ , typename T39 = void_ , typename T40 = void_ , typename T41 = void_ , typename T42 = void_ , typename T43 = void_ , typename T44 = void_ , typename T45 = void_ , typename T46 = void_ , typename T47 = void_ , typename T48 = void_ , typename T49 = void_
+ >
+ struct list;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if FUSION_MAX_LIST_SIZE <= 10
+#include <boost/fusion/container/list/detail/preprocessed/list10_fwd.hpp>
+#elif FUSION_MAX_LIST_SIZE <= 20
+#include <boost/fusion/container/list/detail/preprocessed/list20_fwd.hpp>
+#elif FUSION_MAX_LIST_SIZE <= 30
+#include <boost/fusion/container/list/detail/preprocessed/list30_fwd.hpp>
+#elif FUSION_MAX_LIST_SIZE <= 40
+#include <boost/fusion/container/list/detail/preprocessed/list40_fwd.hpp>
+#elif FUSION_MAX_LIST_SIZE <= 50
+#include <boost/fusion/container/list/detail/preprocessed/list50_fwd.hpp>
+#else
+#error "FUSION_MAX_LIST_SIZE out of bounds for preprocessed headers"
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_REVERSE_CONS_HPP_INCLUDED)
+#define BOOST_FUSION_REVERSE_CONS_HPP_INCLUDED
+
+#include <boost/fusion/container/list/cons_fwd.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ ////////////////////////////////////////////////////////////////////////////
+ template<typename Cons, typename State = nil_>
+ struct reverse_cons;
+
+ template<typename Car, typename Cdr, typename State>
+ struct reverse_cons<cons<Car, Cdr>, State>
+ {
+ typedef reverse_cons<Cdr, cons<Car, State> > impl;
+ typedef typename impl::type type;
+
+ static type call(cons<Car, Cdr> const &cons, State const &state = State())
+ {
+ typedef fusion::cons<Car, State> cdr_type;
+ return impl::call(cons.cdr, cdr_type(cons.car, state));
+ }
+ };
+
+ template<typename State>
+ struct reverse_cons<nil_, State>
+ {
+ typedef State type;
+
+ static State const &call(nil_ const &, State const &state = State())
+ {
+ return state;
+ }
+ };
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_VALUE_AT_IMPL_07172005_0952)
+#define FUSION_VALUE_AT_IMPL_07172005_0952
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<cons_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename
+ mpl::eval_if<
+ mpl::bool_<N::value == 0>
+ , mpl::identity<typename Sequence::car_type>
+ , apply<typename Sequence::cdr_type, mpl::int_<N::value-1> >
+ >::type
+ type;
+ };
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_VALUE_OF_IMPL_07172005_0838)
+#define FUSION_VALUE_OF_IMPL_07172005_0838
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<cons_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::cons_type cons_type;
+ typedef typename cons_type::car_type type;
+ };
+ };
+ }
+
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_LIST_LIMITS_07172005_0112)
+#define FUSION_LIST_LIMITS_07172005_0112
+
+#if !defined(FUSION_MAX_LIST_SIZE)
+# define FUSION_MAX_LIST_SIZE 10
+#else
+# if FUSION_MAX_LIST_SIZE < 3
+# undef FUSION_MAX_LIST_SIZE
+# define FUSION_MAX_LIST_SIZE 10
+# endif
+#endif
+
+#define FUSION_MAX_LIST_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_LIST_SIZE))
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_LIST_FORWARD_07172005_0224)
+#define FUSION_LIST_FORWARD_07172005_0224
+
+#include <boost/fusion/container/list/limits.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/list/detail/preprocessed/list_fwd.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/list" FUSION_MAX_LIST_SIZE_STR "_fwd.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_LIST_SIZE, typename T, void_)
+ >
+ struct list;
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
template <typename Sequence, typename N>
struct apply
{
- typedef mpl::at<typename Sequence::types, N> element;
+ typedef typename mpl::at<typename Sequence::types, N>::type element;
typedef typename detail::ref_result<element>::type type;
static type
template <typename Sequence, typename N>
struct apply <Sequence const, N>
{
- typedef mpl::at<typename Sequence::types, N> element;
+ typedef typename mpl::at<typename Sequence::types, N>::type element;
typedef typename detail::cref_result<element>::type type;
static type
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#include <boost/mpl/at.hpp>
#include <boost/fusion/support/detail/access.hpp>
#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/if.hpp>
namespace boost { namespace fusion
{
typedef typename Iterator::vector vector;
typedef typename Iterator::index index;
typedef typename mpl::at<
- typename vector::types, index>
+ typename vector::types, index>::type
element;
typedef typename
- mpl::eval_if<
+ mpl::if_<
is_const<vector>
- , fusion::detail::cref_result<element>
- , fusion::detail::ref_result<element>
+ , typename fusion::detail::cref_result<element>::type
+ , typename fusion::detail::ref_result<element>::type
>::type
type;
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if FUSION_MAX_VECTOR_SIZE <= 10
+#include <boost/fusion/container/vector/detail/preprocessed/vvector10.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 20
+#include <boost/fusion/container/vector/detail/preprocessed/vvector20.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 30
+#include <boost/fusion/container/vector/detail/preprocessed/vvector30.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 40
+#include <boost/fusion/container/vector/detail/preprocessed/vvector40.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 50
+#include <boost/fusion/container/vector/detail/preprocessed/vvector50.hpp>
+#else
+#error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers"
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ struct vector_data1
+ {
+ vector_data1()
+ : m0() {}
+ vector_data1(
+ typename detail::call_param<T0 >::type _0)
+ : m0(_0) {}
+ vector_data1(
+ vector_data1 const& other)
+ : m0(other.m0) {}
+ vector_data1&
+ operator=(vector_data1 const& vec)
+ {
+ this->m0 = vec.m0;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data1
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+
+ return vector_data1(*i0);
+ }
+ template <typename Sequence>
+ static vector_data1
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+
+ return vector_data1(*i0);
+ }
+ T0 m0;
+ };
+ template <typename T0>
+ struct vector1
+ : vector_data1<T0>
+ , sequence_base<vector1<T0> >
+ {
+ typedef vector1<T0> this_type;
+ typedef vector_data1<T0> base_type;
+ typedef mpl::vector1<T0> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<1> size;
+ vector1() {}
+ explicit
+ vector1(
+ typename detail::call_param<T0 >::type _0)
+ : base_type(_0) {}
+ template <typename U0>
+ vector1(
+ vector1<U0> const& vec)
+ : base_type(vec.m0) {}
+ template <typename Sequence>
+ vector1(
+ Sequence const& seq
+ , typename boost::disable_if<is_convertible<Sequence, T0> >::type* = 0
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector1(
+ Sequence& seq
+ , typename boost::disable_if<is_convertible<Sequence, T0> >::type* = 0
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0>
+ vector1&
+ operator=(vector1<U0> const& vec)
+ {
+ this->m0 = vec.m0;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+
+ this->m0 = *i0;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1>
+ struct vector_data2
+ {
+ vector_data2()
+ : m0() , m1() {}
+ vector_data2(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : m0(_0) , m1(_1) {}
+ vector_data2(
+ vector_data2 const& other)
+ : m0(other.m0) , m1(other.m1) {}
+ vector_data2&
+ operator=(vector_data2 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data2
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0);
+ return vector_data2(*i0 , *i1);
+ }
+ template <typename Sequence>
+ static vector_data2
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0);
+ return vector_data2(*i0 , *i1);
+ }
+ T0 m0; T1 m1;
+ };
+ template <typename T0 , typename T1>
+ struct vector2
+ : vector_data2<T0 , T1>
+ , sequence_base<vector2<T0 , T1> >
+ {
+ typedef vector2<T0 , T1> this_type;
+ typedef vector_data2<T0 , T1> base_type;
+ typedef mpl::vector2<T0 , T1> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<2> size;
+ vector2() {}
+ vector2(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : base_type(_0 , _1) {}
+ template <typename U0 , typename U1>
+ vector2(
+ vector2<U0 , U1> const& vec)
+ : base_type(vec.m0 , vec.m1) {}
+ template <typename Sequence>
+ vector2(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector2(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1>
+ vector2&
+ operator=(vector2<U0 , U1> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0);
+ this->m0 = *i0; this->m1 = *i1;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2>
+ struct vector_data3
+ {
+ vector_data3()
+ : m0() , m1() , m2() {}
+ vector_data3(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : m0(_0) , m1(_1) , m2(_2) {}
+ vector_data3(
+ vector_data3 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) {}
+ vector_data3&
+ operator=(vector_data3 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data3
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1);
+ return vector_data3(*i0 , *i1 , *i2);
+ }
+ template <typename Sequence>
+ static vector_data3
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1);
+ return vector_data3(*i0 , *i1 , *i2);
+ }
+ T0 m0; T1 m1; T2 m2;
+ };
+ template <typename T0 , typename T1 , typename T2>
+ struct vector3
+ : vector_data3<T0 , T1 , T2>
+ , sequence_base<vector3<T0 , T1 , T2> >
+ {
+ typedef vector3<T0 , T1 , T2> this_type;
+ typedef vector_data3<T0 , T1 , T2> base_type;
+ typedef mpl::vector3<T0 , T1 , T2> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<3> size;
+ vector3() {}
+ vector3(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : base_type(_0 , _1 , _2) {}
+ template <typename U0 , typename U1 , typename U2>
+ vector3(
+ vector3<U0 , U1 , U2> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2) {}
+ template <typename Sequence>
+ vector3(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector3(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2>
+ vector3&
+ operator=(vector3<U0 , U1 , U2> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ struct vector_data4
+ {
+ vector_data4()
+ : m0() , m1() , m2() , m3() {}
+ vector_data4(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) {}
+ vector_data4(
+ vector_data4 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) {}
+ vector_data4&
+ operator=(vector_data4 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data4
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2);
+ return vector_data4(*i0 , *i1 , *i2 , *i3);
+ }
+ template <typename Sequence>
+ static vector_data4
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2);
+ return vector_data4(*i0 , *i1 , *i2 , *i3);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ struct vector4
+ : vector_data4<T0 , T1 , T2 , T3>
+ , sequence_base<vector4<T0 , T1 , T2 , T3> >
+ {
+ typedef vector4<T0 , T1 , T2 , T3> this_type;
+ typedef vector_data4<T0 , T1 , T2 , T3> base_type;
+ typedef mpl::vector4<T0 , T1 , T2 , T3> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<4> size;
+ vector4() {}
+ vector4(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : base_type(_0 , _1 , _2 , _3) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ vector4(
+ vector4<U0 , U1 , U2 , U3> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3) {}
+ template <typename Sequence>
+ vector4(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector4(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ vector4&
+ operator=(vector4<U0 , U1 , U2 , U3> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ struct vector_data5
+ {
+ vector_data5()
+ : m0() , m1() , m2() , m3() , m4() {}
+ vector_data5(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) {}
+ vector_data5(
+ vector_data5 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) {}
+ vector_data5&
+ operator=(vector_data5 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data5
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3);
+ return vector_data5(*i0 , *i1 , *i2 , *i3 , *i4);
+ }
+ template <typename Sequence>
+ static vector_data5
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3);
+ return vector_data5(*i0 , *i1 , *i2 , *i3 , *i4);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ struct vector5
+ : vector_data5<T0 , T1 , T2 , T3 , T4>
+ , sequence_base<vector5<T0 , T1 , T2 , T3 , T4> >
+ {
+ typedef vector5<T0 , T1 , T2 , T3 , T4> this_type;
+ typedef vector_data5<T0 , T1 , T2 , T3 , T4> base_type;
+ typedef mpl::vector5<T0 , T1 , T2 , T3 , T4> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<5> size;
+ vector5() {}
+ vector5(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : base_type(_0 , _1 , _2 , _3 , _4) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ vector5(
+ vector5<U0 , U1 , U2 , U3 , U4> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4) {}
+ template <typename Sequence>
+ vector5(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector5(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ vector5&
+ operator=(vector5<U0 , U1 , U2 , U3 , U4> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ struct vector_data6
+ {
+ vector_data6()
+ : m0() , m1() , m2() , m3() , m4() , m5() {}
+ vector_data6(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) {}
+ vector_data6(
+ vector_data6 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) {}
+ vector_data6&
+ operator=(vector_data6 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data6
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4);
+ return vector_data6(*i0 , *i1 , *i2 , *i3 , *i4 , *i5);
+ }
+ template <typename Sequence>
+ static vector_data6
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4);
+ return vector_data6(*i0 , *i1 , *i2 , *i3 , *i4 , *i5);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ struct vector6
+ : vector_data6<T0 , T1 , T2 , T3 , T4 , T5>
+ , sequence_base<vector6<T0 , T1 , T2 , T3 , T4 , T5> >
+ {
+ typedef vector6<T0 , T1 , T2 , T3 , T4 , T5> this_type;
+ typedef vector_data6<T0 , T1 , T2 , T3 , T4 , T5> base_type;
+ typedef mpl::vector6<T0 , T1 , T2 , T3 , T4 , T5> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<6> size;
+ vector6() {}
+ vector6(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ vector6(
+ vector6<U0 , U1 , U2 , U3 , U4 , U5> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5) {}
+ template <typename Sequence>
+ vector6(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector6(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ vector6&
+ operator=(vector6<U0 , U1 , U2 , U3 , U4 , U5> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ struct vector_data7
+ {
+ vector_data7()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() {}
+ vector_data7(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) {}
+ vector_data7(
+ vector_data7 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) {}
+ vector_data7&
+ operator=(vector_data7 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data7
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5);
+ return vector_data7(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6);
+ }
+ template <typename Sequence>
+ static vector_data7
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5);
+ return vector_data7(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ struct vector7
+ : vector_data7<T0 , T1 , T2 , T3 , T4 , T5 , T6>
+ , sequence_base<vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> >
+ {
+ typedef vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> this_type;
+ typedef vector_data7<T0 , T1 , T2 , T3 , T4 , T5 , T6> base_type;
+ typedef mpl::vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<7> size;
+ vector7() {}
+ vector7(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ vector7(
+ vector7<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6) {}
+ template <typename Sequence>
+ vector7(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector7(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ vector7&
+ operator=(vector7<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ struct vector_data8
+ {
+ vector_data8()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() {}
+ vector_data8(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) {}
+ vector_data8(
+ vector_data8 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) {}
+ vector_data8&
+ operator=(vector_data8 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data8
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6);
+ return vector_data8(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7);
+ }
+ template <typename Sequence>
+ static vector_data8
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6);
+ return vector_data8(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ struct vector8
+ : vector_data8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7>
+ , sequence_base<vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> >
+ {
+ typedef vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> this_type;
+ typedef vector_data8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> base_type;
+ typedef mpl::vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<8> size;
+ vector8() {}
+ vector8(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ vector8(
+ vector8<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7) {}
+ template <typename Sequence>
+ vector8(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector8(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ vector8&
+ operator=(vector8<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ struct vector_data9
+ {
+ vector_data9()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() {}
+ vector_data9(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) {}
+ vector_data9(
+ vector_data9 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) {}
+ vector_data9&
+ operator=(vector_data9 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data9
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7);
+ return vector_data9(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8);
+ }
+ template <typename Sequence>
+ static vector_data9
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7);
+ return vector_data9(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ struct vector9
+ : vector_data9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8>
+ , sequence_base<vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> >
+ {
+ typedef vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> this_type;
+ typedef vector_data9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> base_type;
+ typedef mpl::vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<9> size;
+ vector9() {}
+ vector9(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ vector9(
+ vector9<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8) {}
+ template <typename Sequence>
+ vector9(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector9(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ vector9&
+ operator=(vector9<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ struct vector_data10
+ {
+ vector_data10()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() {}
+ vector_data10(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) {}
+ vector_data10(
+ vector_data10 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) {}
+ vector_data10&
+ operator=(vector_data10 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data10
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8);
+ return vector_data10(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9);
+ }
+ template <typename Sequence>
+ static vector_data10
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8);
+ return vector_data10(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ struct vector10
+ : vector_data10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>
+ , sequence_base<vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> >
+ {
+ typedef vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> this_type;
+ typedef vector_data10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> base_type;
+ typedef mpl::vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<10> size;
+ vector10() {}
+ vector10(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ vector10(
+ vector10<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9) {}
+ template <typename Sequence>
+ vector10(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector10(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ vector10&
+ operator=(vector10<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+
+ template <typename T0>
+ struct vector1;
+ template <typename T0 , typename T1>
+ struct vector2;
+ template <typename T0 , typename T1 , typename T2>
+ struct vector3;
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ struct vector4;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ struct vector5;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ struct vector6;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ struct vector7;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ struct vector8;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ struct vector9;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ struct vector10;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+ struct fusion_sequence_tag;
+ struct random_access_traversal_tag;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ struct vector_data11
+ {
+ vector_data11()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() {}
+ vector_data11(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) {}
+ vector_data11(
+ vector_data11 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) {}
+ vector_data11&
+ operator=(vector_data11 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data11
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9);
+ return vector_data11(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10);
+ }
+ template <typename Sequence>
+ static vector_data11
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9);
+ return vector_data11(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ struct vector11
+ : vector_data11<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10>
+ , sequence_base<vector11<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10> >
+ {
+ typedef vector11<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10> this_type;
+ typedef vector_data11<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10> base_type;
+ typedef mpl::vector11<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<11> size;
+ vector11() {}
+ vector11(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
+ vector11(
+ vector11<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10) {}
+ template <typename Sequence>
+ vector11(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector11(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
+ vector11&
+ operator=(vector11<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ struct vector_data12
+ {
+ vector_data12()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() {}
+ vector_data12(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) {}
+ vector_data12(
+ vector_data12 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) {}
+ vector_data12&
+ operator=(vector_data12 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data12
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10);
+ return vector_data12(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11);
+ }
+ template <typename Sequence>
+ static vector_data12
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10);
+ return vector_data12(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ struct vector12
+ : vector_data12<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11>
+ , sequence_base<vector12<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11> >
+ {
+ typedef vector12<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11> this_type;
+ typedef vector_data12<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11> base_type;
+ typedef mpl::vector12<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<12> size;
+ vector12() {}
+ vector12(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
+ vector12(
+ vector12<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11) {}
+ template <typename Sequence>
+ vector12(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector12(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
+ vector12&
+ operator=(vector12<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ struct vector_data13
+ {
+ vector_data13()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() {}
+ vector_data13(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) {}
+ vector_data13(
+ vector_data13 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) {}
+ vector_data13&
+ operator=(vector_data13 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data13
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11);
+ return vector_data13(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12);
+ }
+ template <typename Sequence>
+ static vector_data13
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11);
+ return vector_data13(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ struct vector13
+ : vector_data13<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12>
+ , sequence_base<vector13<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12> >
+ {
+ typedef vector13<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12> this_type;
+ typedef vector_data13<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12> base_type;
+ typedef mpl::vector13<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<13> size;
+ vector13() {}
+ vector13(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
+ vector13(
+ vector13<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12) {}
+ template <typename Sequence>
+ vector13(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector13(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
+ vector13&
+ operator=(vector13<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ struct vector_data14
+ {
+ vector_data14()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() {}
+ vector_data14(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) {}
+ vector_data14(
+ vector_data14 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) {}
+ vector_data14&
+ operator=(vector_data14 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data14
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12);
+ return vector_data14(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13);
+ }
+ template <typename Sequence>
+ static vector_data14
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12);
+ return vector_data14(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ struct vector14
+ : vector_data14<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13>
+ , sequence_base<vector14<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13> >
+ {
+ typedef vector14<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13> this_type;
+ typedef vector_data14<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13> base_type;
+ typedef mpl::vector14<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<14> size;
+ vector14() {}
+ vector14(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
+ vector14(
+ vector14<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13) {}
+ template <typename Sequence>
+ vector14(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector14(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
+ vector14&
+ operator=(vector14<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ struct vector_data15
+ {
+ vector_data15()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() {}
+ vector_data15(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) {}
+ vector_data15(
+ vector_data15 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) {}
+ vector_data15&
+ operator=(vector_data15 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data15
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13);
+ return vector_data15(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14);
+ }
+ template <typename Sequence>
+ static vector_data15
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13);
+ return vector_data15(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ struct vector15
+ : vector_data15<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14>
+ , sequence_base<vector15<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14> >
+ {
+ typedef vector15<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14> this_type;
+ typedef vector_data15<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14> base_type;
+ typedef mpl::vector15<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<15> size;
+ vector15() {}
+ vector15(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
+ vector15(
+ vector15<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14) {}
+ template <typename Sequence>
+ vector15(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector15(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
+ vector15&
+ operator=(vector15<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ struct vector_data16
+ {
+ vector_data16()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() {}
+ vector_data16(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) {}
+ vector_data16(
+ vector_data16 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) {}
+ vector_data16&
+ operator=(vector_data16 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data16
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14);
+ return vector_data16(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15);
+ }
+ template <typename Sequence>
+ static vector_data16
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14);
+ return vector_data16(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ struct vector16
+ : vector_data16<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15>
+ , sequence_base<vector16<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15> >
+ {
+ typedef vector16<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15> this_type;
+ typedef vector_data16<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15> base_type;
+ typedef mpl::vector16<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<16> size;
+ vector16() {}
+ vector16(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
+ vector16(
+ vector16<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15) {}
+ template <typename Sequence>
+ vector16(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector16(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
+ vector16&
+ operator=(vector16<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ struct vector_data17
+ {
+ vector_data17()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() {}
+ vector_data17(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) {}
+ vector_data17(
+ vector_data17 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) {}
+ vector_data17&
+ operator=(vector_data17 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data17
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15);
+ return vector_data17(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16);
+ }
+ template <typename Sequence>
+ static vector_data17
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15);
+ return vector_data17(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ struct vector17
+ : vector_data17<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16>
+ , sequence_base<vector17<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16> >
+ {
+ typedef vector17<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16> this_type;
+ typedef vector_data17<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16> base_type;
+ typedef mpl::vector17<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<17> size;
+ vector17() {}
+ vector17(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
+ vector17(
+ vector17<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16) {}
+ template <typename Sequence>
+ vector17(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector17(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
+ vector17&
+ operator=(vector17<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ struct vector_data18
+ {
+ vector_data18()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() {}
+ vector_data18(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) {}
+ vector_data18(
+ vector_data18 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) {}
+ vector_data18&
+ operator=(vector_data18 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data18
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16);
+ return vector_data18(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17);
+ }
+ template <typename Sequence>
+ static vector_data18
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16);
+ return vector_data18(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ struct vector18
+ : vector_data18<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17>
+ , sequence_base<vector18<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17> >
+ {
+ typedef vector18<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17> this_type;
+ typedef vector_data18<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17> base_type;
+ typedef mpl::vector18<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<18> size;
+ vector18() {}
+ vector18(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
+ vector18(
+ vector18<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17) {}
+ template <typename Sequence>
+ vector18(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector18(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
+ vector18&
+ operator=(vector18<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ struct vector_data19
+ {
+ vector_data19()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() {}
+ vector_data19(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) {}
+ vector_data19(
+ vector_data19 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) {}
+ vector_data19&
+ operator=(vector_data19 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data19
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17);
+ return vector_data19(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18);
+ }
+ template <typename Sequence>
+ static vector_data19
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17);
+ return vector_data19(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ struct vector19
+ : vector_data19<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18>
+ , sequence_base<vector19<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18> >
+ {
+ typedef vector19<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18> this_type;
+ typedef vector_data19<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18> base_type;
+ typedef mpl::vector19<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<19> size;
+ vector19() {}
+ vector19(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
+ vector19(
+ vector19<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18) {}
+ template <typename Sequence>
+ vector19(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector19(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
+ vector19&
+ operator=(vector19<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ struct vector_data20
+ {
+ vector_data20()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() {}
+ vector_data20(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) {}
+ vector_data20(
+ vector_data20 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) {}
+ vector_data20&
+ operator=(vector_data20 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data20
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18);
+ return vector_data20(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19);
+ }
+ template <typename Sequence>
+ static vector_data20
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18);
+ return vector_data20(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ struct vector20
+ : vector_data20<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19>
+ , sequence_base<vector20<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> >
+ {
+ typedef vector20<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> this_type;
+ typedef vector_data20<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> base_type;
+ typedef mpl::vector20<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<20> size;
+ vector20() {}
+ vector20(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ vector20(
+ vector20<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19) {}
+ template <typename Sequence>
+ vector20(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector20(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ vector20&
+ operator=(vector20<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ struct vector11;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ struct vector12;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ struct vector13;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ struct vector14;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ struct vector15;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ struct vector16;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ struct vector17;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ struct vector18;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ struct vector19;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ struct vector20;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+ struct fusion_sequence_tag;
+ struct random_access_traversal_tag;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ struct vector_data21
+ {
+ vector_data21()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() {}
+ vector_data21(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) {}
+ vector_data21(
+ vector_data21 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) {}
+ vector_data21&
+ operator=(vector_data21 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data21
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19);
+ return vector_data21(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20);
+ }
+ template <typename Sequence>
+ static vector_data21
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19);
+ return vector_data21(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ struct vector21
+ : vector_data21<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20>
+ , sequence_base<vector21<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20> >
+ {
+ typedef vector21<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20> this_type;
+ typedef vector_data21<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20> base_type;
+ typedef mpl::vector21<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<21> size;
+ vector21() {}
+ vector21(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20>
+ vector21(
+ vector21<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20) {}
+ template <typename Sequence>
+ vector21(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector21(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20>
+ vector21&
+ operator=(vector21<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ struct vector_data22
+ {
+ vector_data22()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() {}
+ vector_data22(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) {}
+ vector_data22(
+ vector_data22 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) {}
+ vector_data22&
+ operator=(vector_data22 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data22
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20);
+ return vector_data22(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21);
+ }
+ template <typename Sequence>
+ static vector_data22
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20);
+ return vector_data22(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ struct vector22
+ : vector_data22<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21>
+ , sequence_base<vector22<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21> >
+ {
+ typedef vector22<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21> this_type;
+ typedef vector_data22<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21> base_type;
+ typedef mpl::vector22<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<22> size;
+ vector22() {}
+ vector22(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21>
+ vector22(
+ vector22<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21) {}
+ template <typename Sequence>
+ vector22(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector22(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21>
+ vector22&
+ operator=(vector22<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ struct vector_data23
+ {
+ vector_data23()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() {}
+ vector_data23(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) {}
+ vector_data23(
+ vector_data23 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) {}
+ vector_data23&
+ operator=(vector_data23 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data23
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21);
+ return vector_data23(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22);
+ }
+ template <typename Sequence>
+ static vector_data23
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21);
+ return vector_data23(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ struct vector23
+ : vector_data23<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22>
+ , sequence_base<vector23<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22> >
+ {
+ typedef vector23<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22> this_type;
+ typedef vector_data23<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22> base_type;
+ typedef mpl::vector23<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<23> size;
+ vector23() {}
+ vector23(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22>
+ vector23(
+ vector23<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22) {}
+ template <typename Sequence>
+ vector23(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector23(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22>
+ vector23&
+ operator=(vector23<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ struct vector_data24
+ {
+ vector_data24()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() {}
+ vector_data24(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) {}
+ vector_data24(
+ vector_data24 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) {}
+ vector_data24&
+ operator=(vector_data24 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data24
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22);
+ return vector_data24(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23);
+ }
+ template <typename Sequence>
+ static vector_data24
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22);
+ return vector_data24(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ struct vector24
+ : vector_data24<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23>
+ , sequence_base<vector24<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23> >
+ {
+ typedef vector24<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23> this_type;
+ typedef vector_data24<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23> base_type;
+ typedef mpl::vector24<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<24> size;
+ vector24() {}
+ vector24(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23>
+ vector24(
+ vector24<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23) {}
+ template <typename Sequence>
+ vector24(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector24(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23>
+ vector24&
+ operator=(vector24<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ struct vector_data25
+ {
+ vector_data25()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() {}
+ vector_data25(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) {}
+ vector_data25(
+ vector_data25 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) {}
+ vector_data25&
+ operator=(vector_data25 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data25
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23);
+ return vector_data25(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24);
+ }
+ template <typename Sequence>
+ static vector_data25
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23);
+ return vector_data25(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ struct vector25
+ : vector_data25<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24>
+ , sequence_base<vector25<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24> >
+ {
+ typedef vector25<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24> this_type;
+ typedef vector_data25<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24> base_type;
+ typedef mpl::vector25<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<25> size;
+ vector25() {}
+ vector25(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24>
+ vector25(
+ vector25<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24) {}
+ template <typename Sequence>
+ vector25(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector25(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24>
+ vector25&
+ operator=(vector25<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ struct vector_data26
+ {
+ vector_data26()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() {}
+ vector_data26(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) {}
+ vector_data26(
+ vector_data26 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) {}
+ vector_data26&
+ operator=(vector_data26 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data26
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24);
+ return vector_data26(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25);
+ }
+ template <typename Sequence>
+ static vector_data26
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24);
+ return vector_data26(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ struct vector26
+ : vector_data26<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25>
+ , sequence_base<vector26<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25> >
+ {
+ typedef vector26<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25> this_type;
+ typedef vector_data26<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25> base_type;
+ typedef mpl::vector26<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<26> size;
+ vector26() {}
+ vector26(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25>
+ vector26(
+ vector26<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25) {}
+ template <typename Sequence>
+ vector26(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector26(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25>
+ vector26&
+ operator=(vector26<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ struct vector_data27
+ {
+ vector_data27()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() {}
+ vector_data27(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) {}
+ vector_data27(
+ vector_data27 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) {}
+ vector_data27&
+ operator=(vector_data27 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data27
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25);
+ return vector_data27(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26);
+ }
+ template <typename Sequence>
+ static vector_data27
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25);
+ return vector_data27(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ struct vector27
+ : vector_data27<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26>
+ , sequence_base<vector27<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26> >
+ {
+ typedef vector27<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26> this_type;
+ typedef vector_data27<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26> base_type;
+ typedef mpl::vector27<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<27> size;
+ vector27() {}
+ vector27(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26>
+ vector27(
+ vector27<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26) {}
+ template <typename Sequence>
+ vector27(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector27(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26>
+ vector27&
+ operator=(vector27<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ struct vector_data28
+ {
+ vector_data28()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() {}
+ vector_data28(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) {}
+ vector_data28(
+ vector_data28 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) {}
+ vector_data28&
+ operator=(vector_data28 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data28
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26);
+ return vector_data28(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27);
+ }
+ template <typename Sequence>
+ static vector_data28
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26);
+ return vector_data28(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ struct vector28
+ : vector_data28<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27>
+ , sequence_base<vector28<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27> >
+ {
+ typedef vector28<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27> this_type;
+ typedef vector_data28<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27> base_type;
+ typedef mpl::vector28<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<28> size;
+ vector28() {}
+ vector28(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27>
+ vector28(
+ vector28<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27) {}
+ template <typename Sequence>
+ vector28(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector28(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27>
+ vector28&
+ operator=(vector28<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ struct vector_data29
+ {
+ vector_data29()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() {}
+ vector_data29(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) {}
+ vector_data29(
+ vector_data29 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) {}
+ vector_data29&
+ operator=(vector_data29 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data29
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27);
+ return vector_data29(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28);
+ }
+ template <typename Sequence>
+ static vector_data29
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27);
+ return vector_data29(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ struct vector29
+ : vector_data29<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28>
+ , sequence_base<vector29<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28> >
+ {
+ typedef vector29<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28> this_type;
+ typedef vector_data29<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28> base_type;
+ typedef mpl::vector29<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<29> size;
+ vector29() {}
+ vector29(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28>
+ vector29(
+ vector29<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28) {}
+ template <typename Sequence>
+ vector29(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector29(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28>
+ vector29&
+ operator=(vector29<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ struct vector_data30
+ {
+ vector_data30()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() {}
+ vector_data30(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) {}
+ vector_data30(
+ vector_data30 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) {}
+ vector_data30&
+ operator=(vector_data30 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data30
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28);
+ return vector_data30(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29);
+ }
+ template <typename Sequence>
+ static vector_data30
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28);
+ return vector_data30(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ struct vector30
+ : vector_data30<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29>
+ , sequence_base<vector30<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> >
+ {
+ typedef vector30<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> this_type;
+ typedef vector_data30<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> base_type;
+ typedef mpl::vector30<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<30> size;
+ vector30() {}
+ vector30(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ vector30(
+ vector30<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29) {}
+ template <typename Sequence>
+ vector30(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector30(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ vector30&
+ operator=(vector30<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ struct vector21;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ struct vector22;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ struct vector23;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ struct vector24;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ struct vector25;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ struct vector26;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ struct vector27;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ struct vector28;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ struct vector29;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ struct vector30;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+ struct fusion_sequence_tag;
+ struct random_access_traversal_tag;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30>
+ struct vector_data31
+ {
+ vector_data31()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() {}
+ vector_data31(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) {}
+ vector_data31(
+ vector_data31 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) {}
+ vector_data31&
+ operator=(vector_data31 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data31
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29);
+ return vector_data31(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30);
+ }
+ template <typename Sequence>
+ static vector_data31
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29);
+ return vector_data31(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30>
+ struct vector31
+ : vector_data31<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30>
+ , sequence_base<vector31<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30> >
+ {
+ typedef vector31<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30> this_type;
+ typedef vector_data31<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30> base_type;
+ typedef mpl::vector31<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<31> size;
+ vector31() {}
+ vector31(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30>
+ vector31(
+ vector31<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30) {}
+ template <typename Sequence>
+ vector31(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector31(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30>
+ vector31&
+ operator=(vector31<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31>
+ struct vector_data32
+ {
+ vector_data32()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() {}
+ vector_data32(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) {}
+ vector_data32(
+ vector_data32 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) {}
+ vector_data32&
+ operator=(vector_data32 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data32
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30);
+ return vector_data32(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31);
+ }
+ template <typename Sequence>
+ static vector_data32
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30);
+ return vector_data32(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31>
+ struct vector32
+ : vector_data32<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31>
+ , sequence_base<vector32<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31> >
+ {
+ typedef vector32<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31> this_type;
+ typedef vector_data32<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31> base_type;
+ typedef mpl::vector32<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<32> size;
+ vector32() {}
+ vector32(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31>
+ vector32(
+ vector32<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31) {}
+ template <typename Sequence>
+ vector32(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector32(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31>
+ vector32&
+ operator=(vector32<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32>
+ struct vector_data33
+ {
+ vector_data33()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() {}
+ vector_data33(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) {}
+ vector_data33(
+ vector_data33 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) {}
+ vector_data33&
+ operator=(vector_data33 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data33
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31);
+ return vector_data33(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32);
+ }
+ template <typename Sequence>
+ static vector_data33
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31);
+ return vector_data33(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32>
+ struct vector33
+ : vector_data33<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32>
+ , sequence_base<vector33<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32> >
+ {
+ typedef vector33<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32> this_type;
+ typedef vector_data33<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32> base_type;
+ typedef mpl::vector33<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<33> size;
+ vector33() {}
+ vector33(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32>
+ vector33(
+ vector33<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32) {}
+ template <typename Sequence>
+ vector33(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector33(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32>
+ vector33&
+ operator=(vector33<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33>
+ struct vector_data34
+ {
+ vector_data34()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() {}
+ vector_data34(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) {}
+ vector_data34(
+ vector_data34 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) {}
+ vector_data34&
+ operator=(vector_data34 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data34
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32);
+ return vector_data34(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33);
+ }
+ template <typename Sequence>
+ static vector_data34
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32);
+ return vector_data34(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33>
+ struct vector34
+ : vector_data34<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33>
+ , sequence_base<vector34<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33> >
+ {
+ typedef vector34<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33> this_type;
+ typedef vector_data34<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33> base_type;
+ typedef mpl::vector34<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<34> size;
+ vector34() {}
+ vector34(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33>
+ vector34(
+ vector34<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33) {}
+ template <typename Sequence>
+ vector34(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector34(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33>
+ vector34&
+ operator=(vector34<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34>
+ struct vector_data35
+ {
+ vector_data35()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() {}
+ vector_data35(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) {}
+ vector_data35(
+ vector_data35 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) {}
+ vector_data35&
+ operator=(vector_data35 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data35
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33);
+ return vector_data35(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34);
+ }
+ template <typename Sequence>
+ static vector_data35
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33);
+ return vector_data35(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34>
+ struct vector35
+ : vector_data35<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34>
+ , sequence_base<vector35<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34> >
+ {
+ typedef vector35<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34> this_type;
+ typedef vector_data35<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34> base_type;
+ typedef mpl::vector35<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<35> size;
+ vector35() {}
+ vector35(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34>
+ vector35(
+ vector35<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34) {}
+ template <typename Sequence>
+ vector35(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector35(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34>
+ vector35&
+ operator=(vector35<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35>
+ struct vector_data36
+ {
+ vector_data36()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() {}
+ vector_data36(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) {}
+ vector_data36(
+ vector_data36 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) {}
+ vector_data36&
+ operator=(vector_data36 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data36
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34);
+ return vector_data36(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35);
+ }
+ template <typename Sequence>
+ static vector_data36
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34);
+ return vector_data36(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35>
+ struct vector36
+ : vector_data36<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35>
+ , sequence_base<vector36<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35> >
+ {
+ typedef vector36<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35> this_type;
+ typedef vector_data36<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35> base_type;
+ typedef mpl::vector36<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<36> size;
+ vector36() {}
+ vector36(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35>
+ vector36(
+ vector36<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35) {}
+ template <typename Sequence>
+ vector36(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector36(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35>
+ vector36&
+ operator=(vector36<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36>
+ struct vector_data37
+ {
+ vector_data37()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() {}
+ vector_data37(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) {}
+ vector_data37(
+ vector_data37 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) {}
+ vector_data37&
+ operator=(vector_data37 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data37
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35);
+ return vector_data37(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36);
+ }
+ template <typename Sequence>
+ static vector_data37
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35);
+ return vector_data37(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36>
+ struct vector37
+ : vector_data37<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36>
+ , sequence_base<vector37<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36> >
+ {
+ typedef vector37<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36> this_type;
+ typedef vector_data37<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36> base_type;
+ typedef mpl::vector37<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<37> size;
+ vector37() {}
+ vector37(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36>
+ vector37(
+ vector37<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36) {}
+ template <typename Sequence>
+ vector37(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector37(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36>
+ vector37&
+ operator=(vector37<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37>
+ struct vector_data38
+ {
+ vector_data38()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() {}
+ vector_data38(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) {}
+ vector_data38(
+ vector_data38 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) {}
+ vector_data38&
+ operator=(vector_data38 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data38
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36);
+ return vector_data38(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37);
+ }
+ template <typename Sequence>
+ static vector_data38
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36);
+ return vector_data38(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37>
+ struct vector38
+ : vector_data38<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37>
+ , sequence_base<vector38<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37> >
+ {
+ typedef vector38<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37> this_type;
+ typedef vector_data38<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37> base_type;
+ typedef mpl::vector38<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<38> size;
+ vector38() {}
+ vector38(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37>
+ vector38(
+ vector38<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37) {}
+ template <typename Sequence>
+ vector38(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector38(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37>
+ vector38&
+ operator=(vector38<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38>
+ struct vector_data39
+ {
+ vector_data39()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() {}
+ vector_data39(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) {}
+ vector_data39(
+ vector_data39 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) {}
+ vector_data39&
+ operator=(vector_data39 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data39
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37);
+ return vector_data39(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38);
+ }
+ template <typename Sequence>
+ static vector_data39
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37);
+ return vector_data39(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38>
+ struct vector39
+ : vector_data39<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38>
+ , sequence_base<vector39<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38> >
+ {
+ typedef vector39<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38> this_type;
+ typedef vector_data39<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38> base_type;
+ typedef mpl::vector39<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<39> size;
+ vector39() {}
+ vector39(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38>
+ vector39(
+ vector39<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38) {}
+ template <typename Sequence>
+ vector39(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector39(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38>
+ vector39&
+ operator=(vector39<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ struct vector_data40
+ {
+ vector_data40()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() {}
+ vector_data40(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) {}
+ vector_data40(
+ vector_data40 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) {}
+ vector_data40&
+ operator=(vector_data40 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data40
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38);
+ return vector_data40(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39);
+ }
+ template <typename Sequence>
+ static vector_data40
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38);
+ return vector_data40(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ struct vector40
+ : vector_data40<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39>
+ , sequence_base<vector40<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> >
+ {
+ typedef vector40<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> this_type;
+ typedef vector_data40<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> base_type;
+ typedef mpl::vector40<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<40> size;
+ vector40() {}
+ vector40(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39>
+ vector40(
+ vector40<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39) {}
+ template <typename Sequence>
+ vector40(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector40(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39>
+ vector40&
+ operator=(vector40<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30>
+ struct vector31;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31>
+ struct vector32;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32>
+ struct vector33;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33>
+ struct vector34;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34>
+ struct vector35;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35>
+ struct vector36;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36>
+ struct vector37;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37>
+ struct vector38;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38>
+ struct vector39;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ struct vector40;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+ struct fusion_sequence_tag;
+ struct random_access_traversal_tag;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40>
+ struct vector_data41
+ {
+ vector_data41()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() {}
+ vector_data41(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) {}
+ vector_data41(
+ vector_data41 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) {}
+ vector_data41&
+ operator=(vector_data41 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data41
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39);
+ return vector_data41(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40);
+ }
+ template <typename Sequence>
+ static vector_data41
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39);
+ return vector_data41(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40>
+ struct vector41
+ : vector_data41<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40>
+ , sequence_base<vector41<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40> >
+ {
+ typedef vector41<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40> this_type;
+ typedef vector_data41<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40> base_type;
+ typedef mpl::vector41<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<41> size;
+ vector41() {}
+ vector41(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40>
+ vector41(
+ vector41<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40) {}
+ template <typename Sequence>
+ vector41(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector41(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40>
+ vector41&
+ operator=(vector41<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference<T40>::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference<typename add_const<T40>::type>::type at_impl(mpl::int_<40>) const { return this->m40; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41>
+ struct vector_data42
+ {
+ vector_data42()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() {}
+ vector_data42(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) {}
+ vector_data42(
+ vector_data42 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) {}
+ vector_data42&
+ operator=(vector_data42 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data42
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40);
+ return vector_data42(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41);
+ }
+ template <typename Sequence>
+ static vector_data42
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40);
+ return vector_data42(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41>
+ struct vector42
+ : vector_data42<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41>
+ , sequence_base<vector42<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41> >
+ {
+ typedef vector42<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41> this_type;
+ typedef vector_data42<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41> base_type;
+ typedef mpl::vector42<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<42> size;
+ vector42() {}
+ vector42(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41>
+ vector42(
+ vector42<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41) {}
+ template <typename Sequence>
+ vector42(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector42(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41>
+ vector42&
+ operator=(vector42<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference<T40>::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference<typename add_const<T40>::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference<T41>::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference<typename add_const<T41>::type>::type at_impl(mpl::int_<41>) const { return this->m41; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42>
+ struct vector_data43
+ {
+ vector_data43()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() {}
+ vector_data43(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) {}
+ vector_data43(
+ vector_data43 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) {}
+ vector_data43&
+ operator=(vector_data43 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data43
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41);
+ return vector_data43(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42);
+ }
+ template <typename Sequence>
+ static vector_data43
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41);
+ return vector_data43(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42>
+ struct vector43
+ : vector_data43<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42>
+ , sequence_base<vector43<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42> >
+ {
+ typedef vector43<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42> this_type;
+ typedef vector_data43<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42> base_type;
+ typedef mpl::vector43<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<43> size;
+ vector43() {}
+ vector43(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42>
+ vector43(
+ vector43<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42) {}
+ template <typename Sequence>
+ vector43(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector43(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42>
+ vector43&
+ operator=(vector43<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference<T40>::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference<typename add_const<T40>::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference<T41>::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference<typename add_const<T41>::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference<T42>::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference<typename add_const<T42>::type>::type at_impl(mpl::int_<42>) const { return this->m42; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43>
+ struct vector_data44
+ {
+ vector_data44()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() {}
+ vector_data44(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) {}
+ vector_data44(
+ vector_data44 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) {}
+ vector_data44&
+ operator=(vector_data44 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data44
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42);
+ return vector_data44(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43);
+ }
+ template <typename Sequence>
+ static vector_data44
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42);
+ return vector_data44(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43>
+ struct vector44
+ : vector_data44<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43>
+ , sequence_base<vector44<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43> >
+ {
+ typedef vector44<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43> this_type;
+ typedef vector_data44<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43> base_type;
+ typedef mpl::vector44<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<44> size;
+ vector44() {}
+ vector44(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43>
+ vector44(
+ vector44<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43) {}
+ template <typename Sequence>
+ vector44(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector44(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43>
+ vector44&
+ operator=(vector44<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference<T40>::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference<typename add_const<T40>::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference<T41>::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference<typename add_const<T41>::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference<T42>::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference<typename add_const<T42>::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference<T43>::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference<typename add_const<T43>::type>::type at_impl(mpl::int_<43>) const { return this->m43; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44>
+ struct vector_data45
+ {
+ vector_data45()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() {}
+ vector_data45(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) {}
+ vector_data45(
+ vector_data45 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) {}
+ vector_data45&
+ operator=(vector_data45 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data45
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43);
+ return vector_data45(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44);
+ }
+ template <typename Sequence>
+ static vector_data45
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43);
+ return vector_data45(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44>
+ struct vector45
+ : vector_data45<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44>
+ , sequence_base<vector45<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44> >
+ {
+ typedef vector45<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44> this_type;
+ typedef vector_data45<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44> base_type;
+ typedef mpl::vector45<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<45> size;
+ vector45() {}
+ vector45(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44>
+ vector45(
+ vector45<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44) {}
+ template <typename Sequence>
+ vector45(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector45(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44>
+ vector45&
+ operator=(vector45<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference<T40>::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference<typename add_const<T40>::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference<T41>::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference<typename add_const<T41>::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference<T42>::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference<typename add_const<T42>::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference<T43>::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference<typename add_const<T43>::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference<T44>::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference<typename add_const<T44>::type>::type at_impl(mpl::int_<44>) const { return this->m44; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45>
+ struct vector_data46
+ {
+ vector_data46()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() , m45() {}
+ vector_data46(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) , m45(_45) {}
+ vector_data46(
+ vector_data46 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) , m45(other.m45) {}
+ vector_data46&
+ operator=(vector_data46 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44; this->m45 = vec.m45;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data46
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44);
+ return vector_data46(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45);
+ }
+ template <typename Sequence>
+ static vector_data46
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44);
+ return vector_data46(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; T45 m45;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45>
+ struct vector46
+ : vector_data46<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45>
+ , sequence_base<vector46<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45> >
+ {
+ typedef vector46<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45> this_type;
+ typedef vector_data46<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45> base_type;
+ typedef mpl::vector46<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<46> size;
+ vector46() {}
+ vector46(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45>
+ vector46(
+ vector46<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44 , vec.m45) {}
+ template <typename Sequence>
+ vector46(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector46(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45>
+ vector46&
+ operator=(vector46<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44; this->m45 = vec.m45;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; this->m45 = *i45;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference<T40>::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference<typename add_const<T40>::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference<T41>::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference<typename add_const<T41>::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference<T42>::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference<typename add_const<T42>::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference<T43>::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference<typename add_const<T43>::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference<T44>::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference<typename add_const<T44>::type>::type at_impl(mpl::int_<44>) const { return this->m44; } typename add_reference<T45>::type at_impl(mpl::int_<45>) { return this->m45; } typename add_reference<typename add_const<T45>::type>::type at_impl(mpl::int_<45>) const { return this->m45; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46>
+ struct vector_data47
+ {
+ vector_data47()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() , m45() , m46() {}
+ vector_data47(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) , m45(_45) , m46(_46) {}
+ vector_data47(
+ vector_data47 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) , m45(other.m45) , m46(other.m46) {}
+ vector_data47&
+ operator=(vector_data47 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44; this->m45 = vec.m45; this->m46 = vec.m46;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data47
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45);
+ return vector_data47(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46);
+ }
+ template <typename Sequence>
+ static vector_data47
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45);
+ return vector_data47(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; T45 m45; T46 m46;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46>
+ struct vector47
+ : vector_data47<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46>
+ , sequence_base<vector47<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46> >
+ {
+ typedef vector47<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46> this_type;
+ typedef vector_data47<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46> base_type;
+ typedef mpl::vector47<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<47> size;
+ vector47() {}
+ vector47(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46>
+ vector47(
+ vector47<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44 , vec.m45 , vec.m46) {}
+ template <typename Sequence>
+ vector47(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector47(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46>
+ vector47&
+ operator=(vector47<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44; this->m45 = vec.m45; this->m46 = vec.m46;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; this->m45 = *i45; this->m46 = *i46;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference<T40>::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference<typename add_const<T40>::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference<T41>::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference<typename add_const<T41>::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference<T42>::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference<typename add_const<T42>::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference<T43>::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference<typename add_const<T43>::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference<T44>::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference<typename add_const<T44>::type>::type at_impl(mpl::int_<44>) const { return this->m44; } typename add_reference<T45>::type at_impl(mpl::int_<45>) { return this->m45; } typename add_reference<typename add_const<T45>::type>::type at_impl(mpl::int_<45>) const { return this->m45; } typename add_reference<T46>::type at_impl(mpl::int_<46>) { return this->m46; } typename add_reference<typename add_const<T46>::type>::type at_impl(mpl::int_<46>) const { return this->m46; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47>
+ struct vector_data48
+ {
+ vector_data48()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() , m45() , m46() , m47() {}
+ vector_data48(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) , m45(_45) , m46(_46) , m47(_47) {}
+ vector_data48(
+ vector_data48 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) , m45(other.m45) , m46(other.m46) , m47(other.m47) {}
+ vector_data48&
+ operator=(vector_data48 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44; this->m45 = vec.m45; this->m46 = vec.m46; this->m47 = vec.m47;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data48
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46);
+ return vector_data48(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47);
+ }
+ template <typename Sequence>
+ static vector_data48
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46);
+ return vector_data48(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; T45 m45; T46 m46; T47 m47;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47>
+ struct vector48
+ : vector_data48<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47>
+ , sequence_base<vector48<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47> >
+ {
+ typedef vector48<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47> this_type;
+ typedef vector_data48<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47> base_type;
+ typedef mpl::vector48<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<48> size;
+ vector48() {}
+ vector48(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47>
+ vector48(
+ vector48<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44 , vec.m45 , vec.m46 , vec.m47) {}
+ template <typename Sequence>
+ vector48(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector48(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47>
+ vector48&
+ operator=(vector48<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44; this->m45 = vec.m45; this->m46 = vec.m46; this->m47 = vec.m47;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; this->m45 = *i45; this->m46 = *i46; this->m47 = *i47;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference<T40>::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference<typename add_const<T40>::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference<T41>::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference<typename add_const<T41>::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference<T42>::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference<typename add_const<T42>::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference<T43>::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference<typename add_const<T43>::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference<T44>::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference<typename add_const<T44>::type>::type at_impl(mpl::int_<44>) const { return this->m44; } typename add_reference<T45>::type at_impl(mpl::int_<45>) { return this->m45; } typename add_reference<typename add_const<T45>::type>::type at_impl(mpl::int_<45>) const { return this->m45; } typename add_reference<T46>::type at_impl(mpl::int_<46>) { return this->m46; } typename add_reference<typename add_const<T46>::type>::type at_impl(mpl::int_<46>) const { return this->m46; } typename add_reference<T47>::type at_impl(mpl::int_<47>) { return this->m47; } typename add_reference<typename add_const<T47>::type>::type at_impl(mpl::int_<47>) const { return this->m47; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48>
+ struct vector_data49
+ {
+ vector_data49()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() , m45() , m46() , m47() , m48() {}
+ vector_data49(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47 , typename detail::call_param<T48 >::type _48)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) , m45(_45) , m46(_46) , m47(_47) , m48(_48) {}
+ vector_data49(
+ vector_data49 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) , m45(other.m45) , m46(other.m46) , m47(other.m47) , m48(other.m48) {}
+ vector_data49&
+ operator=(vector_data49 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44; this->m45 = vec.m45; this->m46 = vec.m46; this->m47 = vec.m47; this->m48 = vec.m48;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data49
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); typedef typename result_of::next< I47>::type I48; I48 i48 = fusion::next(i47);
+ return vector_data49(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48);
+ }
+ template <typename Sequence>
+ static vector_data49
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); typedef typename result_of::next< I47>::type I48; I48 i48 = fusion::next(i47);
+ return vector_data49(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; T45 m45; T46 m46; T47 m47; T48 m48;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48>
+ struct vector49
+ : vector_data49<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48>
+ , sequence_base<vector49<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48> >
+ {
+ typedef vector49<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48> this_type;
+ typedef vector_data49<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48> base_type;
+ typedef mpl::vector49<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<49> size;
+ vector49() {}
+ vector49(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47 , typename detail::call_param<T48 >::type _48)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48>
+ vector49(
+ vector49<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44 , vec.m45 , vec.m46 , vec.m47 , vec.m48) {}
+ template <typename Sequence>
+ vector49(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector49(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48>
+ vector49&
+ operator=(vector49<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44; this->m45 = vec.m45; this->m46 = vec.m46; this->m47 = vec.m47; this->m48 = vec.m48;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); typedef typename result_of::next< I47>::type I48; I48 i48 = fusion::next(i47);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; this->m45 = *i45; this->m46 = *i46; this->m47 = *i47; this->m48 = *i48;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference<T40>::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference<typename add_const<T40>::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference<T41>::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference<typename add_const<T41>::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference<T42>::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference<typename add_const<T42>::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference<T43>::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference<typename add_const<T43>::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference<T44>::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference<typename add_const<T44>::type>::type at_impl(mpl::int_<44>) const { return this->m44; } typename add_reference<T45>::type at_impl(mpl::int_<45>) { return this->m45; } typename add_reference<typename add_const<T45>::type>::type at_impl(mpl::int_<45>) const { return this->m45; } typename add_reference<T46>::type at_impl(mpl::int_<46>) { return this->m46; } typename add_reference<typename add_const<T46>::type>::type at_impl(mpl::int_<46>) const { return this->m46; } typename add_reference<T47>::type at_impl(mpl::int_<47>) { return this->m47; } typename add_reference<typename add_const<T47>::type>::type at_impl(mpl::int_<47>) const { return this->m47; } typename add_reference<T48>::type at_impl(mpl::int_<48>) { return this->m48; } typename add_reference<typename add_const<T48>::type>::type at_impl(mpl::int_<48>) const { return this->m48; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
+ struct vector_data50
+ {
+ vector_data50()
+ : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() , m45() , m46() , m47() , m48() , m49() {}
+ vector_data50(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47 , typename detail::call_param<T48 >::type _48 , typename detail::call_param<T49 >::type _49)
+ : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) , m45(_45) , m46(_46) , m47(_47) , m48(_48) , m49(_49) {}
+ vector_data50(
+ vector_data50 const& other)
+ : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) , m45(other.m45) , m46(other.m46) , m47(other.m47) , m48(other.m48) , m49(other.m49) {}
+ vector_data50&
+ operator=(vector_data50 const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44; this->m45 = vec.m45; this->m46 = vec.m46; this->m47 = vec.m47; this->m48 = vec.m48; this->m49 = vec.m49;
+ return *this;
+ }
+ template <typename Sequence>
+ static vector_data50
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); typedef typename result_of::next< I47>::type I48; I48 i48 = fusion::next(i47); typedef typename result_of::next< I48>::type I49; I49 i49 = fusion::next(i48);
+ return vector_data50(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49);
+ }
+ template <typename Sequence>
+ static vector_data50
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); typedef typename result_of::next< I47>::type I48; I48 i48 = fusion::next(i47); typedef typename result_of::next< I48>::type I49; I49 i49 = fusion::next(i48);
+ return vector_data50(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49);
+ }
+ T0 m0; T1 m1; T2 m2; T3 m3; T4 m4; T5 m5; T6 m6; T7 m7; T8 m8; T9 m9; T10 m10; T11 m11; T12 m12; T13 m13; T14 m14; T15 m15; T16 m16; T17 m17; T18 m18; T19 m19; T20 m20; T21 m21; T22 m22; T23 m23; T24 m24; T25 m25; T26 m26; T27 m27; T28 m28; T29 m29; T30 m30; T31 m31; T32 m32; T33 m33; T34 m34; T35 m35; T36 m36; T37 m37; T38 m38; T39 m39; T40 m40; T41 m41; T42 m42; T43 m43; T44 m44; T45 m45; T46 m46; T47 m47; T48 m48; T49 m49;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
+ struct vector50
+ : vector_data50<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49>
+ , sequence_base<vector50<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> >
+ {
+ typedef vector50<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> this_type;
+ typedef vector_data50<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> base_type;
+ typedef mpl::vector50<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<50> size;
+ vector50() {}
+ vector50(
+ typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47 , typename detail::call_param<T48 >::type _48 , typename detail::call_param<T49 >::type _49)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48 , typename U49>
+ vector50(
+ vector50<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48 , U49> const& vec)
+ : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44 , vec.m45 , vec.m46 , vec.m47 , vec.m48 , vec.m49) {}
+ template <typename Sequence>
+ vector50(
+ Sequence const& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename Sequence>
+ vector50(
+ Sequence& seq
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48 , typename U49>
+ vector50&
+ operator=(vector50<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48 , U49> const& vec)
+ {
+ this->m0 = vec.m0; this->m1 = vec.m1; this->m2 = vec.m2; this->m3 = vec.m3; this->m4 = vec.m4; this->m5 = vec.m5; this->m6 = vec.m6; this->m7 = vec.m7; this->m8 = vec.m8; this->m9 = vec.m9; this->m10 = vec.m10; this->m11 = vec.m11; this->m12 = vec.m12; this->m13 = vec.m13; this->m14 = vec.m14; this->m15 = vec.m15; this->m16 = vec.m16; this->m17 = vec.m17; this->m18 = vec.m18; this->m19 = vec.m19; this->m20 = vec.m20; this->m21 = vec.m21; this->m22 = vec.m22; this->m23 = vec.m23; this->m24 = vec.m24; this->m25 = vec.m25; this->m26 = vec.m26; this->m27 = vec.m27; this->m28 = vec.m28; this->m29 = vec.m29; this->m30 = vec.m30; this->m31 = vec.m31; this->m32 = vec.m32; this->m33 = vec.m33; this->m34 = vec.m34; this->m35 = vec.m35; this->m36 = vec.m36; this->m37 = vec.m37; this->m38 = vec.m38; this->m39 = vec.m39; this->m40 = vec.m40; this->m41 = vec.m41; this->m42 = vec.m42; this->m43 = vec.m43; this->m44 = vec.m44; this->m45 = vec.m45; this->m46 = vec.m46; this->m47 = vec.m47; this->m48 = vec.m48; this->m49 = vec.m49;
+ return *this;
+ }
+ template <typename Sequence>
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ typedef typename result_of::next< I0>::type I1; I1 i1 = fusion::next(i0); typedef typename result_of::next< I1>::type I2; I2 i2 = fusion::next(i1); typedef typename result_of::next< I2>::type I3; I3 i3 = fusion::next(i2); typedef typename result_of::next< I3>::type I4; I4 i4 = fusion::next(i3); typedef typename result_of::next< I4>::type I5; I5 i5 = fusion::next(i4); typedef typename result_of::next< I5>::type I6; I6 i6 = fusion::next(i5); typedef typename result_of::next< I6>::type I7; I7 i7 = fusion::next(i6); typedef typename result_of::next< I7>::type I8; I8 i8 = fusion::next(i7); typedef typename result_of::next< I8>::type I9; I9 i9 = fusion::next(i8); typedef typename result_of::next< I9>::type I10; I10 i10 = fusion::next(i9); typedef typename result_of::next< I10>::type I11; I11 i11 = fusion::next(i10); typedef typename result_of::next< I11>::type I12; I12 i12 = fusion::next(i11); typedef typename result_of::next< I12>::type I13; I13 i13 = fusion::next(i12); typedef typename result_of::next< I13>::type I14; I14 i14 = fusion::next(i13); typedef typename result_of::next< I14>::type I15; I15 i15 = fusion::next(i14); typedef typename result_of::next< I15>::type I16; I16 i16 = fusion::next(i15); typedef typename result_of::next< I16>::type I17; I17 i17 = fusion::next(i16); typedef typename result_of::next< I17>::type I18; I18 i18 = fusion::next(i17); typedef typename result_of::next< I18>::type I19; I19 i19 = fusion::next(i18); typedef typename result_of::next< I19>::type I20; I20 i20 = fusion::next(i19); typedef typename result_of::next< I20>::type I21; I21 i21 = fusion::next(i20); typedef typename result_of::next< I21>::type I22; I22 i22 = fusion::next(i21); typedef typename result_of::next< I22>::type I23; I23 i23 = fusion::next(i22); typedef typename result_of::next< I23>::type I24; I24 i24 = fusion::next(i23); typedef typename result_of::next< I24>::type I25; I25 i25 = fusion::next(i24); typedef typename result_of::next< I25>::type I26; I26 i26 = fusion::next(i25); typedef typename result_of::next< I26>::type I27; I27 i27 = fusion::next(i26); typedef typename result_of::next< I27>::type I28; I28 i28 = fusion::next(i27); typedef typename result_of::next< I28>::type I29; I29 i29 = fusion::next(i28); typedef typename result_of::next< I29>::type I30; I30 i30 = fusion::next(i29); typedef typename result_of::next< I30>::type I31; I31 i31 = fusion::next(i30); typedef typename result_of::next< I31>::type I32; I32 i32 = fusion::next(i31); typedef typename result_of::next< I32>::type I33; I33 i33 = fusion::next(i32); typedef typename result_of::next< I33>::type I34; I34 i34 = fusion::next(i33); typedef typename result_of::next< I34>::type I35; I35 i35 = fusion::next(i34); typedef typename result_of::next< I35>::type I36; I36 i36 = fusion::next(i35); typedef typename result_of::next< I36>::type I37; I37 i37 = fusion::next(i36); typedef typename result_of::next< I37>::type I38; I38 i38 = fusion::next(i37); typedef typename result_of::next< I38>::type I39; I39 i39 = fusion::next(i38); typedef typename result_of::next< I39>::type I40; I40 i40 = fusion::next(i39); typedef typename result_of::next< I40>::type I41; I41 i41 = fusion::next(i40); typedef typename result_of::next< I41>::type I42; I42 i42 = fusion::next(i41); typedef typename result_of::next< I42>::type I43; I43 i43 = fusion::next(i42); typedef typename result_of::next< I43>::type I44; I44 i44 = fusion::next(i43); typedef typename result_of::next< I44>::type I45; I45 i45 = fusion::next(i44); typedef typename result_of::next< I45>::type I46; I46 i46 = fusion::next(i45); typedef typename result_of::next< I46>::type I47; I47 i47 = fusion::next(i46); typedef typename result_of::next< I47>::type I48; I48 i48 = fusion::next(i47); typedef typename result_of::next< I48>::type I49; I49 i49 = fusion::next(i48);
+ this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; this->m45 = *i45; this->m46 = *i46; this->m47 = *i47; this->m48 = *i48; this->m49 = *i49;
+ return *this;
+ }
+ typename add_reference<T0>::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference<typename add_const<T0>::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference<T1>::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference<typename add_const<T1>::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference<T2>::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference<typename add_const<T2>::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference<T3>::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference<typename add_const<T3>::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference<T4>::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference<typename add_const<T4>::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference<T5>::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference<typename add_const<T5>::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference<T6>::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference<typename add_const<T6>::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference<T7>::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference<typename add_const<T7>::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference<T8>::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference<typename add_const<T8>::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference<T9>::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference<typename add_const<T9>::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference<T10>::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference<typename add_const<T10>::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference<T11>::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference<typename add_const<T11>::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference<T12>::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference<typename add_const<T12>::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference<T13>::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference<typename add_const<T13>::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference<T14>::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference<typename add_const<T14>::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference<T15>::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference<typename add_const<T15>::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference<T16>::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference<typename add_const<T16>::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference<T17>::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference<typename add_const<T17>::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference<T18>::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference<typename add_const<T18>::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference<T19>::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference<typename add_const<T19>::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference<T20>::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference<typename add_const<T20>::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference<T21>::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference<typename add_const<T21>::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference<T22>::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference<typename add_const<T22>::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference<T23>::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference<typename add_const<T23>::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference<T24>::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference<typename add_const<T24>::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference<T25>::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference<typename add_const<T25>::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference<T26>::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference<typename add_const<T26>::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference<T27>::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference<typename add_const<T27>::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference<T28>::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference<typename add_const<T28>::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference<T29>::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference<typename add_const<T29>::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference<T30>::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference<typename add_const<T30>::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference<T31>::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference<typename add_const<T31>::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference<T32>::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference<typename add_const<T32>::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference<T33>::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference<typename add_const<T33>::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference<T34>::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference<typename add_const<T34>::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference<T35>::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference<typename add_const<T35>::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference<T36>::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference<typename add_const<T36>::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference<T37>::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference<typename add_const<T37>::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference<T38>::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference<typename add_const<T38>::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference<T39>::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference<typename add_const<T39>::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference<T40>::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference<typename add_const<T40>::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference<T41>::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference<typename add_const<T41>::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference<T42>::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference<typename add_const<T42>::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference<T43>::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference<typename add_const<T43>::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference<T44>::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference<typename add_const<T44>::type>::type at_impl(mpl::int_<44>) const { return this->m44; } typename add_reference<T45>::type at_impl(mpl::int_<45>) { return this->m45; } typename add_reference<typename add_const<T45>::type>::type at_impl(mpl::int_<45>) const { return this->m45; } typename add_reference<T46>::type at_impl(mpl::int_<46>) { return this->m46; } typename add_reference<typename add_const<T46>::type>::type at_impl(mpl::int_<46>) const { return this->m46; } typename add_reference<T47>::type at_impl(mpl::int_<47>) { return this->m47; } typename add_reference<typename add_const<T47>::type>::type at_impl(mpl::int_<47>) const { return this->m47; } typename add_reference<T48>::type at_impl(mpl::int_<48>) { return this->m48; } typename add_reference<typename add_const<T48>::type>::type at_impl(mpl::int_<48>) const { return this->m48; } typename add_reference<T49>::type at_impl(mpl::int_<49>) { return this->m49; } typename add_reference<typename add_const<T49>::type>::type at_impl(mpl::int_<49>) const { return this->m49; }
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40>
+ struct vector41;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41>
+ struct vector42;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42>
+ struct vector43;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43>
+ struct vector44;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44>
+ struct vector45;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45>
+ struct vector46;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46>
+ struct vector47;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47>
+ struct vector48;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48>
+ struct vector49;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
+ struct vector50;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+#if FUSION_MAX_VECTOR_SIZE <= 10
+#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser10.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 20
+#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser20.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 30
+#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser30.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 40
+#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser40.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 50
+#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser50.hpp>
+#else
+#error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers"
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ struct vector_n_chooser
+ {
+ typedef vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> type;
+ };
+ template <>
+ struct vector_n_chooser<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector0<> type;
+ };
+ template <typename T0>
+ struct vector_n_chooser<
+ T0
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector1<T0> type;
+ };
+ template <typename T0 , typename T1>
+ struct vector_n_chooser<
+ T0 , T1
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector2<T0 , T1> type;
+ };
+ template <typename T0 , typename T1 , typename T2>
+ struct vector_n_chooser<
+ T0 , T1 , T2
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector3<T0 , T1 , T2> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3
+ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector4<T0 , T1 , T2 , T3> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4
+ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector5<T0 , T1 , T2 , T3 , T4> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5
+ , void_ , void_ , void_ , void_>
+ {
+ typedef vector6<T0 , T1 , T2 , T3 , T4 , T5> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6
+ , void_ , void_ , void_>
+ {
+ typedef vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
+ , void_ , void_>
+ {
+ typedef vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
+ , void_>
+ {
+ typedef vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> type;
+ };
+}}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ struct vector_n_chooser
+ {
+ typedef vector20<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> type;
+ };
+ template <>
+ struct vector_n_chooser<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector0<> type;
+ };
+ template <typename T0>
+ struct vector_n_chooser<
+ T0
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector1<T0> type;
+ };
+ template <typename T0 , typename T1>
+ struct vector_n_chooser<
+ T0 , T1
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector2<T0 , T1> type;
+ };
+ template <typename T0 , typename T1 , typename T2>
+ struct vector_n_chooser<
+ T0 , T1 , T2
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector3<T0 , T1 , T2> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector4<T0 , T1 , T2 , T3> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector5<T0 , T1 , T2 , T3 , T4> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector6<T0 , T1 , T2 , T3 , T4 , T5> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector11<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector12<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector13<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13
+ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector14<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14
+ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector15<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15
+ , void_ , void_ , void_ , void_>
+ {
+ typedef vector16<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16
+ , void_ , void_ , void_>
+ {
+ typedef vector17<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17
+ , void_ , void_>
+ {
+ typedef vector18<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18
+ , void_>
+ {
+ typedef vector19<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18> type;
+ };
+}}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ struct vector_n_chooser
+ {
+ typedef vector30<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> type;
+ };
+ template <>
+ struct vector_n_chooser<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector0<> type;
+ };
+ template <typename T0>
+ struct vector_n_chooser<
+ T0
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector1<T0> type;
+ };
+ template <typename T0 , typename T1>
+ struct vector_n_chooser<
+ T0 , T1
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector2<T0 , T1> type;
+ };
+ template <typename T0 , typename T1 , typename T2>
+ struct vector_n_chooser<
+ T0 , T1 , T2
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector3<T0 , T1 , T2> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector4<T0 , T1 , T2 , T3> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector5<T0 , T1 , T2 , T3 , T4> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector6<T0 , T1 , T2 , T3 , T4 , T5> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector11<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector12<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector13<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector14<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector15<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector16<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector17<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector18<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector19<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector20<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector21<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector22<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector23<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23
+ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector24<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24
+ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector25<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25
+ , void_ , void_ , void_ , void_>
+ {
+ typedef vector26<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26
+ , void_ , void_ , void_>
+ {
+ typedef vector27<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27
+ , void_ , void_>
+ {
+ typedef vector28<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28
+ , void_>
+ {
+ typedef vector29<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28> type;
+ };
+}}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ struct vector_n_chooser
+ {
+ typedef vector40<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> type;
+ };
+ template <>
+ struct vector_n_chooser<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector0<> type;
+ };
+ template <typename T0>
+ struct vector_n_chooser<
+ T0
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector1<T0> type;
+ };
+ template <typename T0 , typename T1>
+ struct vector_n_chooser<
+ T0 , T1
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector2<T0 , T1> type;
+ };
+ template <typename T0 , typename T1 , typename T2>
+ struct vector_n_chooser<
+ T0 , T1 , T2
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector3<T0 , T1 , T2> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector4<T0 , T1 , T2 , T3> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector5<T0 , T1 , T2 , T3 , T4> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector6<T0 , T1 , T2 , T3 , T4 , T5> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector11<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector12<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector13<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector14<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector15<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector16<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector17<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector18<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector19<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector20<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector21<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector22<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector23<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector24<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector25<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector26<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector27<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector28<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector29<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector30<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector31<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector32<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector33<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33
+ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector34<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34
+ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector35<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35
+ , void_ , void_ , void_ , void_>
+ {
+ typedef vector36<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36
+ , void_ , void_ , void_>
+ {
+ typedef vector37<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37
+ , void_ , void_>
+ {
+ typedef vector38<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38
+ , void_>
+ {
+ typedef vector39<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38> type;
+ };
+}}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
+ struct vector_n_chooser
+ {
+ typedef vector50<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> type;
+ };
+ template <>
+ struct vector_n_chooser<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector0<> type;
+ };
+ template <typename T0>
+ struct vector_n_chooser<
+ T0
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector1<T0> type;
+ };
+ template <typename T0 , typename T1>
+ struct vector_n_chooser<
+ T0 , T1
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector2<T0 , T1> type;
+ };
+ template <typename T0 , typename T1 , typename T2>
+ struct vector_n_chooser<
+ T0 , T1 , T2
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector3<T0 , T1 , T2> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector4<T0 , T1 , T2 , T3> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector5<T0 , T1 , T2 , T3 , T4> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector6<T0 , T1 , T2 , T3 , T4 , T5> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector11<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector12<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector13<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector14<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector15<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector16<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector17<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector18<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector19<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector20<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector21<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector22<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector23<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector24<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector25<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector26<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector27<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector28<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector29<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector30<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector31<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector32<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector33<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector34<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector35<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector36<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector37<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector38<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector39<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector40<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector41<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector42<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42
+ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector43<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43
+ , void_ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector44<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44
+ , void_ , void_ , void_ , void_ , void_>
+ {
+ typedef vector45<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45
+ , void_ , void_ , void_ , void_>
+ {
+ typedef vector46<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46
+ , void_ , void_ , void_>
+ {
+ typedef vector47<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47
+ , void_ , void_>
+ {
+ typedef vector48<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47> type;
+ };
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48>
+ struct vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48
+ , void_>
+ {
+ typedef vector49<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48> type;
+ };
+}}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if FUSION_MAX_VECTOR_SIZE <= 10
+#include <boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 20
+#include <boost/fusion/container/vector/detail/preprocessed/vvector20_fwd.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 30
+#include <boost/fusion/container/vector/detail/preprocessed/vvector30_fwd.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 40
+#include <boost/fusion/container/vector/detail/preprocessed/vvector40_fwd.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 50
+#include <boost/fusion/container/vector/detail/preprocessed/vvector50_fwd.hpp>
+#else
+#error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers"
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct fusion_sequence_tag;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ struct vector
+ : sequence_base<vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> >
+ {
+ private:
+ typedef typename detail::vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>::type
+ vector_n;
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ friend struct vector;
+ public:
+ typedef typename vector_n::types types;
+ typedef typename vector_n::fusion_tag fusion_tag;
+ typedef typename vector_n::tag tag;
+ typedef typename vector_n::size size;
+ typedef typename vector_n::category category;
+ typedef typename vector_n::is_view is_view;
+ vector()
+ : vec() {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ vector(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ : vec(rhs.vec) {}
+ vector(vector const& rhs)
+ : vec(rhs.vec) {}
+ template <typename Sequence>
+ vector(Sequence const& rhs)
+ : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
+
+
+
+
+
+
+
+ explicit
+ vector(typename detail::call_param<T0 >::type _0)
+ : vec(_0) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : vec(_0 , _1) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : vec(_0 , _1 , _2) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : vec(_0 , _1 , _2 , _3) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : vec(_0 , _1 , _2 , _3 , _4) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ vector&
+ operator=(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ {
+ vec = rhs.vec;
+ return *this;
+ }
+ template <typename T>
+ vector&
+ operator=(T const& rhs)
+ {
+ vec = rhs;
+ return *this;
+ }
+ template <int N>
+ typename add_reference<
+ typename mpl::at_c<types, N>::type
+ >::type
+ at_impl(mpl::int_<N> index)
+ {
+ return vec.at_impl(index);
+ }
+ template <int N>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at_c<types, N>::type
+ >::type
+ >::type
+ at_impl(mpl::int_<N> index) const
+ {
+ return vec.at_impl(index);
+ }
+ template <typename I>
+ typename add_reference<
+ typename mpl::at<types, I>::type
+ >::type
+ at_impl(I )
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at<types, I>::type
+ >::type
+ >::type
+ at_impl(I ) const
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+ private:
+ BOOST_FUSION_VECTOR_CTOR_HELPER()
+ vector_n vec;
+ };
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_
+ >
+ struct vector;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct fusion_sequence_tag;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ struct vector
+ : sequence_base<vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> >
+ {
+ private:
+ typedef typename detail::vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19>::type
+ vector_n;
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ friend struct vector;
+ public:
+ typedef typename vector_n::types types;
+ typedef typename vector_n::fusion_tag fusion_tag;
+ typedef typename vector_n::tag tag;
+ typedef typename vector_n::size size;
+ typedef typename vector_n::category category;
+ typedef typename vector_n::is_view is_view;
+ vector()
+ : vec() {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ vector(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
+ : vec(rhs.vec) {}
+ vector(vector const& rhs)
+ : vec(rhs.vec) {}
+ template <typename Sequence>
+ vector(Sequence const& rhs)
+ : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
+
+
+
+
+
+
+
+ explicit
+ vector(typename detail::call_param<T0 >::type _0)
+ : vec(_0) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : vec(_0 , _1) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : vec(_0 , _1 , _2) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : vec(_0 , _1 , _2 , _3) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : vec(_0 , _1 , _2 , _3 , _4) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ vector&
+ operator=(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
+ {
+ vec = rhs.vec;
+ return *this;
+ }
+ template <typename T>
+ vector&
+ operator=(T const& rhs)
+ {
+ vec = rhs;
+ return *this;
+ }
+ template <int N>
+ typename add_reference<
+ typename mpl::at_c<types, N>::type
+ >::type
+ at_impl(mpl::int_<N> index)
+ {
+ return vec.at_impl(index);
+ }
+ template <int N>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at_c<types, N>::type
+ >::type
+ >::type
+ at_impl(mpl::int_<N> index) const
+ {
+ return vec.at_impl(index);
+ }
+ template <typename I>
+ typename add_reference<
+ typename mpl::at<types, I>::type
+ >::type
+ at_impl(I )
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at<types, I>::type
+ >::type
+ >::type
+ at_impl(I ) const
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+ private:
+ BOOST_FUSION_VECTOR_CTOR_HELPER()
+ vector_n vec;
+ };
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_
+ >
+ struct vector;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct fusion_sequence_tag;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ struct vector
+ : sequence_base<vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> >
+ {
+ private:
+ typedef typename detail::vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29>::type
+ vector_n;
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ friend struct vector;
+ public:
+ typedef typename vector_n::types types;
+ typedef typename vector_n::fusion_tag fusion_tag;
+ typedef typename vector_n::tag tag;
+ typedef typename vector_n::size size;
+ typedef typename vector_n::category category;
+ typedef typename vector_n::is_view is_view;
+ vector()
+ : vec() {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ vector(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& rhs)
+ : vec(rhs.vec) {}
+ vector(vector const& rhs)
+ : vec(rhs.vec) {}
+ template <typename Sequence>
+ vector(Sequence const& rhs)
+ : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
+
+
+
+
+
+
+
+ explicit
+ vector(typename detail::call_param<T0 >::type _0)
+ : vec(_0) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : vec(_0 , _1) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : vec(_0 , _1 , _2) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : vec(_0 , _1 , _2 , _3) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : vec(_0 , _1 , _2 , _3 , _4) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ vector&
+ operator=(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& rhs)
+ {
+ vec = rhs.vec;
+ return *this;
+ }
+ template <typename T>
+ vector&
+ operator=(T const& rhs)
+ {
+ vec = rhs;
+ return *this;
+ }
+ template <int N>
+ typename add_reference<
+ typename mpl::at_c<types, N>::type
+ >::type
+ at_impl(mpl::int_<N> index)
+ {
+ return vec.at_impl(index);
+ }
+ template <int N>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at_c<types, N>::type
+ >::type
+ >::type
+ at_impl(mpl::int_<N> index) const
+ {
+ return vec.at_impl(index);
+ }
+ template <typename I>
+ typename add_reference<
+ typename mpl::at<types, I>::type
+ >::type
+ at_impl(I )
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at<types, I>::type
+ >::type
+ >::type
+ at_impl(I ) const
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+ private:
+ BOOST_FUSION_VECTOR_CTOR_HELPER()
+ vector_n vec;
+ };
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_ , typename T20 = void_ , typename T21 = void_ , typename T22 = void_ , typename T23 = void_ , typename T24 = void_ , typename T25 = void_ , typename T26 = void_ , typename T27 = void_ , typename T28 = void_ , typename T29 = void_
+ >
+ struct vector;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct fusion_sequence_tag;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ struct vector
+ : sequence_base<vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> >
+ {
+ private:
+ typedef typename detail::vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39>::type
+ vector_n;
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39>
+ friend struct vector;
+ public:
+ typedef typename vector_n::types types;
+ typedef typename vector_n::fusion_tag fusion_tag;
+ typedef typename vector_n::tag tag;
+ typedef typename vector_n::size size;
+ typedef typename vector_n::category category;
+ typedef typename vector_n::is_view is_view;
+ vector()
+ : vec() {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39>
+ vector(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39> const& rhs)
+ : vec(rhs.vec) {}
+ vector(vector const& rhs)
+ : vec(rhs.vec) {}
+ template <typename Sequence>
+ vector(Sequence const& rhs)
+ : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
+
+
+
+
+
+
+
+ explicit
+ vector(typename detail::call_param<T0 >::type _0)
+ : vec(_0) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : vec(_0 , _1) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : vec(_0 , _1 , _2) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : vec(_0 , _1 , _2 , _3) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : vec(_0 , _1 , _2 , _3 , _4) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39>
+ vector&
+ operator=(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39> const& rhs)
+ {
+ vec = rhs.vec;
+ return *this;
+ }
+ template <typename T>
+ vector&
+ operator=(T const& rhs)
+ {
+ vec = rhs;
+ return *this;
+ }
+ template <int N>
+ typename add_reference<
+ typename mpl::at_c<types, N>::type
+ >::type
+ at_impl(mpl::int_<N> index)
+ {
+ return vec.at_impl(index);
+ }
+ template <int N>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at_c<types, N>::type
+ >::type
+ >::type
+ at_impl(mpl::int_<N> index) const
+ {
+ return vec.at_impl(index);
+ }
+ template <typename I>
+ typename add_reference<
+ typename mpl::at<types, I>::type
+ >::type
+ at_impl(I )
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at<types, I>::type
+ >::type
+ >::type
+ at_impl(I ) const
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+ private:
+ BOOST_FUSION_VECTOR_CTOR_HELPER()
+ vector_n vec;
+ };
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_ , typename T20 = void_ , typename T21 = void_ , typename T22 = void_ , typename T23 = void_ , typename T24 = void_ , typename T25 = void_ , typename T26 = void_ , typename T27 = void_ , typename T28 = void_ , typename T29 = void_ , typename T30 = void_ , typename T31 = void_ , typename T32 = void_ , typename T33 = void_ , typename T34 = void_ , typename T35 = void_ , typename T36 = void_ , typename T37 = void_ , typename T38 = void_ , typename T39 = void_
+ >
+ struct vector;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct fusion_sequence_tag;
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
+ struct vector
+ : sequence_base<vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> >
+ {
+ private:
+ typedef typename detail::vector_n_chooser<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49>::type
+ vector_n;
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48 , typename U49>
+ friend struct vector;
+ public:
+ typedef typename vector_n::types types;
+ typedef typename vector_n::fusion_tag fusion_tag;
+ typedef typename vector_n::tag tag;
+ typedef typename vector_n::size size;
+ typedef typename vector_n::category category;
+ typedef typename vector_n::is_view is_view;
+ vector()
+ : vec() {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48 , typename U49>
+ vector(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48 , U49> const& rhs)
+ : vec(rhs.vec) {}
+ vector(vector const& rhs)
+ : vec(rhs.vec) {}
+ template <typename Sequence>
+ vector(Sequence const& rhs)
+ : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
+
+
+
+
+
+
+
+ explicit
+ vector(typename detail::call_param<T0 >::type _0)
+ : vec(_0) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : vec(_0 , _1) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : vec(_0 , _1 , _2) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : vec(_0 , _1 , _2 , _3) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : vec(_0 , _1 , _2 , _3 , _4) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47 , typename detail::call_param<T48 >::type _48)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48) {}
+ vector(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47 , typename detail::call_param<T48 >::type _48 , typename detail::call_param<T49 >::type _49)
+ : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48 , typename U49>
+ vector&
+ operator=(vector<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48 , U49> const& rhs)
+ {
+ vec = rhs.vec;
+ return *this;
+ }
+ template <typename T>
+ vector&
+ operator=(T const& rhs)
+ {
+ vec = rhs;
+ return *this;
+ }
+ template <int N>
+ typename add_reference<
+ typename mpl::at_c<types, N>::type
+ >::type
+ at_impl(mpl::int_<N> index)
+ {
+ return vec.at_impl(index);
+ }
+ template <int N>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at_c<types, N>::type
+ >::type
+ >::type
+ at_impl(mpl::int_<N> index) const
+ {
+ return vec.at_impl(index);
+ }
+ template <typename I>
+ typename add_reference<
+ typename mpl::at<types, I>::type
+ >::type
+ at_impl(I )
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+ template<typename I>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at<types, I>::type
+ >::type
+ >::type
+ at_impl(I ) const
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+ private:
+ BOOST_FUSION_VECTOR_CTOR_HELPER()
+ vector_n vec;
+ };
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_ , typename T20 = void_ , typename T21 = void_ , typename T22 = void_ , typename T23 = void_ , typename T24 = void_ , typename T25 = void_ , typename T26 = void_ , typename T27 = void_ , typename T28 = void_ , typename T29 = void_ , typename T30 = void_ , typename T31 = void_ , typename T32 = void_ , typename T33 = void_ , typename T34 = void_ , typename T35 = void_ , typename T36 = void_ , typename T37 = void_ , typename T38 = void_ , typename T39 = void_ , typename T40 = void_ , typename T41 = void_ , typename T42 = void_ , typename T43 = void_ , typename T44 = void_ , typename T45 = void_ , typename T46 = void_ , typename T47 = void_ , typename T48 = void_ , typename T49 = void_
+ >
+ struct vector;
+}}
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#define FUSION_FORWARD_CTOR_FORWARD(z, n, _) std::forward<U##n>(_##n)
+
#define BOOST_PP_FILENAME_1 \
<boost/fusion/container/vector/detail/vector_forward_ctor.hpp>
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
#include BOOST_PP_ITERATE()
+#undef FUSION_FORWARD_CTOR_FORWARD
#endif
#else // defined(BOOST_PP_IS_ITERATING)
///////////////////////////////////////////////////////////////////////////////
N, typename detail::call_param<T, >::type _))
: vec(BOOST_PP_ENUM_PARAMS(N, _)) {}
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
+#if N == 1
+ explicit
+#endif
+ vector(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _))
+ : vec(BOOST_PP_ENUM(N, FUSION_FORWARD_CTOR_FORWARD, _)) {}
+#endif
+
#undef N
#endif // defined(BOOST_PP_IS_ITERATING)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#if !defined(FUSION_MACRO_05042005)
#define FUSION_MACRO_05042005
-#define FUSION_MEMBER_DEFAULT_INIT(z, n, _) m##n()
-#define FUSION_MEMBER_INIT(z, n, _) m##n(_##n)
-#define FUSION_COPY_INIT(z, n, _) m##n(other.m##n)
-#define FUSION_MEMBER_DECL(z, n, _) T##n m##n;
+#define FUSION_VECTOR_CTOR_DEFAULT_INIT(z, n, _) \
+ m##n()
-#define FUSION_MEMBER_ASSIGN(z, n, _) \
+#define FUSION_VECTOR_CTOR_INIT(z, n, _) \
+ m##n(_##n)
+
+#define FUSION_VECTOR_MEMBER_CTOR_INIT(z, n, _) \
+ m##n(other.m##n)
+
+#define FUSION_VECTOR_CTOR_FORWARD(z, n, _) \
+ m##n(std::forward<T##n>(other.m##n))
+
+#define FUSION_VECTOR_CTOR_ARG_FWD(z, n, _) \
+ m##n(std::forward<U##n>(_##n))
+
+#define FUSION_VECTOR_MEMBER_DECL(z, n, _) \
+ T##n m##n;
+
+#define FUSION_VECTOR_MEMBER_FORWARD(z, n, _) \
+ std::forward<U##n>(_##n)
+
+#define FUSION_VECTOR_MEMBER_ASSIGN(z, n, _) \
this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n);
-#define FUSION_DEREF_MEMBER_ASSIGN(z, n, _) \
+#define FUSION_VECTOR_MEMBER_DEREF_ASSIGN(z, n, _) \
this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n);
-#define FUSION_AT_IMPL(z, n, _) \
+#define FUSION_VECTOR_MEMBER_MOVE(z, n, _) \
+ this->BOOST_PP_CAT(m, n) = std::forward< \
+ BOOST_PP_CAT(T, n)>(vec.BOOST_PP_CAT(m, n));
+
+#define FUSION_VECTOR_MEMBER_AT_IMPL(z, n, _) \
typename add_reference<T##n>::type \
at_impl(mpl::int_<n>) { return this->m##n; } \
typename add_reference<typename add_const<T##n>::type>::type \
at_impl(mpl::int_<n>) const { return this->m##n; }
-#define FUSION_ITER_DECL_VAR(z, n, _) \
+#define FUSION_VECTOR_MEMBER_ITER_DECL_VAR(z, n, _) \
typedef typename result_of::next< \
BOOST_PP_CAT(I, BOOST_PP_DEC(n))>::type BOOST_PP_CAT(I, n); \
BOOST_PP_CAT(I, n) BOOST_PP_CAT(i, n) \
#define N BOOST_PP_ITERATION()
- template <typename Derived, BOOST_PP_ENUM_PARAMS(N, typename T)>
- struct BOOST_PP_CAT(vector_data, N) : sequence_base<Derived>
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ struct BOOST_PP_CAT(vector_data, N)
{
BOOST_PP_CAT(vector_data, N)()
- : BOOST_PP_ENUM(N, FUSION_MEMBER_DEFAULT_INIT, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_DEFAULT_INIT, _) {}
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
+ BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _)
+ , typename boost::enable_if<is_convertible<U0, T0> >::type* /*dummy*/ = 0
+ )
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_ARG_FWD, _) {}
+#endif
BOOST_PP_CAT(vector_data, N)(
BOOST_PP_ENUM_BINARY_PARAMS(
N, typename detail::call_param<T, >::type _))
- : BOOST_PP_ENUM(N, FUSION_MEMBER_INIT, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_INIT, _) {}
BOOST_PP_CAT(vector_data, N)(
BOOST_PP_CAT(vector_data, N) const& other)
- : BOOST_PP_ENUM(N, FUSION_COPY_INIT, _) {}
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_CTOR_INIT, _) {}
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ BOOST_PP_CAT(vector_data, N)(
+ BOOST_PP_CAT(vector_data, N)&& other)
+ : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_FORWARD, _) {}
+#endif
BOOST_PP_CAT(vector_data, N)&
operator=(BOOST_PP_CAT(vector_data, N) const& vec)
{
- BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _)
return *this;
}
{
typedef typename result_of::begin<Sequence const>::type I0;
I0 i0 = fusion::begin(seq);
- BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _)
+ BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _)
+ return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i));
+ }
+
+ template <typename Sequence>
+ static BOOST_PP_CAT(vector_data, N)
+ init_from_sequence(Sequence& seq)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(seq);
+ BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _)
return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i));
}
- BOOST_PP_REPEAT(N, FUSION_MEMBER_DECL, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DECL, _)
};
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
struct BOOST_PP_CAT(vector, N)
- : BOOST_PP_CAT(vector_data, N)<
- BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>
- , BOOST_PP_ENUM_PARAMS(N, T)>
+ : BOOST_PP_CAT(vector_data, N)<BOOST_PP_ENUM_PARAMS(N, T)>
+ , sequence_base<BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> >
{
typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> this_type;
- typedef BOOST_PP_CAT(vector_data, N)<this_type, BOOST_PP_ENUM_PARAMS(N, T)> base_type;
+ typedef BOOST_PP_CAT(vector_data, N)<BOOST_PP_ENUM_PARAMS(N, T)> base_type;
typedef mpl::BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> types;
typedef vector_tag fusion_tag;
typedef fusion_sequence_tag tag; // this gets picked up by MPL
N, typename detail::call_param<T, >::type _))
: base_type(BOOST_PP_ENUM_PARAMS(N, _)) {}
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
+#if (N == 1)
+ explicit
+ BOOST_PP_CAT(vector, N)(U0&& _0
+ , typename boost::enable_if<is_convertible<U0, T0> >::type* /*dummy*/ = 0
+ )
+ : base_type(std::forward<U0>(_0)) {}
+#else
+ BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _))
+ : base_type(BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FORWARD, _)) {}
+#endif
+
+ BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N)&& rhs)
+ : base_type(std::forward<base_type>(rhs)) {}
+
+ BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N) const& rhs)
+ : base_type(rhs) {}
+
+#endif
+
template <BOOST_PP_ENUM_PARAMS(N, typename U)>
BOOST_PP_CAT(vector, N)(
BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, U)> const& vec)
BOOST_PP_CAT(vector, N)(
Sequence const& seq
#if (N == 1)
- , typename disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0
+ , typename boost::disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0
+#endif
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+
+ template <typename Sequence>
+ BOOST_PP_CAT(vector, N)(
+ Sequence& seq
+#if (N == 1)
+ , typename boost::disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0
#endif
)
: base_type(base_type::init_from_sequence(seq)) {}
BOOST_PP_CAT(vector, N)&
operator=(BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, U)> const& vec)
{
- BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _)
return *this;
}
template <typename Sequence>
- typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
I0 i0 = fusion::begin(seq);
- BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _)
- BOOST_PP_REPEAT(N, FUSION_DEREF_MEMBER_ASSIGN, _)
+ BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _)
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DEREF_ASSIGN, _)
return *this;
}
- BOOST_PP_REPEAT(N, FUSION_AT_IMPL, _)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ BOOST_PP_CAT(vector, N)&
+ operator=(BOOST_PP_CAT(vector, N) const& vec)
+ {
+ base_type::operator=(vec);
+ return *this;
+ }
+
+ BOOST_PP_CAT(vector, N)&
+ operator=(BOOST_PP_CAT(vector, N)&& vec)
+ {
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MOVE, _)
+ return *this;
+ }
+#endif
+
+ BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_AT_IMPL, _)
template<typename I>
typename add_reference<typename mpl::at<types, I>::type>::type
#undef N
+
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#ifndef BOOST_PP_IS_ITERATING
struct void_;
}}
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector_chooser" FUSION_MAX_VECTOR_SIZE_STR ".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
namespace boost { namespace fusion { namespace detail
{
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
}}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
///////////////////////////////////////////////////////////////////////////////
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_VECTOR_LIMITS_07072005_1246)
#define FUSION_VECTOR_LIMITS_07072005_1246
+#include <boost/fusion/support/detail/pp_round.hpp>
+
#if !defined(FUSION_MAX_VECTOR_SIZE)
# define FUSION_MAX_VECTOR_SIZE 10
#else
# endif
#endif
+#define FUSION_MAX_VECTOR_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_VECTOR_SIZE))
+
#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#include <boost/type_traits/is_base_of.hpp>
#include <boost/detail/workaround.hpp>
+#if !defined(__WAVE__)
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
+
+#define BOOST_FUSION_VECTOR_COPY_INIT() \
+ ctor_helper(rhs, is_base_of<vector, Sequence>()) \
+
+#define BOOST_FUSION_VECTOR_CTOR_HELPER() \
+ static vector_n const& \
+ ctor_helper(vector const& rhs, mpl::true_) \
+ { \
+ return rhs.vec; \
+ } \
+ \
+ template <typename T> \
+ static T const& \
+ ctor_helper(T const& rhs, mpl::false_) \
+ { \
+ return rhs; \
+ }
+
+#else
+
+#define BOOST_FUSION_VECTOR_COPY_INIT() \
+ rhs \
+
+#define BOOST_FUSION_VECTOR_CTOR_HELPER()
+
+#endif
+
+#endif // !defined(__WAVE__)
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vvector" FUSION_MAX_VECTOR_SIZE_STR ".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
namespace boost { namespace fusion
{
struct void_;
vector(vector const& rhs)
: vec(rhs.vec) {}
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ vector(vector&& rhs)
+ : vec(std::forward<vector_n>(rhs.vec)) {}
+#endif
+
template <typename Sequence>
vector(Sequence const& rhs)
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
- : vec(ctor_helper(rhs, is_base_of<vector, Sequence>())) {}
-#else
- : vec(rhs) {}
-#endif
+ : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
// Expand a couple of forwarding constructors for arguments
// of type (T0), (T0, T1), (T0, T1, T2) etc. Example:
return *this;
}
+ vector&
+ operator=(vector const& rhs)
+ {
+ vec = rhs.vec;
+ return *this;
+ }
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ vector&
+ operator=(vector&& rhs)
+ {
+ vec = std::forward<vector_n>(rhs.vec);
+ return *this;
+ }
+
+ template <typename T>
+ vector&
+ operator=(T&& rhs)
+ {
+ vec = std::forward<T>(rhs);
+ return *this;
+ }
+#endif
+
template <int N>
typename add_reference<
typename mpl::at_c<types, N>::type
private:
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
- static vector_n const&
- ctor_helper(vector const& rhs, mpl::true_)
- {
- return rhs.vec;
- }
-
- template <typename T>
- static T const&
- ctor_helper(T const& rhs, mpl::false_)
- {
- return rhs;
- }
-#endif
-
+ BOOST_FUSION_VECTOR_CTOR_HELPER()
vector_n vec;
};
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_VECTOR10_05042005_0257)
#define FUSION_VECTOR10_05042005_0257
+#include <boost/fusion/container/vector/vector10_fwd.hpp>
#include <boost/fusion/support/sequence_base.hpp>
#include <boost/fusion/support/detail/access.hpp>
#include <boost/fusion/iterator/next.hpp>
struct fusion_sequence_tag;
struct random_access_traversal_tag;
- template <typename Dummy = void>
+ template <typename Dummy>
struct vector0 : sequence_base<vector0<Dummy> >
{
typedef mpl::vector0<> types;
vector0(Sequence const& /*seq*/)
{}
};
+}}
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector10.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector10.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
// expand vector1 to vector10
#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
#endif
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
--- /dev/null
+#ifndef BOOST_PP_IS_ITERATING
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VECTOR10_FWD_HPP_INCLUDED)
+#define BOOST_FUSION_VECTOR10_FWD_HPP_INCLUDED
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename Dummy = void>
+ struct vector0;
+}}
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector10_fwd.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector10_fwd.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ // expand vector1 to vector10
+ #define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/vector10_fwd.hpp>
+ #define BOOST_PP_ITERATION_LIMITS (1, 10)
+ #include BOOST_PP_ITERATE()
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
+
+#else
+
+ template <BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename T)>
+ struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION());
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_VECTOR20_05052005_0205)
#define FUSION_VECTOR20_05052005_0205
+#include <boost/fusion/container/vector/vector20_fwd.hpp>
#include <boost/fusion/support/sequence_base.hpp>
#include <boost/fusion/support/detail/access.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector20.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector20.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
namespace boost { namespace fusion
{
struct vector_tag;
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
--- /dev/null
+#ifndef BOOST_PP_IS_ITERATING
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VECTOR20_FWD_HPP_INCLUDED)
+#define BOOST_FUSION_VECTOR20_FWD_HPP_INCLUDED
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector20_fwd.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector20_fwd.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ // expand vector11 to vector20
+ #define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/vector20_fwd.hpp>
+ #define BOOST_PP_ITERATION_LIMITS (11, 20)
+ #include BOOST_PP_ITERATE()
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
+
+#else
+
+ template <BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename T)>
+ struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION());
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_VECTOR30_05052005_0206)
#define FUSION_VECTOR30_05052005_0206
+#include <boost/fusion/container/vector/vector30_fwd.hpp>
#include <boost/fusion/support/sequence_base.hpp>
#include <boost/fusion/support/detail/access.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector30.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector30.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
namespace boost { namespace fusion
{
struct vector_tag;
struct fusion_sequence_tag;
struct random_access_traversal_tag;
-
+
// expand vector21 to vector30
#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
#define BOOST_PP_ITERATION_LIMITS (21, 30)
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
--- /dev/null
+#ifndef BOOST_PP_IS_ITERATING
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VECTOR30_FWD_HPP_INCLUDED)
+#define BOOST_FUSION_VECTOR30_FWD_HPP_INCLUDED
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector30_fwd.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector30_fwd.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ // expand vector21 to vector30
+ #define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/vector30_fwd.hpp>
+ #define BOOST_PP_ITERATION_LIMITS (21, 30)
+ #include BOOST_PP_ITERATE()
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
+
+#else
+
+ template <BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename T)>
+ struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION());
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_VECTOR40_05052005_0208)
#define FUSION_VECTOR40_05052005_0208
+#include <boost/fusion/container/vector/vector40_fwd.hpp>
#include <boost/fusion/support/sequence_base.hpp>
#include <boost/fusion/support/detail/access.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector40.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector40.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
namespace boost { namespace fusion
{
struct vector_tag;
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
--- /dev/null
+#ifndef BOOST_PP_IS_ITERATING
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VECTOR40_FWD_HPP_INCLUDED)
+#define BOOST_FUSION_VECTOR40_FWD_HPP_INCLUDED
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector40_fwd.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector40_fwd.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ // expand vector31 to vector40
+ #define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/vector40_fwd.hpp>
+ #define BOOST_PP_ITERATION_LIMITS (31, 40)
+ #include BOOST_PP_ITERATE()
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
+
+#else
+
+ template <BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename T)>
+ struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION());
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_VECTOR50_05052005_0207)
#define FUSION_VECTOR50_05052005_0207
+#include <boost/fusion/container/vector/vector50_fwd.hpp>
#include <boost/fusion/support/sequence_base.hpp>
#include <boost/fusion/support/detail/access.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector50.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector50.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
namespace boost { namespace fusion
{
struct vector_tag;
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
--- /dev/null
+#ifndef BOOST_PP_IS_ITERATING
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VECTOR50_FWD_HPP_INCLUDED)
+#define BOOST_FUSION_VECTOR50_FWD_HPP_INCLUDED
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector50_fwd.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector50_fwd.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+namespace boost { namespace fusion
+{
+ // expand vector41 to vector50
+ #define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/vector50_fwd.hpp>
+ #define BOOST_PP_ITERATION_LIMITS (41, 50)
+ #include BOOST_PP_ITERATE()
+}}
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
+#endif
+
+#else
+
+ template <BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename T)>
+ struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION());
+
+#endif
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_VECTOR_FORWARD_07072005_0125)
#include <boost/fusion/container/vector/limits.hpp>
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/fusion/container/vector/vector10.hpp>
+#if (FUSION_MAX_VECTOR_SIZE > 10)
+#include <boost/fusion/container/vector/vector20.hpp>
+#endif
+#if (FUSION_MAX_VECTOR_SIZE > 20)
+#include <boost/fusion/container/vector/vector30.hpp>
+#endif
+#if (FUSION_MAX_VECTOR_SIZE > 30)
+#include <boost/fusion/container/vector/vector40.hpp>
+#endif
+#if (FUSION_MAX_VECTOR_SIZE > 40)
+#include <boost/fusion/container/vector/vector50.hpp>
+#endif
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/container/vector/detail/preprocessed/vector_fwd.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vvector" FUSION_MAX_VECTOR_SIZE_STR "_fwd.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
namespace boost { namespace fusion
{
struct void_;
struct vector;
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_ADVANCE_09172005_1146)
+#define FUSION_ADVANCE_09172005_1146
+
+#include <boost/fusion/iterator/detail/advance.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct boost_array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct advance_impl
+ {
+ // default implementation
+ template <typename Iterator, typename N>
+ struct apply :
+ mpl::if_c<
+ (N::value > 0)
+ , advance_detail::forward<Iterator, N::value>
+ , advance_detail::backward<Iterator, N::value>
+ >::type
+ {
+ BOOST_MPL_ASSERT_NOT((traits::is_random_access<Iterator>));
+ };
+ };
+
+ template <>
+ struct advance_impl<iterator_facade_tag>
+ {
+ template <typename Iterator, typename N>
+ struct apply : Iterator::template advance<Iterator, N> {};
+ };
+
+ template <>
+ struct advance_impl<boost_array_iterator_tag>;
+
+ template <>
+ struct advance_impl<mpl_iterator_tag>;
+
+ template <>
+ struct advance_impl<std_pair_iterator_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename Iterator, int N>
+ struct advance_c
+ : extension::advance_impl<typename detail::tag_of<Iterator>::type>::template apply<Iterator, mpl::int_<N> >
+ {};
+
+ template <typename Iterator, typename N>
+ struct advance
+ : extension::advance_impl<typename detail::tag_of<Iterator>::type>::template apply<Iterator, N>
+ {};
+ }
+
+ template <int N, typename Iterator>
+ inline typename result_of::advance_c<Iterator, N>::type const
+ advance_c(Iterator const& i)
+ {
+ return result_of::advance_c<Iterator, N>::call(i);
+ }
+
+ template<typename N, typename Iterator>
+ inline typename result_of::advance<Iterator, N>::type const
+ advance(Iterator const& i)
+ {
+ return result_of::advance<Iterator, N>::call(i);
+ }
+
+}} // namespace boost::fusion
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2009 Christopher Schmidt
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ITERATOR_DEREF_DATA_HPP
+#define BOOST_FUSION_ITERATOR_DEREF_DATA_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename>
+ struct deref_data_impl;
+
+ template <>
+ struct deref_data_impl<iterator_facade_tag>
+ {
+ template <typename It>
+ struct apply
+ : It::template deref_data<It>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It>
+ struct deref_data
+ : extension::deref_data_impl<typename traits::tag_of<It>::type>::
+ template apply<It>
+ {};
+ }
+
+ template <typename It>
+ typename result_of::deref_data<It>::type
+ deref_data(It const& it)
+ {
+ return result_of::deref_data<It>::call(it);
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_ADAPT_DEREF_TRAITS_05062005_0900)
+#define FUSION_ADAPT_DEREF_TRAITS_05062005_0900
+
+#include <boost/fusion/iterator/deref.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ struct adapt_deref_traits
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename
+ result_of::deref<typename Iterator::first_type>::type
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return *i.first;
+ }
+ };
+ };
+}}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_ADAPT_VALUE_TRAITS_05062005_0859)
+#define FUSION_ADAPT_VALUE_TRAITS_05062005_0859
+
+#include <boost/fusion/iterator/value_of.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ struct adapt_value_traits
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename
+ result_of::value_of<typename Iterator::first_type>::type
+ type;
+ };
+ };
+}}}
+
+#endif
+
+
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_SEQUENCE_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_SEQUENCE_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ struct segment_sequence_tag {};
+
+ // Here, Sequence is a sequence of ranges (which may or may not be
+ // segmented).
+ template<typename Sequence>
+ struct segment_sequence
+ : sequence_base<segment_sequence<Sequence> >
+ {
+ typedef fusion_sequence_tag tag;
+ typedef segment_sequence_tag fusion_tag;
+ typedef typename Sequence::is_view is_view;
+ typedef typename Sequence::category category;
+ typedef Sequence sequence_type;
+ sequence_type sequence;
+
+ explicit segment_sequence(Sequence const & seq)
+ : sequence(seq)
+ {}
+ };
+}
+
+namespace extension
+{
+ template<typename Tag>
+ struct is_segmented_impl;
+
+ template<>
+ struct is_segmented_impl<detail::segment_sequence_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ : mpl::true_
+ {};
+ };
+
+ template<typename Tag>
+ struct segments_impl;
+
+ template<>
+ struct segments_impl<detail::segment_sequence_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ {
+ typedef typename Sequence::sequence_type type;
+
+ static type call(Sequence & seq)
+ {
+ return seq.sequence;
+ }
+ };
+ };
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_EQUAL_TO_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_ITERATOR_EQUAL_TO_HPP_INCLUDED
+
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil_;
+
+ namespace detail
+ {
+ template <typename Stack1, typename Stack2>
+ struct segmented_equal_to
+ : mpl::and_<
+ segmented_equal_to<
+ typename Stack1::cdr_type,
+ typename Stack2::cdr_type
+ >
+ , result_of::equal_to<
+ typename Stack1::car_type::begin_type,
+ typename Stack2::car_type::begin_type
+ >
+ >
+ {};
+
+ template <>
+ struct segmented_equal_to<fusion::nil_, fusion::nil_>
+ : mpl::true_
+ {};
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_SEGMENTED_ITERATOR_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_ITERATOR_SEGMENTED_ITERATOR_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/deref_data.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/value_of_data.hpp>
+#include <boost/fusion/iterator/detail/segmented_equal_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil_;
+
+ namespace detail
+ {
+ template <typename Stack>
+ struct segmented_next_impl;
+ }
+
+ // A segmented iterator wraps a "context", which is a cons list
+ // of ranges, the frontmost is range over values and the rest
+ // are ranges over internal segments.
+ template <typename Context>
+ struct segmented_iterator
+ : iterator_facade<segmented_iterator<Context>, forward_traversal_tag>
+ {
+ explicit segmented_iterator(Context const& ctx)
+ : context(ctx)
+ {}
+
+ //auto deref(it)
+ //{
+ // return deref(begin(car(it.context)))
+ //}
+ template <typename It>
+ struct deref
+ {
+ typedef
+ typename result_of::deref<
+ typename It::context_type::car_type::begin_type
+ >::type
+ type;
+
+ static type call(It const& it)
+ {
+ return *it.context.car.first;
+ }
+ };
+
+ //auto deref_data(it)
+ //{
+ // return deref_data(begin(car(it.context)))
+ //}
+ template <typename It>
+ struct deref_data
+ {
+ typedef
+ typename result_of::deref_data<
+ typename It::context_type::car_type::begin_type
+ >::type
+ type;
+
+ static type call(It const& it)
+ {
+ return fusion::deref_data(it.context.car.first);
+ }
+ };
+
+ //auto key_of(it)
+ //{
+ // return key_of(begin(car(it.context)))
+ //}
+ template <typename It>
+ struct key_of
+ : result_of::key_of<typename It::context_type::car_type::begin_type>
+ {};
+
+ //auto value_of(it)
+ //{
+ // return value_of(begin(car(it.context)))
+ //}
+ template <typename It>
+ struct value_of
+ : result_of::value_of<typename It::context_type::car_type::begin_type>
+ {};
+
+ //auto value_of_data(it)
+ //{
+ // return value_of_data(begin(car(it.context)))
+ //}
+ template <typename It>
+ struct value_of_data
+ : result_of::value_of_data<typename It::context_type::car_type::begin_type>
+ {};
+
+ // Compare all the segment iterators in each stack, starting with
+ // the bottom-most.
+ template <
+ typename It1
+ , typename It2
+ , int Size1 = It1::context_type::size::value
+ , int Size2 = It2::context_type::size::value
+ >
+ struct equal_to
+ : mpl::false_
+ {};
+
+ template <typename It1, typename It2, int Size>
+ struct equal_to<It1, It2, Size, Size>
+ : detail::segmented_equal_to<
+ typename It1::context_type
+ , typename It2::context_type
+ >
+ {};
+
+ template <typename It>
+ struct next
+ {
+ typedef detail::segmented_next_impl<typename It::context_type> impl;
+ typedef segmented_iterator<typename impl::type> type;
+
+ static type call(It const& it)
+ {
+ return type(impl::call(it.context));
+ }
+ };
+
+ typedef Context context_type;
+ context_type context;
+ };
+
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_NEXT_IMPL_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_ITERATOR_NEXT_IMPL_HPP_INCLUDED
+
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/container/list/cons_fwd.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename First, typename Second>
+ struct iterator_range;
+
+ template <typename Context>
+ struct segmented_iterator;
+
+ namespace detail
+ {
+ template <typename Sequence, typename Stack>
+ struct segmented_begin_impl;
+
+ //bool is_invalid(stack)
+ //{
+ // return empty(car(stack));
+ //}
+
+ template <typename Stack>
+ struct is_invalid
+ : result_of::equal_to<
+ typename Stack::car_type::begin_type,
+ typename Stack::car_type::end_type
+ >
+ {};
+
+ ////Advance the first iterator in the seq at the
+ ////top of a stack of iterator ranges. Return the
+ ////new stack.
+ //auto pop_front_car(stack)
+ //{
+ // return cons(iterator_range(next(begin(car(stack))), end(car(stack))), cdr(stack));
+ //}
+
+ template <typename Stack>
+ struct pop_front_car
+ {
+ typedef
+ iterator_range<
+ typename result_of::next<
+ typename Stack::car_type::begin_type
+ >::type
+ , typename Stack::car_type::end_type
+ >
+ car_type;
+
+ typedef
+ cons<car_type, typename Stack::cdr_type>
+ type;
+
+ static type call(Stack const & stack)
+ {
+ return type(
+ car_type(fusion::next(stack.car.first), stack.car.last),
+ stack.cdr);
+ }
+ };
+
+ template <
+ typename Stack,
+ typename Next = typename pop_front_car<Stack>::type,
+ bool IsInvalid = is_invalid<Next>::value,
+ int StackSize = Stack::size::value>
+ struct segmented_next_impl_recurse;
+
+ // Handle the case where the top of the stack has no usable
+ //auto segmented_next_impl_recurse3(stack)
+ //{
+ // if (size(stack) == 1)
+ // return cons(iterator_range(end(car(stack)), end(car(stack))), nil_);
+ // else
+ // return segmented_next_impl_recurse(stack.cdr);
+ //}
+
+ template <
+ typename Stack,
+ int StackSize = Stack::size::value>
+ struct segmented_next_impl_recurse3
+ {
+ typedef segmented_next_impl_recurse<typename Stack::cdr_type> impl;
+ typedef typename impl::type type;
+
+ static type call(Stack const & stack)
+ {
+ return impl::call(stack.cdr);
+ }
+ };
+
+ template <typename Stack>
+ struct segmented_next_impl_recurse3<Stack, 1>
+ {
+ typedef typename Stack::car_type::end_type end_type;
+ typedef iterator_range<end_type, end_type> range_type;
+ typedef cons<range_type> type;
+
+ static type call(Stack const & stack)
+ {
+ return type(range_type(stack.car.last, stack.car.last));
+ }
+ };
+
+ //auto segmented_next_impl_recurse2(stack)
+ //{
+ // auto res = segmented_begin_impl(front(car(stack)), stack);
+ // if (is_invalid(res))
+ // return segmented_next_impl_recurse3(stack);
+ // else
+ // return res;
+ //}
+
+ template <
+ typename Stack,
+ typename Sequence =
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<
+ typename Stack::car_type::begin_type
+ >::type
+ >::type
+ >::type,
+ typename Result =
+ typename segmented_begin_impl<Sequence, Stack>::type,
+ bool IsInvalid =
+ is_invalid<Result>::value>
+ struct segmented_next_impl_recurse2
+ {
+ typedef segmented_next_impl_recurse3<Stack> impl;
+ typedef typename impl::type type;
+
+ static type call(Stack const & stack)
+ {
+ return impl::call(stack);
+ }
+ };
+
+ template <typename Stack, typename Sequence, typename Result>
+ struct segmented_next_impl_recurse2<Stack, Sequence, Result, false>
+ {
+ typedef Result type;
+
+ static type call(Stack const & stack)
+ {
+ return segmented_begin_impl<Sequence, Stack>::call(*stack.car.first, stack);
+ }
+ };
+
+ //auto segmented_next_impl_recurse(stack)
+ //{
+ // auto next = pop_front_car(stack);
+ // if (is_invalid(next))
+ // if (1 == size(stack))
+ // return next;
+ // else
+ // return segmented_next_impl_recurse(cdr(stack));
+ // else
+ // return segmented_next_impl_recurse2(next)
+ //}
+
+ template <typename Stack, typename Next, bool IsInvalid, int StackSize>
+ struct segmented_next_impl_recurse
+ {
+ typedef
+ typename segmented_next_impl_recurse<typename Stack::cdr_type>::type
+ type;
+
+ static type call(Stack const& stack)
+ {
+ return segmented_next_impl_recurse<typename Stack::cdr_type>::call(stack.cdr);
+ }
+ };
+
+ template <typename Stack, typename Next>
+ struct segmented_next_impl_recurse<Stack, Next, true, 1>
+ {
+ typedef Next type;
+
+ static type call(Stack const & stack)
+ {
+ return pop_front_car<Stack>::call(stack);
+ }
+ };
+
+ template <typename Stack, typename Next, int StackSize>
+ struct segmented_next_impl_recurse<Stack, Next, false, StackSize>
+ {
+ typedef segmented_next_impl_recurse2<Next> impl;
+ typedef typename impl::type type;
+
+ static type call(Stack const & stack)
+ {
+ return impl::call(pop_front_car<Stack>::call(stack));
+ }
+ };
+
+ //auto segmented_next_impl(stack)
+ //{
+ // // car(stack) is a seq of values, not a seq of segments
+ // auto next = pop_front_car(stack);
+ // if (is_invalid(next))
+ // return segmented_next_impl_recurse(cdr(next));
+ // else
+ // return next;
+ //}
+
+ template <
+ typename Stack,
+ typename Next = typename pop_front_car<Stack>::type,
+ bool IsInvalid = is_invalid<Next>::value>
+ struct segmented_next_impl_aux
+ {
+ typedef segmented_next_impl_recurse<typename Stack::cdr_type> impl;
+ typedef typename impl::type type;
+
+ static type call(Stack const & stack)
+ {
+ return impl::call(stack.cdr);
+ }
+ };
+
+ template <typename Stack, typename Next>
+ struct segmented_next_impl_aux<Stack, Next, false>
+ {
+ typedef Next type;
+
+ static type call(Stack const & stack)
+ {
+ return pop_front_car<Stack>::call(stack);
+ }
+ };
+
+ template <typename Stack>
+ struct segmented_next_impl
+ : segmented_next_impl_aux<Stack>
+ {};
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_DISTANCE_09172005_0721)
+#define FUSION_DISTANCE_09172005_0721
+
+#include <boost/fusion/iterator/detail/distance.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct boost_array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct distance_impl
+ {
+ // default implementation
+ template <typename First, typename Last>
+ struct apply : distance_detail::linear_distance<First, Last>
+ {};
+ };
+
+ template <>
+ struct distance_impl<iterator_facade_tag>
+ {
+ template <typename First, typename Last>
+ struct apply : First::template distance<First, Last> {};
+ };
+
+ template <>
+ struct distance_impl<boost_array_iterator_tag>;
+
+ template <>
+ struct distance_impl<mpl_iterator_tag>;
+
+ template <>
+ struct distance_impl<std_pair_iterator_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename First, typename Last>
+ struct distance
+ : extension::distance_impl<typename detail::tag_of<First>::type>::
+ template apply<First, Last>
+ {
+ typedef typename extension::distance_impl<typename detail::tag_of<First>::type>::
+ template apply<First, Last>::type distance_application;
+ BOOST_STATIC_CONSTANT(int, value = distance_application::value);
+ };
+ }
+
+ template <typename First, typename Last>
+ inline typename result_of::distance<First, Last>::type
+ distance(First const& a, Last const& b)
+ {
+ return result_of::distance<First, Last>::call(a,b);
+ }
+}}
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_EQUAL_TO_05052005_1208)
template <>
struct equal_to_impl<iterator_facade_tag>
{
- template <typename I1, typename I2>
- struct apply : I1::template equal_to<I1, I2> {};
+ template <typename It1, typename It2, typename Tag1, typename Tag2>
+ struct dispatch : mpl::false_ {};
+
+ template <typename It1, typename It2, typename Tag>
+ struct dispatch<It1, It2, Tag, Tag> // same tag
+ : It1::template equal_to<It1, It2>
+ {};
+
+ template<typename It1, typename It2>
+ struct apply : dispatch<It1, It2,
+ typename It1::fusion_tag, typename It2::fusion_tag>
+ {};
};
template <>
namespace iterator_operators
{
template <typename Iter1, typename Iter2>
- inline typename
- enable_if<
+ inline typename
+ boost::enable_if<
mpl::and_<is_fusion_iterator<Iter1>, is_fusion_iterator<Iter2> >
, bool
>::type
}
template <typename Iter1, typename Iter2>
- inline typename
- enable_if<
+ inline typename
+ boost::enable_if<
mpl::and_<is_fusion_iterator<Iter1>, is_fusion_iterator<Iter2> >
, bool
>::type
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2009 Christopher Schmidt
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ITERATOR_KEY_OF_HPP
+#define BOOST_FUSION_ITERATOR_KEY_OF_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename>
+ struct key_of_impl;
+
+ template <>
+ struct key_of_impl<iterator_facade_tag>
+ {
+ template <typename It>
+ struct apply
+ : It::template key_of<It>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It>
+ struct key_of
+ : extension::key_of_impl<typename traits::tag_of<It>::type>::
+ template apply<It>
+ {};
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_ITERATOR_05062005_1218)
+#define FUSION_CONVERT_ITERATOR_05062005_1218
+
+#include <boost/fusion/support/is_iterator.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename Iterator>
+ struct mpl_iterator; // forward declaration
+
+ // Test T. If it is a fusion iterator, return a reference to it.
+ // else, assume it is an mpl iterator.
+
+ template <typename T>
+ struct convert_iterator
+ {
+ typedef typename
+ mpl::if_<
+ is_fusion_iterator<T>
+ , T
+ , mpl_iterator<T>
+ >::type
+ type;
+
+ static T const&
+ call(T const& x, mpl::true_)
+ {
+ return x;
+ }
+
+ static mpl_iterator<T>
+ call(T const& /*x*/, mpl::false_)
+ {
+ return mpl_iterator<T>();
+ }
+
+ static typename
+ mpl::if_<
+ is_fusion_iterator<T>
+ , T const&
+ , mpl_iterator<T>
+ >::type
+ call(T const& x)
+ {
+ return call(x, is_fusion_iterator<T>());
+ }
+ };
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_FUSION_ITERATOR_10012005_1551)
+#define FUSION_FUSION_ITERATOR_10012005_1551
+
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+#include <boost/fusion/iterator/advance.hpp>
+#include <boost/fusion/iterator/distance.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/mpl/next_prior.hpp>
+#include <boost/mpl/advance_fwd.hpp>
+#include <boost/mpl/distance_fwd.hpp>
+#include <boost/mpl/iterator_tags.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/is_base_of.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+
+template<class Category>
+struct to_mpl_category {
+ typedef typename mpl::eval_if<
+ is_base_of<random_access_traversal_tag, Category>,
+ mpl::random_access_iterator_tag,
+ mpl::eval_if<
+ is_base_of<bidirectional_traversal_tag, Category>,
+ mpl::bidirectional_iterator_tag,
+ mpl::forward_iterator_tag
+ >
+ >::type type;
+};
+
+}}}
+
+namespace boost { namespace mpl
+{
+ template <typename Iterator>
+ struct fusion_iterator
+ {
+ typedef typename fusion::result_of::value_of<Iterator>::type type;
+ typedef typename fusion::traits::category_of<Iterator>::type fusion_category;
+ typedef typename fusion::detail::to_mpl_category<fusion_category>::type category;
+ typedef Iterator iterator;
+ };
+
+ template <typename Iterator>
+ struct next<fusion_iterator<Iterator> >
+ {
+ typedef fusion_iterator<typename fusion::result_of::next<Iterator>::type> type;
+ };
+
+ template <typename Iterator>
+ struct prior<fusion_iterator<Iterator> >
+ {
+ typedef fusion_iterator<typename fusion::result_of::prior<Iterator>::type> type;
+ };
+
+ template <typename Iterator, typename N>
+ struct advance<fusion_iterator<Iterator>, N>
+ {
+ typedef fusion_iterator<typename fusion::result_of::advance<Iterator, N>::type> type;
+ };
+
+ template <typename First, typename Last>
+ struct distance<fusion_iterator<First>, fusion_iterator<Last> >
+ : fusion::result_of::distance<First, Last>
+ {};
+
+}}
+
+#endif
+
+
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_ITERATOR_HPP_INCLUDED
+
+#include <boost/fusion/iterator/detail/segmented_iterator.hpp>
+#include <boost/fusion/iterator/detail/segmented_next_impl.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/container/list/cons.hpp>
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_VALUE_OF_05052005_1126)
+#define FUSION_VALUE_OF_05052005_1126
+
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct boost_array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl
+ {
+ template <typename Iterator>
+ struct apply {};
+ };
+
+ template <>
+ struct value_of_impl<iterator_facade_tag>
+ {
+ template <typename Iterator>
+ struct apply : Iterator::template value_of<Iterator> {};
+ };
+
+ template <>
+ struct value_of_impl<boost_array_iterator_tag>;
+
+ template <>
+ struct value_of_impl<mpl_iterator_tag>;
+
+ template <>
+ struct value_of_impl<std_pair_iterator_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename Iterator>
+ struct value_of
+ : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
+ template apply<Iterator>
+ {};
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2009 Christopher Schmidt
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ITERATOR_VALUE_OF_DATA_HPP
+#define BOOST_FUSION_ITERATOR_VALUE_OF_DATA_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename>
+ struct value_of_data_impl;
+
+ template <>
+ struct value_of_data_impl<iterator_facade_tag>
+ {
+ template <typename It>
+ struct apply
+ : It::template value_of_data<It>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It>
+ struct value_of_data
+ : extension::value_of_data_impl<typename traits::tag_of<It>::type>::
+ template apply<It>
+ {};
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_BEGIN_10022005_1620)
+#define FUSION_BEGIN_10022005_1620
+
+#include <boost/mpl/begin_end.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/adapted/mpl/detail/begin_impl.hpp>
+#include <boost/fusion/iterator/mpl/fusion_iterator.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef fusion_iterator<typename fusion::result_of::begin<Sequence>::type> type;
+ };
+ };
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_END_10022005_1619)
+#define FUSION_END_10022005_1619
+
+#include <boost/mpl/begin_end.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/adapted/mpl/detail/end_impl.hpp>
+#include <boost/fusion/iterator/mpl/fusion_iterator.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef fusion_iterator<typename fusion::result_of::end<Sequence>::type> type;
+ };
+ };
+}}
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
+++ /dev/null
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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)
-==============================================================================*/
-#if !defined(FUSION_ENABLE_COMPARISON_09232005_1958)
-#define FUSION_ENABLE_COMPARISON_09232005_1958
-
-#include <boost/mpl/or.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/mpl/equal_to.hpp>
-#include <boost/fusion/support/is_sequence.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
-#include <boost/fusion/support/detail/is_mpl_sequence.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template <typename Sequence>
- struct is_native_fusion_sequence : is_base_of<sequence_root, Sequence> {};
-
- template <typename Seq1, typename Seq2>
- struct enable_equality
- : mpl::or_<is_native_fusion_sequence<Seq1>, is_native_fusion_sequence<Seq2> >
- {};
-
- template <typename Seq1, typename Seq2>
- struct enable_comparison
- : mpl::and_<
- mpl::or_<is_native_fusion_sequence<Seq1>, is_native_fusion_sequence<Seq2> >
- , mpl::equal_to<result_of::size<Seq1>, result_of::size<Seq2> >
- >
- {};
-
-}}}
-
-#endif
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#include <boost/fusion/iterator/deref.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/as_const.hpp>
namespace boost { namespace fusion { namespace detail
{
static bool
call(I1 const& a, I2 const& b, mpl::false_)
{
- return *a == *b
+ return extension::as_const(*a) == extension::as_const(*b)
&& call(fusion::next(a), fusion::next(b));
}
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#include <boost/fusion/iterator/deref.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/as_const.hpp>
namespace boost { namespace fusion { namespace detail
{
static bool
call(I1 const& a, I2 const& b, mpl::false_)
{
- return *a > *b ||
- (!(*b > *a) && call(fusion::next(a), fusion::next(b)));
+ return extension::as_const(*a) > extension::as_const(*b) ||
+ (!(extension::as_const(*b) > extension::as_const(*a)) &&
+ call(fusion::next(a), fusion::next(b)));
}
template <typename I1, typename I2>
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#include <boost/fusion/iterator/deref.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/as_const.hpp>
namespace boost { namespace fusion { namespace detail
{
static bool
call(I1 const& a, I2 const& b, mpl::false_)
{
- return *a >= *b
- && (!(*b >= *a) || call(fusion::next(a), fusion::next(b)));
+ return extension::as_const(*a) >= extension::as_const(*b)
+ && (!(extension::as_const(*b) >= extension::as_const(*a)) ||
+ call(fusion::next(a), fusion::next(b)));
}
template <typename I1, typename I2>
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#include <boost/fusion/iterator/deref.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/as_const.hpp>
namespace boost { namespace fusion { namespace detail
{
static bool
call(I1 const& a, I2 const& b, mpl::false_)
{
- return *a < *b ||
- (!(*b < *a) && call(fusion::next(a), fusion::next(b)));
+ return extension::as_const(*a) < extension::as_const(*b) ||
+ (!(extension::as_const(*b) < extension::as_const(*a)) &&
+ call(fusion::next(a), fusion::next(b)));
}
template <typename I1, typename I2>
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#include <boost/fusion/iterator/deref.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/as_const.hpp>
namespace boost { namespace fusion { namespace detail
{
static bool
call(I1 const& a, I2 const& b, mpl::false_)
{
- return *a <= *b
- && (!(*b <= *a) || call(fusion::next(a), fusion::next(b)));
+ return extension::as_const(*a) <= extension::as_const(*b)
+ && (!(extension::as_const(*b) <= extension::as_const(*a)) ||
+ call(fusion::next(a), fusion::next(b)));
}
template <typename I1, typename I2>
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#include <boost/fusion/iterator/deref.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/as_const.hpp>
namespace boost { namespace fusion { namespace detail
{
static bool
call(I1 const& a, I2 const& b, mpl::false_)
{
- return *a != *b
+ return extension::as_const(*a) != extension::as_const(*b)
|| call(fusion::next(a), fusion::next(b));
}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_ENABLE_COMPARISON_09232005_1958)
+#define FUSION_ENABLE_COMPARISON_09232005_1958
+
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace fusion { namespace traits
+{
+ template <typename Seq1, typename Seq2, typename Enable = void>
+ struct enable_equality
+ : mpl::or_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> >
+ {};
+
+ template <typename Seq1, typename Seq2, typename Enable = void>
+ struct enable_comparison
+ : mpl::and_<
+ mpl::or_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> >
+ , mpl::equal_to<result_of::size<Seq1>, result_of::size<Seq2> >
+ >
+ {};
+}}}
+
+#endif
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_EQUAL_TO_05052005_0431)
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
#include <boost/fusion/sequence/comparison/detail/equal_to.hpp>
-#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+#include <boost/fusion/sequence/comparison/enable_comparison.hpp>
#include <boost/config.hpp>
#if defined (BOOST_MSVC)
{
template <typename Seq1, typename Seq2>
inline typename
- enable_if<
- detail::enable_equality<Seq1, Seq2>
+ boost::enable_if<
+ traits::enable_equality<Seq1, Seq2>
, bool
>::type
operator==(Seq1 const& a, Seq2 const& b)
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_GREATER_05052005_0432)
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
-#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+#include <boost/fusion/sequence/comparison/enable_comparison.hpp>
#if defined(FUSION_DIRECT_OPERATOR_USAGE)
#include <boost/fusion/sequence/comparison/detail/greater.hpp>
{
template <typename Seq1, typename Seq2>
inline typename
- enable_if<
- detail::enable_comparison<Seq1, Seq2>
+ boost::enable_if<
+ traits::enable_comparison<Seq1, Seq2>
, bool
>::type
operator>(Seq1 const& a, Seq2 const& b)
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_GREATER_EQUAL_05052005_0432)
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
-#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+#include <boost/fusion/sequence/comparison/enable_comparison.hpp>
#if defined(FUSION_DIRECT_OPERATOR_USAGE)
#include <boost/fusion/sequence/comparison/detail/greater_equal.hpp>
{
template <typename Seq1, typename Seq2>
inline typename
- enable_if<
- detail::enable_comparison<Seq1, Seq2>
+ boost::enable_if<
+ traits::enable_comparison<Seq1, Seq2>
, bool
>::type
operator>=(Seq1 const& a, Seq2 const& b)
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_LESS_05052005_0432)
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
#include <boost/fusion/sequence/comparison/detail/less.hpp>
-#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+#include <boost/fusion/sequence/comparison/enable_comparison.hpp>
namespace boost { namespace fusion
{
{
template <typename Seq1, typename Seq2>
inline typename
- enable_if<
- detail::enable_comparison<Seq1, Seq2>
+ boost::enable_if<
+ traits::enable_comparison<Seq1, Seq2>
, bool
>::type
operator<(Seq1 const& a, Seq2 const& b)
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_LESS_EQUAL_05052005_0432)
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
-#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+#include <boost/fusion/sequence/comparison/enable_comparison.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
#if defined(FUSION_DIRECT_OPERATOR_USAGE)
#include <boost/fusion/sequence/comparison/detail/less_equal.hpp>
namespace operators
{
-#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1400)
+#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1400)
// Workaround for VC8.0 and VC7.1
template <typename Seq1, typename Seq2>
inline bool
}
template <typename Seq1, typename Seq2>
- inline typename disable_if<detail::is_native_fusion_sequence<Seq2>, bool>::type
+ inline typename disable_if<traits::is_native_fusion_sequence<Seq2>, bool>::type
operator<=(sequence_base<Seq1> const& a, Seq2 const& b)
{
return less_equal(a.derived(), b);
}
template <typename Seq1, typename Seq2>
- inline typename disable_if<detail::is_native_fusion_sequence<Seq1>, bool>::type
+ inline typename disable_if<traits::is_native_fusion_sequence<Seq1>, bool>::type
operator<=(Seq1 const& a, sequence_base<Seq2> const& b)
{
return less_equal(a, b.derived());
#else
// Somehow VC8.0 and VC7.1 does not like this code
-// but barfs somewhere else.
+// but barfs somewhere else.
template <typename Seq1, typename Seq2>
inline typename
- enable_if<
- detail::enable_comparison<Seq1, Seq2>
+ boost::enable_if<
+ traits::enable_comparison<Seq1, Seq2>
, bool
>::type
operator<=(Seq1 const& a, Seq2 const& b)
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_NOT_EQUAL_TO_05052005_0431)
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
-#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+#include <boost/fusion/sequence/comparison/enable_comparison.hpp>
#if defined(FUSION_DIRECT_OPERATOR_USAGE)
#include <boost/fusion/sequence/comparison/detail/not_equal_to.hpp>
{
template <typename Seq1, typename Seq2>
inline typename
- enable_if<
- detail::enable_equality<Seq1, Seq2>
+ boost::enable_if<
+ traits::enable_equality<Seq1, Seq2>
, bool
>::type
operator!=(Seq1 const& a, Seq2 const& b)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_AT_05042005_0722)
#include <boost/mpl/int.hpp>
#include <boost/type_traits/is_const.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/fusion/support/tag_of.hpp>
#include <boost/fusion/support/detail/access.hpp>
struct boost_array_tag; // boost::array tag
struct mpl_sequence_tag; // mpl sequence tag
struct std_pair_tag; // std::pair tag
+ struct std_tuple_tag; // std::tuple tag
namespace extension
{
template <>
struct at_impl<std_pair_tag>;
+
+ template <>
+ struct at_impl<std_tuple_tag>;
}
namespace result_of
{
template <typename Sequence, typename N>
- struct at
+ struct at
: extension::at_impl<typename detail::tag_of<Sequence>::type>::
template apply<Sequence, N>
{};
template <typename N, typename Sequence>
- inline typename
+ inline typename
lazy_disable_if<
is_const<Sequence>
, result_of::at<Sequence, N>
}
template <int N, typename Sequence>
- inline typename
+ inline typename
lazy_disable_if<
is_const<Sequence>
, result_of::at_c<Sequence, N>
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#if !defined(FUSION_BEGIN_04052005_1132)
#define FUSION_BEGIN_04052005_1132
+#include <boost/blank.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/is_segmented.hpp>
+#include <boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp>
namespace boost { namespace fusion
{
struct begin_impl
{
template <typename Sequence>
- struct apply;
+ struct apply
+ : mpl::if_<
+ traits::is_segmented<Sequence>
+ , detail::segmented_begin<Sequence>
+ , blank
+ >::type
+ {};
};
template <>
}
template <typename Sequence>
- inline typename result_of::begin<Sequence>::type const
+ inline typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::begin<Sequence>
+ >::type const
begin(Sequence& seq)
{
return result_of::begin<Sequence>::call(seq);
}
template <typename Sequence>
- inline typename result_of::begin<Sequence const>::type const
+ inline typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::begin<Sequence const>
+ >::type const
begin(Sequence const& seq)
{
return result_of::begin<Sequence const>::call(seq);
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_BEGIN_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_BEGIN_HPP_INCLUDED
+
+#include <boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp>
+#include <boost/fusion/iterator/segmented_iterator.hpp>
+#include <boost/fusion/view/iterator_range.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/fusion/container/list/cons.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ //auto segmented_begin( seq )
+ //{
+ // return make_segmented_iterator( segmented_begin_impl( seq, nil_ ) );
+ //}
+
+ template <typename Sequence, typename Nil_ = fusion::nil_>
+ struct segmented_begin
+ {
+ typedef
+ segmented_iterator<
+ typename segmented_begin_impl<Sequence, Nil_>::type
+ >
+ type;
+
+ static type call(Sequence& seq)
+ {
+ return type(
+ segmented_begin_impl<Sequence, Nil_>::call(seq, Nil_()));
+ }
+ };
+
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_BEGIN_IMPL_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_BEGIN_IMPL_HPP_INCLUDED
+
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/fusion/container/list/cons_fwd.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
+#include <boost/fusion/support/is_segmented.hpp>
+#include <boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp>
+#include <boost/fusion/support/detail/segmented_fold_until_impl.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename First, typename Last>
+ struct iterator_range;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ struct segmented_begin_fun
+ {
+ template <typename Sequence, typename State, typename Context>
+ struct apply
+ {
+ typedef
+ iterator_range<
+ typename fusion::result_of::begin<Sequence>::type
+ , typename fusion::result_of::end<Sequence>::type
+ >
+ range_type;
+
+ typedef cons<range_type, Context> type;
+ typedef mpl::false_ continue_type;
+
+ static type call(Sequence& seq, State const&, Context const& context, segmented_begin_fun)
+ {
+ return type(range_type(fusion::begin(seq), fusion::end(seq)), context);
+ }
+ };
+ };
+
+ template <typename Sequence, typename Stack, bool IsSegmented = traits::is_segmented<Sequence>::type::value>
+ struct segmented_begin_impl_aux
+ {
+ typedef
+ segmented_end_impl<Sequence, Stack>
+ end_impl;
+
+ typedef
+ segmented_fold_until_impl<
+ Sequence
+ , typename end_impl::type
+ , Stack
+ , segmented_begin_fun
+ >
+ fold_impl;
+
+ typedef typename fold_impl::type type;
+
+ static type call(Sequence& seq, Stack const& stack)
+ {
+ return fold_impl::call(seq, end_impl::call(seq, stack), stack, segmented_begin_fun());
+ }
+ };
+
+ template <typename Sequence, typename Stack>
+ struct segmented_begin_impl_aux<Sequence, Stack, false>
+ {
+ typedef typename result_of::begin<Sequence>::type begin_type;
+ typedef typename result_of::end<Sequence>::type end_type;
+ typedef iterator_range<begin_type, end_type> pair_type;
+ typedef cons<pair_type, Stack> type;
+
+ static type call(Sequence& seq, Stack stack)
+ {
+ return type(pair_type(fusion::begin(seq), fusion::end(seq)), stack);
+ }
+ };
+
+ template <typename Sequence, typename Stack>
+ struct segmented_begin_impl
+ : segmented_begin_impl_aux<Sequence, Stack>
+ {};
+
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_END_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_END_HPP_INCLUDED
+
+#include <boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp>
+#include <boost/fusion/iterator/segmented_iterator.hpp>
+#include <boost/fusion/container/list/cons.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ //auto segmented_end( seq )
+ //{
+ // return make_segmented_iterator( segmented_end_impl( seq ) );
+ //}
+
+ template <typename Sequence, typename Nil_ = fusion::nil_>
+ struct segmented_end
+ {
+ typedef
+ segmented_iterator<
+ typename segmented_end_impl<Sequence, Nil_>::type
+ >
+ type;
+
+ static type call(Sequence & seq)
+ {
+ return type(
+ segmented_end_impl<Sequence, Nil_>::call(seq, Nil_()));
+ }
+ };
+
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_END_IMPL_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_END_IMPL_HPP_INCLUDED
+
+#include <boost/mpl/assert.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
+#include <boost/fusion/container/list/cons_fwd.hpp>
+#include <boost/fusion/support/is_segmented.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename First, typename Last>
+ struct iterator_range;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ //auto segmented_end_impl( seq, stack )
+ //{
+ // assert(is_segmented(seq));
+ // auto it = end(segments(seq));
+ // return cons(iterator_range(it, it), stack);
+ //}
+
+ template <typename Sequence, typename Stack>
+ struct segmented_end_impl
+ {
+ BOOST_MPL_ASSERT((traits::is_segmented<Sequence>));
+
+ typedef
+ typename result_of::end<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::segments<Sequence>::type
+ >::type
+ >::type
+ >::type
+ end_type;
+
+ typedef iterator_range<end_type, end_type> pair_type;
+ typedef cons<pair_type, Stack> type;
+
+ static type call(Sequence & seq, Stack stack)
+ {
+ end_type end = fusion::end(fusion::segments(seq));
+ return type(pair_type(end, end), stack);
+ }
+ };
+
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_SIZE_08112006_1141)
+#define BOOST_FUSION_SEGMENTED_SIZE_08112006_1141
+
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/mpl/fold.hpp>
+#include <boost/mpl/plus.hpp>
+#include <boost/mpl/size_t.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
+#include <boost/fusion/mpl/begin.hpp>
+#include <boost/fusion/mpl/end.hpp>
+#include <boost/fusion/support/is_segmented.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ ///////////////////////////////////////////////////////////////////////////
+ // calculates the size of any segmented data structure.
+ template<typename Sequence>
+ struct segmented_size;
+
+ ///////////////////////////////////////////////////////////////////////////
+ template<typename Sequence, bool IsSegmented = traits::is_segmented<Sequence>::value>
+ struct segmented_size_impl
+ : mpl::fold<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::segments<Sequence>::type
+ >::type
+ >::type
+ , mpl::size_t<0>
+ , mpl::plus<mpl::_1, segmented_size<remove_reference<mpl::_2> > >
+ >::type
+ {};
+
+ template<typename Sequence>
+ struct segmented_size_impl<Sequence, false>
+ : result_of::size<Sequence>::type
+ {};
+
+ template<typename Sequence>
+ struct segmented_size
+ : segmented_size_impl<Sequence>
+ {};
+
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_EMPTY_09162005_0335)
+#define FUSION_EMPTY_09162005_0335
+
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct sequence_facade_tag;
+ struct mpl_sequence_tag; // mpl sequence tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct empty_impl
+ {
+ template <typename Sequence>
+ struct apply
+ : mpl::bool_<(result_of::size<Sequence>::value == 0)>
+ {};
+ };
+
+ template <>
+ struct empty_impl<sequence_facade_tag>
+ {
+ template <typename Sequence>
+ struct apply : Sequence::template empty<Sequence> {};
+ };
+
+ template <>
+ struct empty_impl<mpl_sequence_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct empty
+ : extension::empty_impl<typename detail::tag_of<Sequence>::type>::
+ template apply<Sequence>
+ {};
+ }
+
+ template <typename Sequence>
+ inline typename result_of::empty<Sequence>::type
+ empty(Sequence const&)
+ {
+ typedef typename result_of::empty<Sequence>::type result;
+ return result();
+ }
+}}
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#if !defined(FUSION_END_04052005_1141)
#define FUSION_END_04052005_1141
+#include <boost/blank.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/is_segmented.hpp>
+#include <boost/fusion/sequence/intrinsic/detail/segmented_end.hpp>
namespace boost { namespace fusion
{
struct end_impl
{
template <typename Sequence>
- struct apply;
+ struct apply
+ : mpl::if_<
+ traits::is_segmented<Sequence>
+ , detail::segmented_end<Sequence>
+ , blank
+ >::type
+ {};
};
template <>
}
template <typename Sequence>
- inline typename result_of::end<Sequence>::type const
+ inline typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::end<Sequence>
+ >::type const
end(Sequence& seq)
{
return result_of::end<Sequence>::call(seq);
}
template <typename Sequence>
- inline typename result_of::end<Sequence const>::type const
+ inline typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::end<Sequence const>
+ >::type const
end(Sequence const& seq)
{
return result_of::end<Sequence const>::call(seq);
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2006 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTS_04052005_1141)
+#define BOOST_FUSION_SEGMENTS_04052005_1141
+
+#include <boost/type_traits/is_const.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct sequence_facade_tag;
+ struct iterator_range_tag;
+
+ // segments: returns a sequence of sequences
+ namespace extension
+ {
+ template <typename Tag>
+ struct segments_impl
+ {
+ template <typename Sequence>
+ struct apply {};
+ };
+
+ template <>
+ struct segments_impl<sequence_facade_tag>
+ {
+ template <typename Sequence>
+ struct apply : Sequence::template segments<Sequence> {};
+ };
+
+ template <>
+ struct segments_impl<iterator_range_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct segments
+ {
+ typedef typename traits::tag_of<Sequence>::type tag_type;
+
+ typedef typename
+ extension::segments_impl<tag_type>::template apply<Sequence>::type
+ type;
+ };
+ }
+
+ template <typename Sequence>
+ inline typename
+ lazy_disable_if<
+ is_const<Sequence>
+ , result_of::segments<Sequence>
+ >::type
+ segments(Sequence& seq)
+ {
+ typedef typename traits::tag_of<Sequence>::type tag_type;
+ return extension::segments_impl<tag_type>::template apply<Sequence>::call(seq);
+ }
+
+ template <typename Sequence>
+ inline typename result_of::segments<Sequence const>::type
+ segments(Sequence const& seq)
+ {
+ typedef typename traits::tag_of<Sequence const>::type tag_type;
+ return extension::segments_impl<tag_type>::template apply<Sequence const>::call(seq);
+ }
+}}
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#if !defined(FUSION_SIZE_05052005_0214)
#define FUSION_SIZE_05052005_0214
+#include <boost/utility/enable_if.hpp>
+#include <boost/mpl/if.hpp>
#include <boost/mpl/int.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/is_segmented.hpp>
+#include <boost/fusion/sequence/intrinsic/detail/segmented_size.hpp>
namespace boost { namespace fusion
{
template <typename Tag>
struct size_impl
{
+ template<typename Sequence>
+ struct unsegmented_size : Sequence::size {};
+
template <typename Sequence>
- struct apply : Sequence::size {};
+ struct apply
+ : mpl::if_<
+ traits::is_segmented<Sequence>
+ , detail::segmented_size<Sequence>
+ , unsegmented_size<Sequence>
+ >::type
+ {};
};
template <>
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#define FUSION_VALUE_AT_05052005_0229
#include <boost/mpl/int.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#include <boost/fusion/support/tag_of.hpp>
namespace boost { namespace fusion
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEQUENCE_INTRINSIC_FWD_HPP_INCLUDED)
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_FWD_HPP_INCLUDED
+
+#include <boost/type_traits/is_const.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <typename Tag>
+ struct begin_impl;
+
+ template <typename Tag>
+ struct empty_impl;
+
+ template <typename Tag>
+ struct end_impl;
+
+ template <typename Tag>
+ struct has_key_impl;
+
+ template <typename Tag>
+ struct segments_impl;
+
+ template <typename Tag>
+ struct size_impl;
+
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <typename Tag>
+ struct at_key_impl;
+
+ template <typename Tag>
+ struct value_at_key_impl;
+ }
+
+ namespace result_of
+ {
+ template <typename Sequence, typename N>
+ struct at;
+
+ template <typename Sequence, int N>
+ struct at_c;
+
+ template <typename Sequence>
+ struct back;
+
+ template <typename Sequence>
+ struct begin;
+
+ template <typename Sequence>
+ struct empty;
+
+ template <typename Sequence>
+ struct end;
+
+ template <typename Sequence>
+ struct front;
+
+ template <typename Sequence, typename Key>
+ struct has_key;
+
+ template <typename Sequence>
+ struct segments;
+
+ template <typename Sequence>
+ struct size;
+
+ template <typename Sequence, typename N>
+ struct value_at;
+
+ template <typename Sequence, int N>
+ struct value_at_c;
+
+ template <typename Sequence, typename Key>
+ struct at_key;
+
+ template <typename Sequence, typename N>
+ struct value_at_key;
+ }
+
+ template <typename N, typename Sequence>
+ typename
+ lazy_disable_if<
+ is_const<Sequence>
+ , result_of::at<Sequence, N>
+ >::type
+ at(Sequence& seq);
+
+ template <typename N, typename Sequence>
+ typename result_of::at<Sequence const, N>::type
+ at(Sequence const& seq);
+
+ template <int N, typename Sequence>
+ typename
+ lazy_disable_if<
+ is_const<Sequence>
+ , result_of::at_c<Sequence, N>
+ >::type
+ at_c(Sequence& seq);
+
+ template <int N, typename Sequence>
+ typename result_of::at_c<Sequence const, N>::type
+ at_c(Sequence const& seq);
+
+ template <typename Sequence>
+ typename result_of::back<Sequence>::type
+ back(Sequence& seq);
+
+ template <typename Sequence>
+ typename result_of::back<Sequence const>::type
+ back(Sequence const& seq);
+
+ template <typename Sequence>
+ typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::begin<Sequence>
+ >::type const
+ begin(Sequence& seq);
+
+ template <typename Sequence>
+ typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::begin<Sequence const>
+ >::type const
+ begin(Sequence const& seq);
+
+ template <typename Sequence>
+ typename result_of::empty<Sequence>::type
+ empty(Sequence const&);
+
+ template <typename Sequence>
+ typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::end<Sequence>
+ >::type const
+ end(Sequence& seq);
+
+ template <typename Sequence>
+ typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::end<Sequence const>
+ >::type const
+ end(Sequence const& seq);
+
+ template <typename Sequence>
+ typename result_of::front<Sequence>::type
+ front(Sequence& seq);
+
+ template <typename Sequence>
+ typename result_of::front<Sequence const>::type
+ front(Sequence const& seq);
+
+ template <typename Key, typename Sequence>
+ typename result_of::has_key<Sequence, Key>::type
+ has_key(Sequence const& seq);
+
+ template <typename Sequence>
+ typename
+ lazy_disable_if<
+ is_const<Sequence>
+ , result_of::segments<Sequence>
+ >::type
+ segments(Sequence& seq);
+
+ template <typename Sequence>
+ typename result_of::segments<Sequence const>::type
+ segments(Sequence const& seq);
+
+ template <typename Sequence>
+ typename result_of::size<Sequence>::type
+ size(Sequence const&);
+
+ template <typename Key, typename Sequence>
+ typename
+ lazy_disable_if<
+ is_const<Sequence>
+ , result_of::at_key<Sequence, Key>
+ >::type
+ at_key(Sequence& seq);
+
+ template <typename Key, typename Sequence>
+ typename result_of::at_key<Sequence const, Key>::type
+ at_key(Sequence const& seq);
+}}
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
Copyright (c) 1999-2003 Jeremiah Willcock
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
Copyright (c) 1999-2003 Jeremiah Willcock
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
Copyright (c) 1999-2003 Jeremiah Willcock
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
Copyright (c) 1999-2003 Jeremiah Willcock
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
{
template <typename Sequence>
inline typename
- enable_if<
+ boost::enable_if<
fusion::traits::is_sequence<Sequence>
, std::istream&
>::type
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
Copyright (c) 1999-2003 Jeremiah Willcock
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
{
template <typename Sequence>
inline typename
- enable_if<
+ boost::enable_if<
fusion::traits::is_sequence<Sequence>
, std::ostream&
>::type
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2012 Nathan Ridge
+
+ 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)
+==============================================================================*/
+#ifndef BOOST_FUSION_SUPPORT_AS_CONST_HPP
+#define BOOST_FUSION_SUPPORT_AS_CONST_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ // A customization point that allows certain wrappers around
+ // Fusion sequence elements (e.g. adt_attribute_proxy) to be
+ // unwrapped in contexts where the element only needs to be
+ // read. The library wraps accesses to Fusion elements in
+ // such contexts with calls to this function. Users can
+ // specialize this function for their own wrappers.
+ template <typename T>
+ const T& as_const(const T& obj)
+ {
+ return obj;
+ }
+
+}}}
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
template <typename T>
struct ref_result
{
- typedef typename add_reference<typename T::type>::type type;
+ typedef typename add_reference<T>::type type;
};
template <typename T>
{
typedef typename
add_reference<
- typename add_const<typename T::type>::type
+ typename add_const<T>::type
>::type
type;
};
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Distributed under the Boost Software License, Version 1.0. (See accompanying
#define FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105
#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/type_traits/is_base_of.hpp>
#include <boost/mpl/is_sequence.hpp>
#include <boost/mpl/and.hpp>
#include <boost/mpl/not.hpp>
+#include <boost/type_traits/is_convertible.hpp>
namespace boost { namespace fusion { namespace detail
{
template <typename T>
struct is_mpl_sequence
: mpl::and_<
- mpl::not_<is_base_of<sequence_root, T> >
+ mpl::not_<is_convertible<T, from_sequence_convertible_type> >
, mpl::is_sequence<T> >
{};
}}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_IS_VIEW_03202006_0018)
+#define FUSION_IS_VIEW_03202006_0018
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename T>
+ struct fusion_is_view
+ {
+ typedef typename T::is_view type;
+ };
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_MPL_ITERATOR_CATEGORY_07212005_0923)
+#define FUSION_MPL_ITERATOR_CATEGORY_07212005_0923
+
+namespace boost { namespace mpl
+{
+ struct forward_iterator_tag;
+ struct bidirectional_iterator_tag;
+ struct random_access_iterator_tag;
+}}
+
+namespace boost { namespace fusion
+{
+ struct forward_traversal_tag;
+ struct bidirectional_traversal_tag;
+ struct random_access_traversal_tag;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Category>
+ struct mpl_iterator_category;
+
+ template <>
+ struct mpl_iterator_category<mpl::forward_iterator_tag>
+ {
+ typedef forward_traversal_tag type;
+ };
+
+ template <>
+ struct mpl_iterator_category<mpl::bidirectional_iterator_tag>
+ {
+ typedef bidirectional_traversal_tag type;
+ };
+
+ template <>
+ struct mpl_iterator_category<mpl::random_access_iterator_tag>
+ {
+ typedef random_access_traversal_tag type;
+ };
+
+ template <>
+ struct mpl_iterator_category<forward_traversal_tag>
+ {
+ typedef forward_traversal_tag type;
+ };
+
+ template <>
+ struct mpl_iterator_category<bidirectional_traversal_tag>
+ {
+ typedef bidirectional_traversal_tag type;
+ };
+
+ template <>
+ struct mpl_iterator_category<random_access_traversal_tag>
+ {
+ typedef random_access_traversal_tag type;
+ };
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Thomas Heller
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_BOOST_FUSION_SUPPORT_PP_ROUND_HPP
+#define BOOST_BOOST_FUSION_SUPPORT_PP_ROUND_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/comparison/less.hpp>
+#include <boost/preprocessor/control/if.hpp>
+
+#define BOOST_FUSION_PP_ROUND_UP(N) \
+ BOOST_PP_CAT(BOOST_FUSION_PP_DO_ROUND_UP_, N)() \
+/**/
+
+#define BOOST_FUSION_PP_DO_ROUND_UP_0() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_1() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_2() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_3() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_4() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_5() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_6() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_7() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_8() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_9() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_10() 10
+#define BOOST_FUSION_PP_DO_ROUND_UP_11() 20
+#define BOOST_FUSION_PP_DO_ROUND_UP_12() 20
+#define BOOST_FUSION_PP_DO_ROUND_UP_13() 20
+#define BOOST_FUSION_PP_DO_ROUND_UP_14() 20
+#define BOOST_FUSION_PP_DO_ROUND_UP_15() 20
+#define BOOST_FUSION_PP_DO_ROUND_UP_16() 20
+#define BOOST_FUSION_PP_DO_ROUND_UP_17() 20
+#define BOOST_FUSION_PP_DO_ROUND_UP_18() 20
+#define BOOST_FUSION_PP_DO_ROUND_UP_19() 20
+#define BOOST_FUSION_PP_DO_ROUND_UP_20() 20
+#define BOOST_FUSION_PP_DO_ROUND_UP_21() 30
+#define BOOST_FUSION_PP_DO_ROUND_UP_22() 30
+#define BOOST_FUSION_PP_DO_ROUND_UP_23() 30
+#define BOOST_FUSION_PP_DO_ROUND_UP_24() 30
+#define BOOST_FUSION_PP_DO_ROUND_UP_25() 30
+#define BOOST_FUSION_PP_DO_ROUND_UP_26() 30
+#define BOOST_FUSION_PP_DO_ROUND_UP_27() 30
+#define BOOST_FUSION_PP_DO_ROUND_UP_28() 30
+#define BOOST_FUSION_PP_DO_ROUND_UP_29() 30
+#define BOOST_FUSION_PP_DO_ROUND_UP_30() 30
+#define BOOST_FUSION_PP_DO_ROUND_UP_31() 40
+#define BOOST_FUSION_PP_DO_ROUND_UP_32() 40
+#define BOOST_FUSION_PP_DO_ROUND_UP_33() 40
+#define BOOST_FUSION_PP_DO_ROUND_UP_34() 40
+#define BOOST_FUSION_PP_DO_ROUND_UP_35() 40
+#define BOOST_FUSION_PP_DO_ROUND_UP_36() 40
+#define BOOST_FUSION_PP_DO_ROUND_UP_37() 40
+#define BOOST_FUSION_PP_DO_ROUND_UP_38() 40
+#define BOOST_FUSION_PP_DO_ROUND_UP_39() 40
+#define BOOST_FUSION_PP_DO_ROUND_UP_40() 40
+#define BOOST_FUSION_PP_DO_ROUND_UP_41() 50
+#define BOOST_FUSION_PP_DO_ROUND_UP_42() 50
+#define BOOST_FUSION_PP_DO_ROUND_UP_43() 50
+#define BOOST_FUSION_PP_DO_ROUND_UP_44() 50
+#define BOOST_FUSION_PP_DO_ROUND_UP_45() 50
+#define BOOST_FUSION_PP_DO_ROUND_UP_46() 50
+#define BOOST_FUSION_PP_DO_ROUND_UP_47() 50
+#define BOOST_FUSION_PP_DO_ROUND_UP_48() 50
+#define BOOST_FUSION_PP_DO_ROUND_UP_49() 50
+#define BOOST_FUSION_PP_DO_ROUND_UP_50() 50
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_FOLD_UNTIL_IMPL_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_FOLD_UNTIL_IMPL_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/utility/result_of.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+#include <boost/fusion/support/void.hpp>
+#include <boost/fusion/container/list/cons_fwd.hpp>
+#include <boost/fusion/sequence/intrinsic_fwd.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/support/is_segmented.hpp>
+#include <boost/fusion/sequence/intrinsic/segments.hpp>
+
+// fun(seq, state, context)
+// seq: a non-segmented range
+// state: the state of the fold so far
+// context: the path to the current range
+//
+// returns: (state', fcontinue)
+
+namespace boost { namespace fusion
+{
+ template <typename First, typename Last>
+ struct iterator_range;
+
+ template <typename Context>
+ struct segmented_iterator;
+
+ namespace result_of
+ {
+ template <typename Cur, typename Context>
+ struct make_segmented_iterator
+ {
+ typedef
+ iterator_range<
+ Cur
+ , typename result_of::end<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<
+ typename Context::car_type::begin_type
+ >::type
+ >::type
+ >::type
+ >::type
+ >
+ range_type;
+
+ typedef
+ segmented_iterator<cons<range_type, Context> >
+ type;
+ };
+ }
+
+ template <typename Cur, typename Context>
+ typename result_of::make_segmented_iterator<Cur, Context>::type
+ make_segmented_iterator(Cur const& cur, Context const& context)
+ {
+ typedef result_of::make_segmented_iterator<Cur, Context> impl_type;
+ typedef typename impl_type::type type;
+ typedef typename impl_type::range_type range_type;
+ return type(cons<range_type, Context>(range_type(cur, fusion::end(*context.car.first)), context));
+ }
+
+ namespace detail
+ {
+ template <
+ typename Begin
+ , typename End
+ , typename State
+ , typename Context
+ , typename Fun
+ , bool IsEmpty
+ >
+ struct segmented_fold_until_iterate_skip_empty;
+
+ template <
+ typename Begin
+ , typename End
+ , typename State
+ , typename Context
+ , typename Fun
+ , bool IsDone = result_of::equal_to<Begin, End>::type::value
+ >
+ struct segmented_fold_until_iterate;
+
+ template <
+ typename Sequence
+ , typename State
+ , typename Context
+ , typename Fun
+ , bool IsSegmented = traits::is_segmented<Sequence>::type::value
+ >
+ struct segmented_fold_until_impl;
+
+ template <typename Segments, typename State, typename Context, typename Fun>
+ struct segmented_fold_until_on_segments;
+
+ //auto push_context(cur, end, context)
+ //{
+ // return push_back(context, segment_sequence(iterator_range(cur, end)));
+ //}
+
+ template <typename Cur, typename End, typename Context>
+ struct push_context
+ {
+ typedef iterator_range<Cur, End> range_type;
+ typedef cons<range_type, Context> type;
+
+ static type call(Cur const& cur, End const& end, Context const& context)
+ {
+ return cons<range_type, Context>(range_type(cur, end), context);
+ }
+ };
+
+ //auto make_segmented_iterator(cur, end, context)
+ //{
+ // return segmented_iterator(push_context(cur, end, context));
+ //}
+ //
+ //auto segmented_fold_until_impl(seq, state, context, fun)
+ //{
+ // if (is_segmented(seq))
+ // {
+ // segmented_fold_until_on_segments(segments(seq), state, context, fun);
+ // }
+ // else
+ // {
+ // return fun(seq, state, context);
+ // }
+ //}
+
+ template <
+ typename Sequence
+ , typename State
+ , typename Context
+ , typename Fun
+ , bool IsSegmented
+ >
+ struct segmented_fold_until_impl
+ {
+ typedef
+ segmented_fold_until_on_segments<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::segments<Sequence>::type
+ >::type
+ >::type
+ , State
+ , Context
+ , Fun
+ >
+ impl;
+
+ typedef typename impl::type type;
+ typedef typename impl::continue_type continue_type;
+
+ static type call(Sequence& seq, State const& state, Context const& context, Fun const& fun)
+ {
+ return impl::call(fusion::segments(seq), state, context, fun);
+ }
+ };
+
+ template <
+ typename Sequence
+ , typename State
+ , typename Context
+ , typename Fun
+ >
+ struct segmented_fold_until_impl<Sequence, State, Context, Fun, false>
+ {
+ typedef
+ typename Fun::template apply<Sequence, State, Context>
+ apply_type;
+
+ typedef typename apply_type::type type;
+ typedef typename apply_type::continue_type continue_type;
+
+ static type call(Sequence& seq, State const& state, Context const& context, Fun const& fun)
+ {
+ return apply_type::call(seq, state, context, fun);
+ }
+ };
+
+ //auto segmented_fold_until_on_segments(segs, state, context, fun)
+ //{
+ // auto cur = begin(segs), end = end(segs);
+ // for (; cur != end; ++cur)
+ // {
+ // if (empty(*cur))
+ // continue;
+ // auto context` = push_context(cur, end, context);
+ // state = segmented_fold_until_impl(*cur, state, context`, fun);
+ // if (!second(state))
+ // return state;
+ // }
+ //}
+
+ template <typename Apply>
+ struct continue_wrap
+ {
+ typedef typename Apply::continue_type type;
+ };
+
+ template <typename Begin, typename End, typename State, typename Context, typename Fun, bool IsEmpty>
+ struct segmented_fold_until_iterate_skip_empty
+ {
+ // begin != end and !empty(*begin)
+ typedef
+ push_context<Begin, End, Context>
+ push_context_impl;
+
+ typedef
+ typename push_context_impl::type
+ next_context_type;
+
+ typedef
+ segmented_fold_until_impl<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<Begin>::type
+ >::type
+ >::type
+ , State
+ , next_context_type
+ , Fun
+ >
+ fold_recurse_impl;
+
+ typedef
+ typename fold_recurse_impl::type
+ next_state_type;
+
+ typedef
+ segmented_fold_until_iterate<
+ typename result_of::next<Begin>::type
+ , End
+ , next_state_type
+ , Context
+ , Fun
+ >
+ next_iteration_impl;
+
+ typedef
+ typename mpl::eval_if<
+ typename fold_recurse_impl::continue_type
+ , next_iteration_impl
+ , mpl::identity<next_state_type>
+ >::type
+ type;
+
+ typedef
+ typename mpl::eval_if<
+ typename fold_recurse_impl::continue_type
+ , continue_wrap<next_iteration_impl>
+ , mpl::identity<mpl::false_>
+ >::type
+ continue_type;
+
+ static type call(Begin const& beg, End const& end, State const& state
+ , Context const& context, Fun const& fun)
+ {
+ return call(beg, end, state, context, fun, typename fold_recurse_impl::continue_type());
+ }
+
+ static type call(Begin const& beg, End const& end, State const& state
+ , Context const& context, Fun const& fun, mpl::true_) // continue
+ {
+ return next_iteration_impl::call(
+ fusion::next(beg)
+ , end
+ , fold_recurse_impl::call(
+ *beg
+ , state
+ , push_context_impl::call(beg, end, context)
+ , fun)
+ , context
+ , fun);
+ }
+
+ static type call(Begin const& beg, End const& end, State const& state
+ , Context const& context, Fun const& fun, mpl::false_) // break
+ {
+ return fold_recurse_impl::call(
+ *beg
+ , state
+ , push_context_impl::call(beg, end, context)
+ , fun);
+ }
+ };
+
+ template <typename Begin, typename End, typename State, typename Context, typename Fun>
+ struct segmented_fold_until_iterate_skip_empty<Begin, End, State, Context, Fun, true>
+ {
+ typedef
+ segmented_fold_until_iterate<
+ typename result_of::next<Begin>::type
+ , End
+ , State
+ , Context
+ , Fun
+ >
+ impl;
+
+ typedef typename impl::type type;
+ typedef typename impl::continue_type continue_type;
+
+ static type call(Begin const& beg, End const& end, State const& state
+ , Context const& context, Fun const& fun)
+ {
+ return impl::call(fusion::next(beg), end, state, context, fun);
+ }
+ };
+
+ template <typename Begin, typename End, typename State, typename Context, typename Fun, bool IsDone>
+ struct segmented_fold_until_iterate
+ {
+ typedef
+ typename result_of::empty<
+ typename remove_reference<
+ typename result_of::deref<Begin>::type
+ >::type
+ >::type
+ empty_type;
+
+ typedef
+ segmented_fold_until_iterate_skip_empty<Begin, End, State, Context, Fun, empty_type::value>
+ impl;
+
+ typedef typename impl::type type;
+ typedef typename impl::continue_type continue_type;
+
+ static type call(Begin const& beg, End const& end, State const& state
+ , Context const& context, Fun const& fun)
+ {
+ return impl::call(beg, end, state, context, fun);
+ }
+ };
+
+ template <typename Begin, typename End, typename State, typename Context, typename Fun>
+ struct segmented_fold_until_iterate<Begin, End, State, Context, Fun, true>
+ {
+ typedef State type;
+ typedef mpl::true_ continue_type;
+
+ static type call(Begin const&, End const&, State const& state
+ , Context const&, Fun const&)
+ {
+ return state;
+ }
+ };
+
+ template <typename Segments, typename State, typename Context, typename Fun>
+ struct segmented_fold_until_on_segments
+ {
+ typedef
+ segmented_fold_until_iterate<
+ typename result_of::begin<Segments>::type
+ , typename result_of::end<Segments>::type
+ , State
+ , Context
+ , Fun
+ >
+ impl;
+
+ typedef typename impl::type type;
+ typedef typename impl::continue_type continue_type;
+
+ static type call(Segments& segs, State const& state, Context const& context, Fun const& fun)
+ {
+ return impl::call(fusion::begin(segs), fusion::end(segs), state, context, fun);
+ }
+ };
+ }
+}}
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2006 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_IS_SEGMENTED_03202006_0015)
+#define FUSION_IS_SEGMENTED_03202006_0015
+
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct sequence_facade_tag;
+ struct iterator_range_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct is_segmented_impl
+ {
+ template <typename Sequence>
+ struct apply
+ : mpl::false_
+ {};
+ };
+
+ template <>
+ struct is_segmented_impl<sequence_facade_tag>
+ {
+ template <typename Sequence>
+ struct apply : Sequence::is_segmented {};
+ };
+
+ template <>
+ struct is_segmented_impl<iterator_range_tag>;
+ }
+
+ namespace traits
+ {
+ template <typename Sequence>
+ struct is_segmented
+ : mpl::bool_<
+ (bool)extension::is_segmented_impl<typename traits::tag_of<Sequence>::type>::
+ template apply<Sequence>::type::value
+ >
+ {
+ };
+ }
+}}
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_IS_SEQUENCE_05052005_1002)
#define FUSION_IS_SEQUENCE_05052005_1002
-#include <boost/type_traits/is_base_of.hpp>
#include <boost/fusion/support/sequence_base.hpp>
#include <boost/fusion/support/tag_of.hpp>
#include <boost/mpl/is_sequence.hpp>
#include <boost/mpl/or.hpp>
#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/is_same.hpp>
namespace boost { namespace fusion
{
struct is_sequence_impl
{
template <typename Sequence>
- struct apply : is_base_of<sequence_root, Sequence> {};
+ struct apply
+ : is_convertible<Sequence, detail::from_sequence_convertible_type>
+ {};
};
template <>
{
template <typename T>
struct is_sequence
- : extension::is_sequence_impl<
+ : mpl::bool_<
+ (bool)extension::is_sequence_impl<
typename fusion::detail::tag_of<T>::type
- >::template apply<T>
+ >::template apply<T>::type::value
+ >
+ {};
+
+ template <typename Sequence, typename Enable = void>
+ struct is_native_fusion_sequence
+ : is_convertible<Sequence, detail::from_sequence_convertible_type>
{};
}
}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_IS_VIEW_03202006_0015)
+#define FUSION_IS_VIEW_03202006_0015
+
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/support/detail/is_view.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct sequence_facade_tag;
+ struct boost_tuple_tag; // boost::tuples::tuple tag
+ struct boost_array_tag; // boost::array tag
+ struct mpl_sequence_tag; // mpl sequence tag
+ struct std_pair_tag; // std::pair tag
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_view_impl
+ {
+ template <typename T>
+ struct apply
+ : detail::fusion_is_view<T>
+ {};
+ };
+
+ template <>
+ struct is_view_impl<sequence_facade_tag>
+ {
+ template <typename Sequence>
+ struct apply : Sequence::is_view {};
+ };
+
+ template <>
+ struct is_view_impl<boost_tuple_tag>;
+
+ template <>
+ struct is_view_impl<boost_array_tag>;
+
+ template <>
+ struct is_view_impl<mpl_sequence_tag>;
+
+ template <>
+ struct is_view_impl<std_pair_tag>;
+ }
+
+ namespace traits
+ {
+ template <typename T>
+ struct is_view :
+ mpl::bool_<
+ (bool)extension::is_view_impl<typename fusion::detail::tag_of<T>::type>::
+ template apply<T>::type::value
+ >
+ {};
+ }
+}}
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2007 Tobias Schwinger
Distributed under the Boost Software License, Version 1.0. (See accompanying
namespace boost { namespace fusion
{
- struct sequence_root {};
+ namespace detail
+ {
+ struct from_sequence_convertible_type
+ {};
+ }
template <typename Sequence>
- struct sequence_base : sequence_root
+ struct sequence_base
{
Sequence const&
derived() const
{
return static_cast<Sequence&>(*this);
}
+
+ operator detail::from_sequence_convertible_type()const
+ {
+ return detail::from_sequence_convertible_type();
+ }
};
struct fusion_sequence_tag;
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
namespace detail
{
BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag)
- }
- namespace traits
- {
template <typename Sequence, typename Active>
- struct tag_of
- : mpl::if_< fusion::detail::is_mpl_sequence<Sequence>,
+ struct tag_of_impl
+ : mpl::if_<fusion::detail::is_mpl_sequence<Sequence>,
mpl::identity<mpl_sequence_tag>,
mpl::identity<non_fusion_tag> >::type
{};
template <typename Sequence>
- struct tag_of<Sequence, typename boost::enable_if<detail::has_fusion_tag<Sequence> >::type>
+ struct tag_of_impl<
+ Sequence
+ , typename boost::enable_if<detail::has_fusion_tag<Sequence> >::type>
{
typedef typename Sequence::fusion_tag type;
};
}
+ namespace traits
+ {
+ template <typename Sequence, typename Active>
+ struct tag_of
+ : boost::fusion::detail::tag_of_impl<Sequence, Active>
+ {};
+ }
+
namespace detail
{
template<typename T>
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Distributed under the Boost Software License, Version 1.0. (See accompanying
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SUPPORT_VOID_20070706_2125)
+#define BOOST_FUSION_SUPPORT_VOID_20070706_2125
+
+namespace boost { namespace fusion
+{
+ struct void_ {};
+}}
+
+#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+#if FUSION_MAX_VECTOR_SIZE <= 10
+#include <boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 20
+#include <boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 30
+#include <boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 40
+#include <boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 50
+#include <boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp>
+#else
+#error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers"
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ inline tuple<typename detail::as_fusion_element<T0>::type>
+ make_tuple(T0 const& _0)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type>(
+ _0);
+ }
+ template <typename T0 , typename T1>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type>
+ make_tuple(T0 const& _0 , T1 const& _1)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type>(
+ _0 , _1);
+ }
+ template <typename T0 , typename T1 , typename T2>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type>(
+ _0 , _1 , _2);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type>(
+ _0 , _1 , _2 , _3);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type>(
+ _0 , _1 , _2 , _3 , _4);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ inline tuple<typename detail::as_fusion_element<T0>::type>
+ make_tuple(T0 const& _0)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type>(
+ _0);
+ }
+ template <typename T0 , typename T1>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type>
+ make_tuple(T0 const& _0 , T1 const& _1)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type>(
+ _0 , _1);
+ }
+ template <typename T0 , typename T1 , typename T2>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type>(
+ _0 , _1 , _2);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type>(
+ _0 , _1 , _2 , _3);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type>(
+ _0 , _1 , _2 , _3 , _4);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ inline tuple<typename detail::as_fusion_element<T0>::type>
+ make_tuple(T0 const& _0)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type>(
+ _0);
+ }
+ template <typename T0 , typename T1>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type>
+ make_tuple(T0 const& _0 , T1 const& _1)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type>(
+ _0 , _1);
+ }
+ template <typename T0 , typename T1 , typename T2>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type>(
+ _0 , _1 , _2);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type>(
+ _0 , _1 , _2 , _3);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type>(
+ _0 , _1 , _2 , _3 , _4);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ inline tuple<typename detail::as_fusion_element<T0>::type>
+ make_tuple(T0 const& _0)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type>(
+ _0);
+ }
+ template <typename T0 , typename T1>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type>
+ make_tuple(T0 const& _0 , T1 const& _1)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type>(
+ _0 , _1);
+ }
+ template <typename T0 , typename T1 , typename T2>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type>(
+ _0 , _1 , _2);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type>(
+ _0 , _1 , _2 , _3);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type>(
+ _0 , _1 , _2 , _3 , _4);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ inline tuple<typename detail::as_fusion_element<T0>::type>
+ make_tuple(T0 const& _0)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type>(
+ _0);
+ }
+ template <typename T0 , typename T1>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type>
+ make_tuple(T0 const& _0 , T1 const& _1)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type>(
+ _0 , _1);
+ }
+ template <typename T0 , typename T1 , typename T2>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type>(
+ _0 , _1 , _2);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type>(
+ _0 , _1 , _2 , _3);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type>(
+ _0 , _1 , _2 , _3 , _4);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type , typename detail::as_fusion_element<T45>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type , typename detail::as_fusion_element<T45>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type , typename detail::as_fusion_element<T45>::type , typename detail::as_fusion_element<T46>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type , typename detail::as_fusion_element<T45>::type , typename detail::as_fusion_element<T46>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type , typename detail::as_fusion_element<T45>::type , typename detail::as_fusion_element<T46>::type , typename detail::as_fusion_element<T47>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type , typename detail::as_fusion_element<T45>::type , typename detail::as_fusion_element<T46>::type , typename detail::as_fusion_element<T47>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type , typename detail::as_fusion_element<T45>::type , typename detail::as_fusion_element<T46>::type , typename detail::as_fusion_element<T47>::type , typename detail::as_fusion_element<T48>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type , typename detail::as_fusion_element<T45>::type , typename detail::as_fusion_element<T46>::type , typename detail::as_fusion_element<T47>::type , typename detail::as_fusion_element<T48>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
+ inline tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type , typename detail::as_fusion_element<T45>::type , typename detail::as_fusion_element<T46>::type , typename detail::as_fusion_element<T47>::type , typename detail::as_fusion_element<T48>::type , typename detail::as_fusion_element<T49>::type>
+ make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48 , T49 const& _49)
+ {
+ return tuple<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type , typename detail::as_fusion_element<T3>::type , typename detail::as_fusion_element<T4>::type , typename detail::as_fusion_element<T5>::type , typename detail::as_fusion_element<T6>::type , typename detail::as_fusion_element<T7>::type , typename detail::as_fusion_element<T8>::type , typename detail::as_fusion_element<T9>::type , typename detail::as_fusion_element<T10>::type , typename detail::as_fusion_element<T11>::type , typename detail::as_fusion_element<T12>::type , typename detail::as_fusion_element<T13>::type , typename detail::as_fusion_element<T14>::type , typename detail::as_fusion_element<T15>::type , typename detail::as_fusion_element<T16>::type , typename detail::as_fusion_element<T17>::type , typename detail::as_fusion_element<T18>::type , typename detail::as_fusion_element<T19>::type , typename detail::as_fusion_element<T20>::type , typename detail::as_fusion_element<T21>::type , typename detail::as_fusion_element<T22>::type , typename detail::as_fusion_element<T23>::type , typename detail::as_fusion_element<T24>::type , typename detail::as_fusion_element<T25>::type , typename detail::as_fusion_element<T26>::type , typename detail::as_fusion_element<T27>::type , typename detail::as_fusion_element<T28>::type , typename detail::as_fusion_element<T29>::type , typename detail::as_fusion_element<T30>::type , typename detail::as_fusion_element<T31>::type , typename detail::as_fusion_element<T32>::type , typename detail::as_fusion_element<T33>::type , typename detail::as_fusion_element<T34>::type , typename detail::as_fusion_element<T35>::type , typename detail::as_fusion_element<T36>::type , typename detail::as_fusion_element<T37>::type , typename detail::as_fusion_element<T38>::type , typename detail::as_fusion_element<T39>::type , typename detail::as_fusion_element<T40>::type , typename detail::as_fusion_element<T41>::type , typename detail::as_fusion_element<T42>::type , typename detail::as_fusion_element<T43>::type , typename detail::as_fusion_element<T44>::type , typename detail::as_fusion_element<T45>::type , typename detail::as_fusion_element<T46>::type , typename detail::as_fusion_element<T47>::type , typename detail::as_fusion_element<T48>::type , typename detail::as_fusion_element<T49>::type>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+#if FUSION_MAX_VECTOR_SIZE <= 10
+#include <boost/fusion/tuple/detail/preprocessed/tuple10.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 20
+#include <boost/fusion/tuple/detail/preprocessed/tuple20.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 30
+#include <boost/fusion/tuple/detail/preprocessed/tuple30.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 40
+#include <boost/fusion/tuple/detail/preprocessed/tuple40.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 50
+#include <boost/fusion/tuple/detail/preprocessed/tuple50.hpp>
+#else
+#error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers"
+#endif
\ No newline at end of file
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ struct tuple : vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>
+ {
+ typedef vector<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>
+ base_type;
+ tuple()
+ : base_type() {}
+ tuple(tuple const& rhs)
+ : base_type(rhs) {}
+ template <typename U1, typename U2>
+ tuple(std::pair<U1, U2> const& rhs)
+ : base_type(rhs) {}
+ explicit
+ tuple(typename detail::call_param<T0 >::type _0)
+ : base_type(_0) {}
+ template <typename U0>
+ tuple(tuple<U0> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0>
+ tuple& operator=(tuple<U0> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : base_type(_0 , _1) {}
+ template <typename U0 , typename U1>
+ tuple(tuple<U0 , U1> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1>
+ tuple& operator=(tuple<U0 , U1> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : base_type(_0 , _1 , _2) {}
+ template <typename U0 , typename U1 , typename U2>
+ tuple(tuple<U0 , U1 , U2> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2>
+ tuple& operator=(tuple<U0 , U1 , U2> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : base_type(_0 , _1 , _2 , _3) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ tuple(tuple<U0 , U1 , U2 , U3> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : base_type(_0 , _1 , _2 , _3 , _4) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ template <typename T>
+ tuple& operator=(T const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple& operator=(tuple const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ template <typename U1, typename U2>
+ tuple& operator=(std::pair<U1, U2> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ };
+ template <typename Tuple>
+ struct tuple_size : result_of::size<Tuple> {};
+ template <int N, typename Tuple>
+ struct tuple_element : result_of::value_at_c<Tuple, N> {};
+ template <int N, typename Tuple>
+ inline typename
+ lazy_disable_if<
+ is_const<Tuple>
+ , result_of::at_c<Tuple, N>
+ >::type
+ get(Tuple& tup)
+ {
+ return at_c<N>(tup);
+ }
+ template <int N, typename Tuple>
+ inline typename result_of::at_c<Tuple const, N>::type
+ get(Tuple const& tup)
+ {
+ return at_c<N>(tup);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_
+ >
+ struct tuple;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ struct tuple : vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19>
+ {
+ typedef vector<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19>
+ base_type;
+ tuple()
+ : base_type() {}
+ tuple(tuple const& rhs)
+ : base_type(rhs) {}
+ template <typename U1, typename U2>
+ tuple(std::pair<U1, U2> const& rhs)
+ : base_type(rhs) {}
+ explicit
+ tuple(typename detail::call_param<T0 >::type _0)
+ : base_type(_0) {}
+ template <typename U0>
+ tuple(tuple<U0> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0>
+ tuple& operator=(tuple<U0> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : base_type(_0 , _1) {}
+ template <typename U0 , typename U1>
+ tuple(tuple<U0 , U1> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1>
+ tuple& operator=(tuple<U0 , U1> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : base_type(_0 , _1 , _2) {}
+ template <typename U0 , typename U1 , typename U2>
+ tuple(tuple<U0 , U1 , U2> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2>
+ tuple& operator=(tuple<U0 , U1 , U2> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : base_type(_0 , _1 , _2 , _3) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ tuple(tuple<U0 , U1 , U2 , U3> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : base_type(_0 , _1 , _2 , _3 , _4) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ template <typename T>
+ tuple& operator=(T const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple& operator=(tuple const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ template <typename U1, typename U2>
+ tuple& operator=(std::pair<U1, U2> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ };
+ template <typename Tuple>
+ struct tuple_size : result_of::size<Tuple> {};
+ template <int N, typename Tuple>
+ struct tuple_element : result_of::value_at_c<Tuple, N> {};
+ template <int N, typename Tuple>
+ inline typename
+ lazy_disable_if<
+ is_const<Tuple>
+ , result_of::at_c<Tuple, N>
+ >::type
+ get(Tuple& tup)
+ {
+ return at_c<N>(tup);
+ }
+ template <int N, typename Tuple>
+ inline typename result_of::at_c<Tuple const, N>::type
+ get(Tuple const& tup)
+ {
+ return at_c<N>(tup);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_
+ >
+ struct tuple;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ struct tuple : vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29>
+ {
+ typedef vector<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29>
+ base_type;
+ tuple()
+ : base_type() {}
+ tuple(tuple const& rhs)
+ : base_type(rhs) {}
+ template <typename U1, typename U2>
+ tuple(std::pair<U1, U2> const& rhs)
+ : base_type(rhs) {}
+ explicit
+ tuple(typename detail::call_param<T0 >::type _0)
+ : base_type(_0) {}
+ template <typename U0>
+ tuple(tuple<U0> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0>
+ tuple& operator=(tuple<U0> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : base_type(_0 , _1) {}
+ template <typename U0 , typename U1>
+ tuple(tuple<U0 , U1> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1>
+ tuple& operator=(tuple<U0 , U1> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : base_type(_0 , _1 , _2) {}
+ template <typename U0 , typename U1 , typename U2>
+ tuple(tuple<U0 , U1 , U2> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2>
+ tuple& operator=(tuple<U0 , U1 , U2> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : base_type(_0 , _1 , _2 , _3) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ tuple(tuple<U0 , U1 , U2 , U3> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : base_type(_0 , _1 , _2 , _3 , _4) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ template <typename T>
+ tuple& operator=(T const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple& operator=(tuple const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ template <typename U1, typename U2>
+ tuple& operator=(std::pair<U1, U2> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ };
+ template <typename Tuple>
+ struct tuple_size : result_of::size<Tuple> {};
+ template <int N, typename Tuple>
+ struct tuple_element : result_of::value_at_c<Tuple, N> {};
+ template <int N, typename Tuple>
+ inline typename
+ lazy_disable_if<
+ is_const<Tuple>
+ , result_of::at_c<Tuple, N>
+ >::type
+ get(Tuple& tup)
+ {
+ return at_c<N>(tup);
+ }
+ template <int N, typename Tuple>
+ inline typename result_of::at_c<Tuple const, N>::type
+ get(Tuple const& tup)
+ {
+ return at_c<N>(tup);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_ , typename T20 = void_ , typename T21 = void_ , typename T22 = void_ , typename T23 = void_ , typename T24 = void_ , typename T25 = void_ , typename T26 = void_ , typename T27 = void_ , typename T28 = void_ , typename T29 = void_
+ >
+ struct tuple;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ struct tuple : vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39>
+ {
+ typedef vector<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39>
+ base_type;
+ tuple()
+ : base_type() {}
+ tuple(tuple const& rhs)
+ : base_type(rhs) {}
+ template <typename U1, typename U2>
+ tuple(std::pair<U1, U2> const& rhs)
+ : base_type(rhs) {}
+ explicit
+ tuple(typename detail::call_param<T0 >::type _0)
+ : base_type(_0) {}
+ template <typename U0>
+ tuple(tuple<U0> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0>
+ tuple& operator=(tuple<U0> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : base_type(_0 , _1) {}
+ template <typename U0 , typename U1>
+ tuple(tuple<U0 , U1> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1>
+ tuple& operator=(tuple<U0 , U1> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : base_type(_0 , _1 , _2) {}
+ template <typename U0 , typename U1 , typename U2>
+ tuple(tuple<U0 , U1 , U2> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2>
+ tuple& operator=(tuple<U0 , U1 , U2> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : base_type(_0 , _1 , _2 , _3) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ tuple(tuple<U0 , U1 , U2 , U3> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : base_type(_0 , _1 , _2 , _3 , _4) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ template <typename T>
+ tuple& operator=(T const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple& operator=(tuple const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ template <typename U1, typename U2>
+ tuple& operator=(std::pair<U1, U2> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ };
+ template <typename Tuple>
+ struct tuple_size : result_of::size<Tuple> {};
+ template <int N, typename Tuple>
+ struct tuple_element : result_of::value_at_c<Tuple, N> {};
+ template <int N, typename Tuple>
+ inline typename
+ lazy_disable_if<
+ is_const<Tuple>
+ , result_of::at_c<Tuple, N>
+ >::type
+ get(Tuple& tup)
+ {
+ return at_c<N>(tup);
+ }
+ template <int N, typename Tuple>
+ inline typename result_of::at_c<Tuple const, N>::type
+ get(Tuple const& tup)
+ {
+ return at_c<N>(tup);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_ , typename T20 = void_ , typename T21 = void_ , typename T22 = void_ , typename T23 = void_ , typename T24 = void_ , typename T25 = void_ , typename T26 = void_ , typename T27 = void_ , typename T28 = void_ , typename T29 = void_ , typename T30 = void_ , typename T31 = void_ , typename T32 = void_ , typename T33 = void_ , typename T34 = void_ , typename T35 = void_ , typename T36 = void_ , typename T37 = void_ , typename T38 = void_ , typename T39 = void_
+ >
+ struct tuple;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
+ struct tuple : vector<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49>
+ {
+ typedef vector<
+ T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49>
+ base_type;
+ tuple()
+ : base_type() {}
+ tuple(tuple const& rhs)
+ : base_type(rhs) {}
+ template <typename U1, typename U2>
+ tuple(std::pair<U1, U2> const& rhs)
+ : base_type(rhs) {}
+ explicit
+ tuple(typename detail::call_param<T0 >::type _0)
+ : base_type(_0) {}
+ template <typename U0>
+ tuple(tuple<U0> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0>
+ tuple& operator=(tuple<U0> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1)
+ : base_type(_0 , _1) {}
+ template <typename U0 , typename U1>
+ tuple(tuple<U0 , U1> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1>
+ tuple& operator=(tuple<U0 , U1> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2)
+ : base_type(_0 , _1 , _2) {}
+ template <typename U0 , typename U1 , typename U2>
+ tuple(tuple<U0 , U1 , U2> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2>
+ tuple& operator=(tuple<U0 , U1 , U2> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3)
+ : base_type(_0 , _1 , _2 , _3) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ tuple(tuple<U0 , U1 , U2 , U3> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4)
+ : base_type(_0 , _1 , _2 , _3 , _4) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47 , typename detail::call_param<T48 >::type _48)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple(typename detail::call_param<T0 >::type _0 , typename detail::call_param<T1 >::type _1 , typename detail::call_param<T2 >::type _2 , typename detail::call_param<T3 >::type _3 , typename detail::call_param<T4 >::type _4 , typename detail::call_param<T5 >::type _5 , typename detail::call_param<T6 >::type _6 , typename detail::call_param<T7 >::type _7 , typename detail::call_param<T8 >::type _8 , typename detail::call_param<T9 >::type _9 , typename detail::call_param<T10 >::type _10 , typename detail::call_param<T11 >::type _11 , typename detail::call_param<T12 >::type _12 , typename detail::call_param<T13 >::type _13 , typename detail::call_param<T14 >::type _14 , typename detail::call_param<T15 >::type _15 , typename detail::call_param<T16 >::type _16 , typename detail::call_param<T17 >::type _17 , typename detail::call_param<T18 >::type _18 , typename detail::call_param<T19 >::type _19 , typename detail::call_param<T20 >::type _20 , typename detail::call_param<T21 >::type _21 , typename detail::call_param<T22 >::type _22 , typename detail::call_param<T23 >::type _23 , typename detail::call_param<T24 >::type _24 , typename detail::call_param<T25 >::type _25 , typename detail::call_param<T26 >::type _26 , typename detail::call_param<T27 >::type _27 , typename detail::call_param<T28 >::type _28 , typename detail::call_param<T29 >::type _29 , typename detail::call_param<T30 >::type _30 , typename detail::call_param<T31 >::type _31 , typename detail::call_param<T32 >::type _32 , typename detail::call_param<T33 >::type _33 , typename detail::call_param<T34 >::type _34 , typename detail::call_param<T35 >::type _35 , typename detail::call_param<T36 >::type _36 , typename detail::call_param<T37 >::type _37 , typename detail::call_param<T38 >::type _38 , typename detail::call_param<T39 >::type _39 , typename detail::call_param<T40 >::type _40 , typename detail::call_param<T41 >::type _41 , typename detail::call_param<T42 >::type _42 , typename detail::call_param<T43 >::type _43 , typename detail::call_param<T44 >::type _44 , typename detail::call_param<T45 >::type _45 , typename detail::call_param<T46 >::type _46 , typename detail::call_param<T47 >::type _47 , typename detail::call_param<T48 >::type _48 , typename detail::call_param<T49 >::type _49)
+ : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48 , typename U49>
+ tuple(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48 , U49> const& rhs)
+ : base_type(rhs) {}
+ template <typename U0 , typename U1 , typename U2 , typename U3 , typename U4 , typename U5 , typename U6 , typename U7 , typename U8 , typename U9 , typename U10 , typename U11 , typename U12 , typename U13 , typename U14 , typename U15 , typename U16 , typename U17 , typename U18 , typename U19 , typename U20 , typename U21 , typename U22 , typename U23 , typename U24 , typename U25 , typename U26 , typename U27 , typename U28 , typename U29 , typename U30 , typename U31 , typename U32 , typename U33 , typename U34 , typename U35 , typename U36 , typename U37 , typename U38 , typename U39 , typename U40 , typename U41 , typename U42 , typename U43 , typename U44 , typename U45 , typename U46 , typename U47 , typename U48 , typename U49>
+ tuple& operator=(tuple<U0 , U1 , U2 , U3 , U4 , U5 , U6 , U7 , U8 , U9 , U10 , U11 , U12 , U13 , U14 , U15 , U16 , U17 , U18 , U19 , U20 , U21 , U22 , U23 , U24 , U25 , U26 , U27 , U28 , U29 , U30 , U31 , U32 , U33 , U34 , U35 , U36 , U37 , U38 , U39 , U40 , U41 , U42 , U43 , U44 , U45 , U46 , U47 , U48 , U49> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ template <typename T>
+ tuple& operator=(T const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ tuple& operator=(tuple const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ template <typename U1, typename U2>
+ tuple& operator=(std::pair<U1, U2> const& rhs)
+ {
+ base_type::operator=(rhs);
+ return *this;
+ }
+ };
+ template <typename Tuple>
+ struct tuple_size : result_of::size<Tuple> {};
+ template <int N, typename Tuple>
+ struct tuple_element : result_of::value_at_c<Tuple, N> {};
+ template <int N, typename Tuple>
+ inline typename
+ lazy_disable_if<
+ is_const<Tuple>
+ , result_of::at_c<Tuple, N>
+ >::type
+ get(Tuple& tup)
+ {
+ return at_c<N>(tup);
+ }
+ template <int N, typename Tuple>
+ inline typename result_of::at_c<Tuple const, N>::type
+ get(Tuple const& tup)
+ {
+ return at_c<N>(tup);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ struct void_;
+ template <
+ typename T0 = void_ , typename T1 = void_ , typename T2 = void_ , typename T3 = void_ , typename T4 = void_ , typename T5 = void_ , typename T6 = void_ , typename T7 = void_ , typename T8 = void_ , typename T9 = void_ , typename T10 = void_ , typename T11 = void_ , typename T12 = void_ , typename T13 = void_ , typename T14 = void_ , typename T15 = void_ , typename T16 = void_ , typename T17 = void_ , typename T18 = void_ , typename T19 = void_ , typename T20 = void_ , typename T21 = void_ , typename T22 = void_ , typename T23 = void_ , typename T24 = void_ , typename T25 = void_ , typename T26 = void_ , typename T27 = void_ , typename T28 = void_ , typename T29 = void_ , typename T30 = void_ , typename T31 = void_ , typename T32 = void_ , typename T33 = void_ , typename T34 = void_ , typename T35 = void_ , typename T36 = void_ , typename T37 = void_ , typename T38 = void_ , typename T39 = void_ , typename T40 = void_ , typename T41 = void_ , typename T42 = void_ , typename T43 = void_ , typename T44 = void_ , typename T45 = void_ , typename T46 = void_ , typename T47 = void_ , typename T48 = void_ , typename T49 = void_
+ >
+ struct tuple;
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+#if FUSION_MAX_VECTOR_SIZE <= 10
+#include <boost/fusion/tuple/detail/preprocessed/tuple10_fwd.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 20
+#include <boost/fusion/tuple/detail/preprocessed/tuple20_fwd.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 30
+#include <boost/fusion/tuple/detail/preprocessed/tuple30_fwd.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 40
+#include <boost/fusion/tuple/detail/preprocessed/tuple40_fwd.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 50
+#include <boost/fusion/tuple/detail/preprocessed/tuple50_fwd.hpp>
+#else
+#error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers"
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+#if FUSION_MAX_VECTOR_SIZE <= 10
+#include <boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 20
+#include <boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 30
+#include <boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 40
+#include <boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp>
+#elif FUSION_MAX_VECTOR_SIZE <= 50
+#include <boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp>
+#else
+#error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers"
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ inline tuple<T0&>
+ tie(T0 & _0)
+ {
+ return tuple<T0&>(
+ _0);
+ }
+ template <typename T0 , typename T1>
+ inline tuple<T0& , T1&>
+ tie(T0 & _0 , T1 & _1)
+ {
+ return tuple<T0& , T1&>(
+ _0 , _1);
+ }
+ template <typename T0 , typename T1 , typename T2>
+ inline tuple<T0& , T1& , T2&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2)
+ {
+ return tuple<T0& , T1& , T2&>(
+ _0 , _1 , _2);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ inline tuple<T0& , T1& , T2& , T3&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3)
+ {
+ return tuple<T0& , T1& , T2& , T3&>(
+ _0 , _1 , _2 , _3);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ inline tuple<T0& , T1& , T2& , T3& , T4&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4&>(
+ _0 , _1 , _2 , _3 , _4);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5&>(
+ _0 , _1 , _2 , _3 , _4 , _5);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ inline tuple<T0&>
+ tie(T0 & _0)
+ {
+ return tuple<T0&>(
+ _0);
+ }
+ template <typename T0 , typename T1>
+ inline tuple<T0& , T1&>
+ tie(T0 & _0 , T1 & _1)
+ {
+ return tuple<T0& , T1&>(
+ _0 , _1);
+ }
+ template <typename T0 , typename T1 , typename T2>
+ inline tuple<T0& , T1& , T2&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2)
+ {
+ return tuple<T0& , T1& , T2&>(
+ _0 , _1 , _2);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ inline tuple<T0& , T1& , T2& , T3&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3)
+ {
+ return tuple<T0& , T1& , T2& , T3&>(
+ _0 , _1 , _2 , _3);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ inline tuple<T0& , T1& , T2& , T3& , T4&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4&>(
+ _0 , _1 , _2 , _3 , _4);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5&>(
+ _0 , _1 , _2 , _3 , _4 , _5);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ inline tuple<T0&>
+ tie(T0 & _0)
+ {
+ return tuple<T0&>(
+ _0);
+ }
+ template <typename T0 , typename T1>
+ inline tuple<T0& , T1&>
+ tie(T0 & _0 , T1 & _1)
+ {
+ return tuple<T0& , T1&>(
+ _0 , _1);
+ }
+ template <typename T0 , typename T1 , typename T2>
+ inline tuple<T0& , T1& , T2&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2)
+ {
+ return tuple<T0& , T1& , T2&>(
+ _0 , _1 , _2);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ inline tuple<T0& , T1& , T2& , T3&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3)
+ {
+ return tuple<T0& , T1& , T2& , T3&>(
+ _0 , _1 , _2 , _3);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ inline tuple<T0& , T1& , T2& , T3& , T4&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4&>(
+ _0 , _1 , _2 , _3 , _4);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5&>(
+ _0 , _1 , _2 , _3 , _4 , _5);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ inline tuple<T0&>
+ tie(T0 & _0)
+ {
+ return tuple<T0&>(
+ _0);
+ }
+ template <typename T0 , typename T1>
+ inline tuple<T0& , T1&>
+ tie(T0 & _0 , T1 & _1)
+ {
+ return tuple<T0& , T1&>(
+ _0 , _1);
+ }
+ template <typename T0 , typename T1 , typename T2>
+ inline tuple<T0& , T1& , T2&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2)
+ {
+ return tuple<T0& , T1& , T2&>(
+ _0 , _1 , _2);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ inline tuple<T0& , T1& , T2& , T3&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3)
+ {
+ return tuple<T0& , T1& , T2& , T3&>(
+ _0 , _1 , _2 , _3);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ inline tuple<T0& , T1& , T2& , T3& , T4&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4&>(
+ _0 , _1 , _2 , _3 , _4);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5&>(
+ _0 , _1 , _2 , _3 , _4 , _5);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39);
+ }
+}}
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+namespace boost { namespace fusion
+{
+ template <typename T0>
+ inline tuple<T0&>
+ tie(T0 & _0)
+ {
+ return tuple<T0&>(
+ _0);
+ }
+ template <typename T0 , typename T1>
+ inline tuple<T0& , T1&>
+ tie(T0 & _0 , T1 & _1)
+ {
+ return tuple<T0& , T1&>(
+ _0 , _1);
+ }
+ template <typename T0 , typename T1 , typename T2>
+ inline tuple<T0& , T1& , T2&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2)
+ {
+ return tuple<T0& , T1& , T2&>(
+ _0 , _1 , _2);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3>
+ inline tuple<T0& , T1& , T2& , T3&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3)
+ {
+ return tuple<T0& , T1& , T2& , T3&>(
+ _0 , _1 , _2 , _3);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
+ inline tuple<T0& , T1& , T2& , T3& , T4&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4&>(
+ _0 , _1 , _2 , _3 , _4);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5&>(
+ _0 , _1 , _2 , _3 , _4 , _5);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44& , T45&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44& , T45&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44& , T45& , T46&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44& , T45& , T46&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44& , T45& , T46& , T47&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44& , T45& , T46& , T47&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44& , T45& , T46& , T47& , T48&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47 , T48 & _48)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44& , T45& , T46& , T47& , T48&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48);
+ }
+ template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
+ inline tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44& , T45& , T46& , T47& , T48& , T49&>
+ tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47 , T48 & _48 , T49 & _49)
+ {
+ return tuple<T0& , T1& , T2& , T3& , T4& , T5& , T6& , T7& , T8& , T9& , T10& , T11& , T12& , T13& , T14& , T15& , T16& , T17& , T18& , T19& , T20& , T21& , T22& , T23& , T24& , T25& , T26& , T27& , T28& , T29& , T30& , T31& , T32& , T33& , T34& , T35& , T36& , T37& , T38& , T39& , T40& , T41& , T42& , T43& , T44& , T45& , T46& , T47& , T48& , T49&>(
+ _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49);
+ }
+}}
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#ifndef BOOST_PP_IS_ITERATING
{
return tuple<>();
}
+}}
+
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/tuple/detail/preprocessed/make_tuple.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_tuple" FUSION_MAX_VECTOR_SIZE_STR ".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+namespace boost { namespace fusion
+{
#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
#else // defined(BOOST_PP_IS_ITERATING)
///////////////////////////////////////////////////////////////////////////////
/*=============================================================================
- Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
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)
#include <boost/type_traits/is_const.hpp>
#include <boost/config/no_tr1/utility.hpp>
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/tuple/detail/preprocessed/tuple.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/tuple" FUSION_MAX_VECTOR_SIZE_STR ".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
namespace boost { namespace fusion
{
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
}
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
/*=============================================================================
- Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#if !defined(FUSION_TUPLE_FORWARD_10032005_0956)
#include <boost/fusion/container/vector/limits.hpp>
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/tuple" FUSION_MAX_VECTOR_SIZE_STR "_fwd.hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
namespace boost { namespace fusion
{
struct void_;
struct tuple;
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2001-2011 Joel de Guzman
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
#ifndef BOOST_PP_IS_ITERATING
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/fusion/tuple/tuple.hpp>
+#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
+#include <boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp>
+#else
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/tuple_tie" FUSION_MAX_VECTOR_SIZE_STR ".hpp")
+#endif
+
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+
+ This is an auto-generated file. Do not edit!
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
namespace boost { namespace fusion
{
#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
#define BOOST_PP_FILENAME_1 <boost/fusion/tuple/tuple_tie.hpp>
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
#include BOOST_PP_ITERATE()
-
+
#undef BOOST_FUSION_REF
}}
+#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
+
#endif
#else // defined(BOOST_PP_IS_ITERATING)
///////////////////////////////////////////////////////////////////////////////
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610)
+#define FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610
+
+#include <boost/fusion/view/iterator_range/iterator_range.hpp>
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2007 Tobias Schwinger
+
+ 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)
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_ITERATOR_RANGE_AT_IMPL_HPP_INCLUDED)
+#define BOOST_FUSION_ITERATOR_RANGE_AT_IMPL_HPP_INCLUDED
+
+#include <boost/fusion/iterator/advance.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_range_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<iterator_range_tag>
+ {
+ template <typename Seq, typename N>
+ struct apply
+ {
+ typedef typename Seq::begin_type begin_type;
+ typedef typename result_of::advance<begin_type,N>::type pos;
+ typedef typename result_of::deref<pos>::type type;
+
+ static type
+ call(Seq& s)
+ {
+ return * fusion::advance<N>(s.first);
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_BEGIN_IMPL_05062005_1226)
+#define FUSION_BEGIN_IMPL_05062005_1226
+
+namespace boost { namespace fusion
+{
+ struct iterator_range_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<iterator_range_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename Sequence::begin_type type;
+
+ static type
+ call(Sequence& s)
+ {
+ return s.first;
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_END_IMPL_05062005_1226)
+#define FUSION_END_IMPL_05062005_1226
+
+namespace boost { namespace fusion
+{
+ struct iterator_range_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<iterator_range_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename Sequence::end_type type;
+
+ static type
+ call(Sequence& s)
+ {
+ return s.last;
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_ITERATOR_RANGE_IS_SEGMENTED_HPP_INCLUDED)
+#define BOOST_FUSION_ITERATOR_RANGE_IS_SEGMENTED_HPP_INCLUDED
+
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_range_tag;
+
+ template <typename Context>
+ struct segmented_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct is_segmented_impl;
+
+ // An iterator_range of segmented_iterators is segmented
+ template <>
+ struct is_segmented_impl<iterator_range_tag>
+ {
+ private:
+ template <typename Iterator>
+ struct is_segmented_iterator
+ : mpl::false_
+ {};
+
+ template <typename Iterator>
+ struct is_segmented_iterator<Iterator &>
+ : is_segmented_iterator<Iterator>
+ {};
+
+ template <typename Iterator>
+ struct is_segmented_iterator<Iterator const>
+ : is_segmented_iterator<Iterator>
+ {};
+
+ template <typename Context>
+ struct is_segmented_iterator<segmented_iterator<Context> >
+ : mpl::true_
+ {};
+
+ public:
+ template <typename Sequence>
+ struct apply
+ : is_segmented_iterator<typename Sequence::begin_type>
+ {
+ BOOST_MPL_ASSERT_RELATION(
+ is_segmented_iterator<typename Sequence::begin_type>::value
+ , ==
+ , is_segmented_iterator<typename Sequence::end_type>::value);
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_RANGE_HPP_INCLUDED)
+#define BOOST_FUSION_SEGMENTED_ITERATOR_RANGE_HPP_INCLUDED
+
+#include <boost/mpl/assert.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/segments.hpp>
+#include <boost/fusion/algorithm/transformation/push_back.hpp>
+#include <boost/fusion/algorithm/transformation/push_front.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/container/list/detail/reverse_cons.hpp>
+#include <boost/fusion/iterator/detail/segment_sequence.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/utility/enable_if.hpp>
+
+// Invariants:
+// - Each segmented iterator has a stack
+// - Each value in the stack is an iterator range
+// - The range at the top of the stack points to values
+// - All other ranges point to ranges
+// - The front of each range in the stack (besides the
+// topmost) is the range above it
+
+namespace boost { namespace fusion
+{
+ template <typename First, typename Last>
+ struct iterator_range;
+
+ namespace result_of
+ {
+ template <typename Sequence, typename T>
+ struct push_back;
+
+ template <typename Sequence, typename T>
+ struct push_front;
+ }
+
+ template <typename Sequence, typename T>
+ typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::push_back<Sequence const, T>
+ >::type
+ push_back(Sequence const& seq, T const& x);
+
+ template <typename Sequence, typename T>
+ typename
+ lazy_enable_if<
+ traits::is_sequence<Sequence>
+ , result_of::push_front<Sequence const, T>
+ >::type
+ push_front(Sequence const& seq, T const& x);
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ //auto make_segment_sequence_front(stack_begin)
+ //{
+ // switch (size(stack_begin))
+ // {
+ // case 1:
+ // return nil_;
+ // case 2:
+ // // car(cdr(stack_begin)) is a range over values.
+ // assert(end(front(car(stack_begin))) == end(car(cdr(stack_begin))));
+ // return iterator_range(begin(car(cdr(stack_begin))), end(front(car(stack_begin))));
+ // default:
+ // // car(cdr(stack_begin)) is a range over segments. We replace the
+ // // front with a view that is restricted.
+ // assert(end(segments(front(car(stack_begin)))) == end(car(cdr(stack_begin))));
+ // return segment_sequence(
+ // push_front(
+ // // The following could be a segment_sequence. It then gets wrapped
+ // // in a single_view, and push_front puts it in a join_view with the
+ // // following iterator_range.
+ // iterator_range(next(begin(car(cdr(stack_begin)))), end(segments(front(car(stack_begin))))),
+ // make_segment_sequence_front(cdr(stack_begin))));
+ // }
+ //}
+
+ template <typename Stack, std::size_t Size = Stack::size::value>
+ struct make_segment_sequence_front
+ {
+ // assert(end(segments(front(car(stack_begin)))) == end(car(cdr(stack_begin))));
+ BOOST_MPL_ASSERT((
+ result_of::equal_to<
+ typename result_of::end<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::segments<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<
+ typename Stack::car_type::begin_type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ , typename Stack::cdr_type::car_type::end_type
+ >));
+
+ typedef
+ iterator_range<
+ typename result_of::next<
+ typename Stack::cdr_type::car_type::begin_type
+ >::type
+ , typename result_of::end<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::segments<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<
+ typename Stack::car_type::begin_type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >
+ rest_type;
+
+ typedef
+ make_segment_sequence_front<typename Stack::cdr_type>
+ recurse;
+
+ typedef
+ segment_sequence<
+ typename result_of::push_front<
+ rest_type const
+ , typename recurse::type
+ >::type
+ >
+ type;
+
+ static type call(Stack const& stack)
+ {
+ //return segment_sequence(
+ // push_front(
+ // iterator_range(next(begin(car(cdr(stack_begin)))), end(segments(front(car(stack_begin))))),
+ // make_segment_sequence_front(cdr(stack_begin))));
+ return type(
+ fusion::push_front(
+ rest_type(fusion::next(stack.cdr.car.first), fusion::end(fusion::segments(*stack.car.first)))
+ , recurse::call(stack.cdr)));
+ }
+ };
+
+ template <typename Stack>
+ struct make_segment_sequence_front<Stack, 2>
+ {
+ // assert(end(front(car(stack_begin))) == end(car(cdr(stack_begin))));
+ BOOST_MPL_ASSERT((
+ result_of::equal_to<
+ typename result_of::end<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<
+ typename Stack::car_type::begin_type
+ >::type
+ >::type
+ >::type
+ >::type
+ , typename Stack::cdr_type::car_type::end_type
+ >));
+
+ typedef
+ iterator_range<
+ typename Stack::cdr_type::car_type::begin_type
+ , typename result_of::end<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<
+ typename Stack::car_type::begin_type
+ >::type
+ >::type
+ >::type
+ >::type
+ >
+ type;
+
+ static type call(Stack const& stack)
+ {
+ // return iterator_range(begin(car(cdr(stack_begin))), end(front(car(stack_begin))));
+ return type(stack.cdr.car.first, fusion::end(*stack.car.first));
+ }
+ };
+
+ template <typename Stack>
+ struct make_segment_sequence_front<Stack, 1>
+ {
+ typedef typename Stack::cdr_type type; // nil_
+
+ static type call(Stack const &stack)
+ {
+ return stack.cdr;
+ }
+ };
+
+ //auto make_segment_sequence_back(stack_end)
+ //{
+ // switch (size(stack_end))
+ // {
+ // case 1:
+ // return nil_;
+ // case 2:
+ // // car(cdr(stack_back)) is a range over values.
+ // assert(end(front(car(stack_end))) == end(car(cdr(stack_end))));
+ // return iterator_range(begin(front(car(stack_end))), begin(car(cdr(stack_end))));
+ // default:
+ // // car(cdr(stack_begin)) is a range over segments. We replace the
+ // // back with a view that is restricted.
+ // assert(end(segments(front(car(stack_end)))) == end(car(cdr(stack_end))));
+ // return segment_sequence(
+ // push_back(
+ // iterator_range(begin(segments(front(car(stack_end)))), begin(car(cdr(stack_end)))),
+ // make_segment_sequence_back(cdr(stack_end))));
+ // }
+ //}
+
+ template <typename Stack, std::size_t Size = Stack::size::value>
+ struct make_segment_sequence_back
+ {
+ // assert(end(segments(front(car(stack_begin)))) == end(car(cdr(stack_begin))));
+ BOOST_MPL_ASSERT((
+ result_of::equal_to<
+ typename result_of::end<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::segments<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<
+ typename Stack::car_type::begin_type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ , typename Stack::cdr_type::car_type::end_type
+ >));
+
+ typedef
+ iterator_range<
+ typename result_of::begin<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::segments<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<
+ typename Stack::car_type::begin_type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ , typename Stack::cdr_type::car_type::begin_type
+ >
+ rest_type;
+
+ typedef
+ make_segment_sequence_back<typename Stack::cdr_type>
+ recurse;
+
+ typedef
+ segment_sequence<
+ typename result_of::push_back<
+ rest_type const
+ , typename recurse::type
+ >::type
+ >
+ type;
+
+ static type call(Stack const& stack)
+ {
+ // return segment_sequence(
+ // push_back(
+ // iterator_range(begin(segments(front(car(stack_end)))), begin(car(cdr(stack_end)))),
+ // make_segment_sequence_back(cdr(stack_end))));
+ return type(
+ fusion::push_back(
+ rest_type(fusion::begin(fusion::segments(*stack.car.first)), stack.cdr.car.first)
+ , recurse::call(stack.cdr)));
+ }
+ };
+
+ template <typename Stack>
+ struct make_segment_sequence_back<Stack, 2>
+ {
+ // assert(end(front(car(stack_end))) == end(car(cdr(stack_end))));
+ BOOST_MPL_ASSERT((
+ result_of::equal_to<
+ typename result_of::end<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<
+ typename Stack::car_type::begin_type
+ >::type
+ >::type
+ >::type
+ >::type
+ , typename Stack::cdr_type::car_type::end_type
+ >));
+
+ typedef
+ iterator_range<
+ typename result_of::begin<
+ typename remove_reference<
+ typename add_const<
+ typename result_of::deref<
+ typename Stack::car_type::begin_type
+ >::type
+ >::type
+ >::type
+ >::type
+ , typename Stack::cdr_type::car_type::begin_type
+ >
+ type;
+
+ static type call(Stack const& stack)
+ {
+ // return iterator_range(begin(front(car(stack_end))), begin(car(cdr(stack_end))));
+ return type(fusion::begin(*stack.car.first), stack.cdr.car.first);
+ }
+ };
+
+ template <typename Stack>
+ struct make_segment_sequence_back<Stack, 1>
+ {
+ typedef typename Stack::cdr_type type; // nil_
+
+ static type call(Stack const& stack)
+ {
+ return stack.cdr;
+ }
+ };
+
+ //auto make_segmented_range_reduce(stack_begin, stack_end)
+ //{
+ // if (size(stack_begin) == 1 && size(stack_end) == 1)
+ // {
+ // return segment_sequence(
+ // single_view(
+ // iterator_range(begin(car(stack_begin)), begin(car(stack_end)))));
+ // }
+ // else
+ // {
+ // // We are in the case where both begin_stack and/or end_stack have
+ // // more than one element. Throw away any part of the tree where
+ // // begin and end refer to the same segment.
+ // if (begin(car(stack_begin)) == begin(car(stack_end)))
+ // {
+ // return make_segmented_range_reduce(cdr(stack_begin), cdr(stack_end));
+ // }
+ // else
+ // {
+ // // We are in the case where begin_stack and end_stack (a) have
+ // // more than one element each, and (b) they point to different
+ // // segments. We must construct a segmented sequence.
+ // return segment_sequence(
+ // push_back(
+ // push_front(
+ // iterator_range(
+ // fusion::next(begin(car(stack_begin))),
+ // begin(car(stack_end))), // a range of (possibly segmented) ranges.
+ // make_segment_sequence_front(stack_begin)), // should be a (possibly segmented) range.
+ // make_segment_sequence_back(stack_end))); // should be a (possibly segmented) range.
+ // }
+ // }
+ //}
+
+ template <
+ typename StackBegin
+ , typename StackEnd
+ , int StackBeginSize = StackBegin::size::value
+ , int StackEndSize = StackEnd::size::value>
+ struct make_segmented_range_reduce;
+
+ template <
+ typename StackBegin
+ , typename StackEnd
+ , bool SameSegment =
+ result_of::equal_to<
+ typename StackBegin::car_type::begin_type
+ , typename StackEnd::car_type::begin_type
+ >::type::value>
+ struct make_segmented_range_reduce2
+ {
+ typedef
+ iterator_range<
+ typename result_of::next<
+ typename StackBegin::car_type::begin_type
+ >::type
+ , typename StackEnd::car_type::begin_type
+ >
+ rest_type;
+
+ typedef
+ segment_sequence<
+ typename result_of::push_back<
+ typename result_of::push_front<
+ rest_type const
+ , typename make_segment_sequence_front<StackBegin>::type
+ >::type const
+ , typename make_segment_sequence_back<StackEnd>::type
+ >::type
+ >
+ type;
+
+ static type call(StackBegin stack_begin, StackEnd stack_end)
+ {
+ //return segment_sequence(
+ // push_back(
+ // push_front(
+ // iterator_range(
+ // fusion::next(begin(car(stack_begin))),
+ // begin(car(stack_end))), // a range of (possibly segmented) ranges.
+ // make_segment_sequence_front(stack_begin)), // should be a (possibly segmented) range.
+ // make_segment_sequence_back(stack_end))); // should be a (possibly segmented) range.
+ return type(
+ fusion::push_back(
+ fusion::push_front(
+ rest_type(fusion::next(stack_begin.car.first), stack_end.car.first)
+ , make_segment_sequence_front<StackBegin>::call(stack_begin))
+ , make_segment_sequence_back<StackEnd>::call(stack_end)));
+ }
+ };
+
+ template <typename StackBegin, typename StackEnd>
+ struct make_segmented_range_reduce2<StackBegin, StackEnd, true>
+ {
+ typedef
+ make_segmented_range_reduce<
+ typename StackBegin::cdr_type
+ , typename StackEnd::cdr_type
+ >
+ impl;
+
+ typedef
+ typename impl::type
+ type;
+
+ static type call(StackBegin stack_begin, StackEnd stack_end)
+ {
+ return impl::call(stack_begin.cdr, stack_end.cdr);
+ }
+ };
+
+ template <typename StackBegin, typename StackEnd, int StackBeginSize, int StackEndSize>
+ struct make_segmented_range_reduce
+ : make_segmented_range_reduce2<StackBegin, StackEnd>
+ {};
+
+ template <typename StackBegin, typename StackEnd>
+ struct make_segmented_range_reduce<StackBegin, StackEnd, 1, 1>
+ {
+ typedef
+ iterator_range<
+ typename StackBegin::car_type::begin_type
+ , typename StackEnd::car_type::begin_type
+ >
+ range_type;
+
+ typedef
+ single_view<range_type>
+ segment_type;
+
+ typedef
+ segment_sequence<segment_type>
+ type;
+
+ static type call(StackBegin stack_begin, StackEnd stack_end)
+ {
+ //return segment_sequence(
+ // single_view(
+ // iterator_range(begin(car(stack_begin)), begin(car(stack_end)))));
+ return type(segment_type(range_type(stack_begin.car.first, stack_end.car.first)));
+ }
+ };
+
+ //auto make_segmented_range(begin, end)
+ //{
+ // return make_segmented_range_reduce(reverse(begin.context), reverse(end.context));
+ //}
+
+ template <typename Begin, typename End>
+ struct make_segmented_range
+ {
+ typedef reverse_cons<typename Begin::context_type> reverse_begin_cons;
+ typedef reverse_cons<typename End::context_type> reverse_end_cons;
+
+ typedef
+ make_segmented_range_reduce<
+ typename reverse_begin_cons::type
+ , typename reverse_end_cons::type
+ >
+ impl;
+
+ typedef typename impl::type type;
+
+ static type call(Begin const& begin, End const& end)
+ {
+ return impl::call(
+ reverse_begin_cons::call(begin.context)
+ , reverse_end_cons::call(end.context));
+ }
+ };
+
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_ITERATOR_RANGE_SEGMENTS_HPP_INCLUDED)
+#define BOOST_FUSION_ITERATOR_RANGE_SEGMENTS_HPP_INCLUDED
+
+#include <boost/mpl/assert.hpp>
+#include <boost/fusion/sequence/intrinsic/segments.hpp>
+#include <boost/fusion/support/is_segmented.hpp>
+#include <boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_range_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct segments_impl;
+
+ template <>
+ struct segments_impl<iterator_range_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef
+ detail::make_segmented_range<
+ typename Sequence::begin_type
+ , typename Sequence::end_type
+ >
+ impl;
+
+ BOOST_MPL_ASSERT((traits::is_segmented<typename impl::type>));
+
+ typedef
+ typename result_of::segments<typename impl::type>::type
+ type;
+
+ static type call(Sequence & seq)
+ {
+ return fusion::segments(impl::call(seq.first, seq.last));
+ }
+ };
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_ITERATOR_RANGE_SIZE_IMPL_HPP_INCLUDED)
+#define BOOST_FUSION_ITERATOR_RANGE_SIZE_IMPL_HPP_INCLUDED
+
+#include <boost/fusion/iterator/distance.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_range_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct size_impl;
+
+ template <>
+ struct size_impl<iterator_range_tag>
+ {
+ template <typename Seq>
+ struct apply
+ : result_of::distance<
+ typename Seq::begin_type,
+ typename Seq::end_type
+ >
+ {};
+ };
+ }
+}}
+
+#endif
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2007 Tobias Schwinger
+
+ 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)
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_ITERATOR_RANGE_VALUE_AT_IMPL_HPP_INCLUDED)
+#define BOOST_FUSION_ITERATOR_RANGE_VALUE_AT_IMPL_HPP_INCLUDED
+
+#include <boost/fusion/iterator/advance.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_range_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<iterator_range_tag>
+ {
+ template <typename Seq, typename N>
+ struct apply
+ {
+ typedef typename Seq::begin_type begin_type;
+ typedef typename result_of::advance<begin_type,N>::type pos;
+ typedef typename result_of::value_of<pos>::type type;
+ };
+ };
+ }
+}}
+
+#endif
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_ITERATOR_RANGE_05062005_1224)
+#define FUSION_ITERATOR_RANGE_05062005_1224
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/iterator/distance.hpp>
+#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
+#include <boost/fusion/view/iterator_range/detail/begin_impl.hpp>
+#include <boost/fusion/view/iterator_range/detail/end_impl.hpp>
+#include <boost/fusion/view/iterator_range/detail/at_impl.hpp>
+#include <boost/fusion/view/iterator_range/detail/size_impl.hpp>
+#include <boost/fusion/view/iterator_range/detail/value_at_impl.hpp>
+#include <boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp>
+#include <boost/fusion/view/iterator_range/detail/segments_impl.hpp>
+#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+#include <boost/config.hpp>
+
+#if defined (BOOST_MSVC)
+# pragma warning(push)
+# pragma warning (disable: 4512) // assignment operator could not be generated.
+#endif
+
+namespace boost { namespace fusion
+{
+ struct iterator_range_tag;
+ struct fusion_sequence_tag;
+
+ template <typename First, typename Last>
+ struct iterator_range : sequence_base<iterator_range<First, Last> >
+ {
+ typedef typename convert_iterator<First>::type begin_type;
+ typedef typename convert_iterator<Last>::type end_type;
+ typedef iterator_range_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::true_ is_view;
+
+ typedef typename traits::category_of<begin_type>::type category;
+
+ iterator_range(First const& in_first, Last const& in_last)
+ : first(convert_iterator<First>::call(in_first))
+ , last(convert_iterator<Last>::call(in_last)) {}
+
+ begin_type first;
+ end_type last;
+ };
+}}
+
+#if defined (BOOST_MSVC)
+# pragma warning(pop)
+#endif
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_BEGIN_IMPL_07162005_0115)
+#define FUSION_BEGIN_IMPL_07162005_0115
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/mpl/if.hpp>
+
+namespace boost { namespace fusion
+{
+ struct joint_view_tag;
+
+ template <typename Category, typename First, typename Last, typename Concat>
+ struct joint_view_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<joint_view_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename Sequence::first_type first_type;
+ typedef typename Sequence::last_type last_type;
+ typedef typename Sequence::concat_type concat_type;
+ typedef typename Sequence::category category;
+ typedef result_of::equal_to<first_type, last_type> equal_to;
+
+ typedef typename
+ mpl::if_<
+ equal_to
+ , concat_type
+ , joint_view_iterator<category, first_type, last_type, concat_type>
+ >::type
+ type;
+
+ static type
+ call(Sequence& s, mpl::true_)
+ {
+ return s.concat();
+ }
+
+ static type
+ call(Sequence& s, mpl::false_)
+ {
+ return type(s.first(), s.concat());
+ }
+
+ static type
+ call(Sequence& s)
+ {
+ return call(s, equal_to());
+ }
+ };
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2009 Christopher Schmidt
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_DEREF_DATA_IMPL_HPP
+#define BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_DEREF_DATA_IMPL_HPP
+
+#include <boost/fusion/iterator/deref_data.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename>
+ struct deref_data_impl;
+
+ template <>
+ struct deref_data_impl<joint_view_iterator_tag>
+ {
+ template <typename It>
+ struct apply
+ {
+ typedef typename
+ result_of::deref_data<typename It::first_type>::type
+ type;
+
+ static type
+ call(It const& it)
+ {
+ return fusion::deref_data(it.first);
+ }
+ };
+ };
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_DEREF_IMPL_07162005_0137)
+#define FUSION_DEREF_IMPL_07162005_0137
+
+#include <boost/fusion/iterator/detail/adapt_deref_traits.hpp>
+
+namespace boost { namespace fusion
+{
+ struct joint_view_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<joint_view_iterator_tag>
+ : detail::adapt_deref_traits {};
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_END_IMPL_07162005_0128)
+#define FUSION_END_IMPL_07162005_0128
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/mpl/if.hpp>
+
+namespace boost { namespace fusion
+{
+ struct joint_view_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<joint_view_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename Sequence::concat_last_type type;
+
+ static type
+ call(Sequence& s)
+ {
+ return s.concat_last();
+ }
+ };
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2009 Christopher Schmidt
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_KEY_OF_IMPL_HPP
+#define BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_KEY_OF_IMPL_HPP
+
+#include <boost/fusion/iterator/key_of.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename>
+ struct key_of_impl;
+
+ template <>
+ struct key_of_impl<joint_view_iterator_tag>
+ {
+ template <typename It>
+ struct apply
+ : result_of::key_of<typename It::first_type>
+ {};
+ };
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_NEXT_IMPL_07162005_0136)
+#define FUSION_NEXT_IMPL_07162005_0136
+
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/mpl/if.hpp>
+
+namespace boost { namespace fusion
+{
+ struct joint_view_iterator_tag;
+
+ template <typename Category, typename First, typename Last, typename Concat>
+ struct joint_view_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct next_impl;
+
+ template <>
+ struct next_impl<joint_view_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::first_type first_type;
+ typedef typename Iterator::last_type last_type;
+ typedef typename Iterator::concat_type concat_type;
+ typedef typename Iterator::category category;
+ typedef typename result_of::next<first_type>::type next_type;
+ typedef result_of::equal_to<next_type, last_type> equal_to;
+
+ typedef typename
+ mpl::if_<
+ equal_to
+ , concat_type
+ , joint_view_iterator<category, next_type, last_type, concat_type>
+ >::type
+ type;
+
+ static type
+ call(Iterator const& i, mpl::true_)
+ {
+ return i.concat;
+ }
+
+ static type
+ call(Iterator const& i, mpl::false_)
+ {
+ return type(fusion::next(i.first), i.concat);
+ }
+
+ static type
+ call(Iterator const& i)
+ {
+ return call(i, equal_to());
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2009 Christopher Schmidt
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP
+#define BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP
+
+#include <boost/fusion/iterator/value_of_data.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename>
+ struct value_of_data_impl;
+
+ template <>
+ struct value_of_data_impl<joint_view_iterator_tag>
+ {
+ template <typename It>
+ struct apply
+ : result_of::value_of_data<typename It::first_type>
+ {};
+ };
+}}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_VALUE_IMPL_07162005_0132)
+#define FUSION_VALUE_IMPL_07162005_0132
+
+#include <boost/fusion/iterator/detail/adapt_value_traits.hpp>
+
+namespace boost { namespace fusion
+{
+ struct joint_view_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<joint_view_iterator_tag>
+ : detail::adapt_value_traits {};
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_JOINT_VIEW_07162005_0140)
+#define FUSION_JOINT_VIEW_07162005_0140
+
+#include <boost/fusion/view/joint_view/joint_view_fwd.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/support/is_view.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/view/joint_view/joint_view_iterator.hpp>
+#include <boost/fusion/view/joint_view/detail/begin_impl.hpp>
+#include <boost/fusion/view/joint_view/detail/end_impl.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/plus.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/inherit.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct joint_view_tag;
+ struct forward_traversal_tag;
+ struct fusion_sequence_tag;
+
+ template <typename Sequence1, typename Sequence2>
+ struct joint_view : sequence_base<joint_view<Sequence1, Sequence2> >
+ {
+ typedef joint_view_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef typename
+ mpl::eval_if<
+ mpl::and_<
+ traits::is_associative<Sequence1>
+ , traits::is_associative<Sequence2>
+ >
+ , mpl::inherit2<forward_traversal_tag,associative_tag>
+ , mpl::identity<forward_traversal_tag>
+ >::type
+ category;
+ typedef mpl::true_ is_view;
+
+ typedef typename result_of::begin<Sequence1>::type first_type;
+ typedef typename result_of::end<Sequence1>::type last_type;
+ typedef typename result_of::begin<Sequence2>::type concat_type;
+ typedef typename result_of::end<Sequence2>::type concat_last_type;
+ typedef typename mpl::int_<
+ result_of::size<Sequence1>::value + result_of::size<Sequence2>::value>
+ size;
+
+ joint_view(Sequence1& in_seq1, Sequence2& in_seq2)
+ : seq1(in_seq1)
+ , seq2(in_seq2)
+ {}
+
+ first_type first() const { return fusion::begin(seq1); }
+ concat_type concat() const { return fusion::begin(seq2); }
+ concat_last_type concat_last() const { return fusion::end(seq2); }
+
+ private:
+ // silence MSVC warning C4512: assignment operator could not be generated
+ joint_view& operator= (joint_view const&);
+
+ typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1;
+ typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2;
+ };
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_JOINT_VIEW_FWD_HPP_INCLUDED)
+#define BOOST_FUSION_JOINT_VIEW_FWD_HPP_INCLUDED
+
+namespace boost { namespace fusion
+{
+ struct joint_view_tag;
+
+ template <typename Sequence1, typename Sequence2>
+ struct joint_view;
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_JOINT_VIEW_ITERATOR_07162005_0140)
+#define FUSION_JOINT_VIEW_ITERATOR_07162005_0140
+
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
+#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+#include <boost/fusion/view/joint_view/detail/deref_impl.hpp>
+#include <boost/fusion/view/joint_view/detail/next_impl.hpp>
+#include <boost/fusion/view/joint_view/detail/value_of_impl.hpp>
+#include <boost/fusion/view/joint_view/detail/deref_data_impl.hpp>
+#include <boost/fusion/view/joint_view/detail/value_of_data_impl.hpp>
+#include <boost/fusion/view/joint_view/detail/key_of_impl.hpp>
+#include <boost/static_assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct joint_view_iterator_tag;
+ struct forward_traversal_tag;
+
+ template <typename Category, typename First, typename Last, typename Concat>
+ struct joint_view_iterator
+ : iterator_base<joint_view_iterator<Category, First, Last, Concat> >
+ {
+ typedef convert_iterator<First> first_converter;
+ typedef convert_iterator<Last> last_converter;
+ typedef convert_iterator<Concat> concat_converter;
+
+ typedef typename first_converter::type first_type;
+ typedef typename last_converter::type last_type;
+ typedef typename concat_converter::type concat_type;
+
+ typedef joint_view_iterator_tag fusion_tag;
+ typedef Category category;
+ BOOST_STATIC_ASSERT((!result_of::equal_to<first_type, last_type>::value));
+
+ joint_view_iterator(First const& in_first, Concat const& in_concat)
+ : first(first_converter::call(in_first))
+ , concat(concat_converter::call(in_concat))
+ {}
+
+ first_type first;
+ concat_type concat;
+
+ private:
+ // silence MSVC warning C4512: assignment operator could not be generated
+ joint_view_iterator& operator= (joint_view_iterator const&);
+ };
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_SINGLE_VIEW_ADVANCE_IMPL_JUL_07_2011_1348PM)
+#define BOOST_FUSION_SINGLE_VIEW_ADVANCE_IMPL_JUL_07_2011_1348PM
+
+#include <boost/mpl/plus.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_iterator_tag;
+
+ template <typename SingleView, typename Pos>
+ struct single_view_iterator;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct advance_impl;
+
+ template<>
+ struct advance_impl<single_view_iterator_tag>
+ {
+ template<typename Iterator, typename Dist>
+ struct apply
+ {
+ typedef single_view_iterator<
+ typename Iterator::single_view_type,
+ typename mpl::plus<typename Iterator::position, Dist>::type>
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.view);
+ }
+ };
+ };
+ }
+
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_SINGLE_VIEW_AT_IMPL_JUL_07_2011_1348PM)
+#define BOOST_FUSION_SINGLE_VIEW_AT_IMPL_JUL_07_2011_1348PM
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/equal_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct at_impl;
+
+ template<>
+ struct at_impl<single_view_tag>
+ {
+ template<typename Sequence, typename N>
+ struct apply
+ {
+ BOOST_MPL_ASSERT((mpl::equal_to<N, mpl::int_<0> >));
+ typedef typename Sequence::value_type type;
+
+ static type
+ call(Sequence& seq)
+ {
+ return seq.val;
+ }
+ };
+ };
+ }
+
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SINGLE_VIEW_BEGIN_IMPL_05052005_0305)
+#define BOOST_FUSION_SINGLE_VIEW_BEGIN_IMPL_05052005_0305
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_tag;
+
+ template <typename SingleView, typename Pos>
+ struct single_view_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<single_view_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef single_view_iterator<Sequence, mpl::int_<0> > type;
+
+ static type
+ call(Sequence& seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SINGLE_VIEW_DEREF_IMPL_05052005_0258)
+#define BOOST_FUSION_SINGLE_VIEW_DEREF_IMPL_05052005_0258
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/equal_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<single_view_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ BOOST_MPL_ASSERT((mpl::equal_to<typename Iterator::position, mpl::int_<0> >));
+ typedef typename Iterator::value_type type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return i.view.val;
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_SINGLE_VIEW_DISTANCE_IMPL_JUL_07_2011_1348PM)
+#define BOOST_FUSION_SINGLE_VIEW_DISTANCE_IMPL_JUL_07_2011_1348PM
+
+#include <boost/mpl/minus.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_iterator_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct distance_impl;
+
+ template<>
+ struct distance_impl<single_view_iterator_tag>
+ {
+ template<typename First, typename Last>
+ struct apply
+ : mpl::minus<typename Last::position, typename First::position>
+ {
+ typedef typename mpl::minus<typename Last::position,
+ typename First::position>::type type;
+
+ static type
+ call(First const& /*first*/, Last const& /*last*/)
+ {
+ return type();
+ }
+ };
+ };
+ }
+
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SINGLE_VIEW_END_IMPL_05052005_0332)
+#define BOOST_FUSION_SINGLE_VIEW_END_IMPL_05052005_0332
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_tag;
+
+ template <typename SingleView, typename Pos>
+ struct single_view_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<single_view_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef single_view_iterator<Sequence, mpl::int_<1> > type;
+
+ static type
+ call(Sequence& seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_SINGLE_VIEW_ITERATOR_JUL_07_2011_1348PM)
+#define BOOST_FUSION_SINGLE_VIEW_ITERATOR_JUL_07_2011_1348PM
+
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_iterator_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct equal_to_impl;
+
+ template<>
+ struct equal_to_impl<single_view_iterator_tag>
+ {
+ template<typename It1, typename It2>
+ struct apply
+ : mpl::equal_to<typename It1::position, typename It2::position>
+ {
+ BOOST_MPL_ASSERT((is_same<typename add_const<typename It1::single_view_type>::type,
+ typename add_const<typename It2::single_view_type>::type>));
+ };
+ };
+ }
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SINGLE_VIEW_NEXT_IMPL_05052005_0331)
+#define BOOST_FUSION_SINGLE_VIEW_NEXT_IMPL_05052005_0331
+
+#include <boost/mpl/next.hpp>
+#include <boost/static_assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_iterator_tag;
+
+ template <typename SingleView, typename Pos>
+ struct single_view_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct next_impl;
+
+ template <>
+ struct next_impl<single_view_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef single_view_iterator<
+ typename Iterator::single_view_type,
+ typename mpl::next<typename Iterator::position>::type>
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ BOOST_STATIC_ASSERT((type::position::value < 2));
+ return type(i.view);
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SINGLE_VIEW_PRIOR_IMPL_JUL_07_2011_1348PM)
+#define BOOST_FUSION_SINGLE_VIEW_PRIOR_IMPL_JUL_07_2011_1348PM
+
+#include <boost/mpl/prior.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_iterator_tag;
+
+ template <typename Sequence, typename Pos>
+ struct single_view_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct prior_impl;
+
+ template <>
+ struct prior_impl<single_view_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef single_view_iterator<
+ typename Iterator::single_view_type,
+ typename mpl::prior<typename Iterator::position>::type>
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.view);
+ }
+ };
+ };
+ }
+
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(FUSION_SINGLE_VIEW_SIZE_IMPL_JUL_07_2011_1348PM)
+#define FUSION_SINGLE_VIEW_SIZE_IMPL_JUL_07_2011_1348PM
+
+namespace boost { namespace fusion
+{
+ struct single_view_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct size_impl;
+
+ template <>
+ struct size_impl<single_view_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef mpl::int_<1> type;
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_SINGLE_VIEW_VALUE_AT_IMPL_JUL_07_2011_1348PM)
+#define BOOST_FUSION_SINGLE_VIEW_VALUE_AT_IMPL_JUL_07_2011_1348PM
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct value_at_impl;
+
+ template<>
+ struct value_at_impl<single_view_tag>
+ {
+ template<typename Sequence, typename N>
+ struct apply
+ {
+ BOOST_MPL_ASSERT((mpl::equal_to<N, mpl::int_<0> >));
+ typedef typename Sequence::value_type type;
+ };
+ };
+ }
+
+}}
+
+#endif
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SINGLE_VIEW_VALUE_OF_IMPL_05052005_0324)
+#define BOOST_FUSION_SINGLE_VIEW_VALUE_OF_IMPL_05052005_0324
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/equal_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct single_view_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<single_view_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ BOOST_MPL_ASSERT((mpl::equal_to<typename Iterator::position, mpl::int_<0> >));
+ typedef typename Iterator::value_type type;
+ };
+ };
+ }
+}}
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SINGLE_VIEW_05052005_0335)
+#define BOOST_FUSION_SINGLE_VIEW_05052005_0335
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/view/single_view/single_view_iterator.hpp>
+#include <boost/fusion/view/single_view/detail/at_impl.hpp>
+#include <boost/fusion/view/single_view/detail/begin_impl.hpp>
+#include <boost/fusion/view/single_view/detail/end_impl.hpp>
+#include <boost/fusion/view/single_view/detail/size_impl.hpp>
+#include <boost/fusion/view/single_view/detail/value_at_impl.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/config.hpp>
+
+#if defined (BOOST_MSVC)
+# pragma warning(push)
+# pragma warning (disable: 4512) // assignment operator could not be generated.
+#endif
+
+namespace boost { namespace fusion
+{
+ struct single_view_tag;
+ struct random_access_traversal_tag;
+ struct fusion_sequence_tag;
+
+ template <typename T>
+ struct single_view : sequence_base<single_view<T> >
+ {
+ typedef single_view_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef random_access_traversal_tag category;
+ typedef mpl::true_ is_view;
+ typedef mpl::int_<1> size;
+ typedef T value_type;
+
+ single_view()
+ : val() {}
+
+ explicit single_view(typename detail::call_param<T>::type in_val)
+ : val(in_val) {}
+
+ value_type val;
+ };
+
+ template <typename T>
+ inline single_view<typename detail::as_fusion_element<T>::type>
+ make_single_view(T const& v)
+ {
+ return single_view<typename detail::as_fusion_element<T>::type>(v);
+ }
+}}
+
+#if defined (BOOST_MSVC)
+# pragma warning(pop)
+#endif
+
+#endif
+
+
--- /dev/null
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Eric Niebler
+
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SINGLE_VIEW_ITERATOR_05052005_0340)
+#define BOOST_FUSION_SINGLE_VIEW_ITERATOR_05052005_0340
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/view/single_view/detail/deref_impl.hpp>
+#include <boost/fusion/view/single_view/detail/next_impl.hpp>
+#include <boost/fusion/view/single_view/detail/prior_impl.hpp>
+#include <boost/fusion/view/single_view/detail/advance_impl.hpp>
+#include <boost/fusion/view/single_view/detail/distance_impl.hpp>
+#include <boost/fusion/view/single_view/detail/equal_to_impl.hpp>
+#include <boost/fusion/view/single_view/detail/value_of_impl.hpp>
+#include <boost/config.hpp>
+
+#if defined (BOOST_MSVC)
+# pragma warning(push)
+# pragma warning (disable: 4512) // assignment operator could not be generated.
+#endif
+
+namespace boost { namespace fusion
+{
+ struct single_view_iterator_tag;
+ struct random_access_traversal_tag;
+
+ template <typename SingleView, typename Pos>
+ struct single_view_iterator
+ : iterator_base<single_view_iterator<SingleView, Pos> >
+ {
+ typedef single_view_iterator_tag fusion_tag;
+ typedef random_access_traversal_tag category;
+ typedef typename SingleView::value_type value_type;
+ typedef Pos position;
+ typedef SingleView single_view_type;
+
+ explicit single_view_iterator(single_view_type& in_view)
+ : view(in_view) {}
+
+ SingleView& view;
+
+ private:
+ single_view_iterator& operator=(single_view_iterator const&);
+ };
+}}
+
+#if defined (BOOST_MSVC)
+# pragma warning(pop)
+#endif
+
+#endif
+
+
--- /dev/null
+// boost integer.hpp header file -------------------------------------------//
+
+// Copyright Beman Dawes and Daryle Walker 1999. 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)
+
+// See http://www.boost.org/libs/integer for documentation.
+
+// Revision History
+// 22 Sep 01 Added value-based integer templates. (Daryle Walker)
+// 01 Apr 01 Modified to use new <boost/limits.hpp> header. (John Maddock)
+// 30 Jul 00 Add typename syntax fix (Jens Maurer)
+// 28 Aug 99 Initial version
+
+#ifndef BOOST_INTEGER_HPP
+#define BOOST_INTEGER_HPP
+
+#include <boost/integer_fwd.hpp> // self include
+
+#include <boost/integer_traits.hpp> // for boost::::boost::integer_traits
+#include <boost/limits.hpp> // for ::std::numeric_limits
+#include <boost/cstdint.hpp> // for boost::int64_t and BOOST_NO_INTEGRAL_INT64_T
+#include <boost/static_assert.hpp>
+
+//
+// We simply cannot include this header on gcc without getting copious warnings of the kind:
+//
+// boost/integer.hpp:77:30: warning: use of C99 long long integer constant
+//
+// And yet there is no other reasonable implementation, so we declare this a system header
+// to suppress these warnings.
+//
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+#pragma GCC system_header
+#endif
+
+namespace boost
+{
+
+ // Helper templates ------------------------------------------------------//
+
+ // fast integers from least integers
+ // int_fast_t<> works correctly for unsigned too, in spite of the name.
+ template< typename LeastInt >
+ struct int_fast_t
+ {
+ typedef LeastInt fast;
+ typedef fast type;
+ }; // imps may specialize
+
+ namespace detail{
+
+ // convert category to type
+ template< int Category > struct int_least_helper {}; // default is empty
+ template< int Category > struct uint_least_helper {}; // default is empty
+
+ // specializatons: 1=long, 2=int, 3=short, 4=signed char,
+ // 6=unsigned long, 7=unsigned int, 8=unsigned short, 9=unsigned char
+ // no specializations for 0 and 5: requests for a type > long are in error
+#ifdef BOOST_HAS_LONG_LONG
+ template<> struct int_least_helper<1> { typedef boost::long_long_type least; };
+#elif defined(BOOST_HAS_MS_INT64)
+ template<> struct int_least_helper<1> { typedef __int64 least; };
+#endif
+ template<> struct int_least_helper<2> { typedef long least; };
+ template<> struct int_least_helper<3> { typedef int least; };
+ template<> struct int_least_helper<4> { typedef short least; };
+ template<> struct int_least_helper<5> { typedef signed char least; };
+#ifdef BOOST_HAS_LONG_LONG
+ template<> struct uint_least_helper<1> { typedef boost::ulong_long_type least; };
+#elif defined(BOOST_HAS_MS_INT64)
+ template<> struct uint_least_helper<1> { typedef unsigned __int64 least; };
+#endif
+ template<> struct uint_least_helper<2> { typedef unsigned long least; };
+ template<> struct uint_least_helper<3> { typedef unsigned int least; };
+ template<> struct uint_least_helper<4> { typedef unsigned short least; };
+ template<> struct uint_least_helper<5> { typedef unsigned char least; };
+
+ template <int Bits>
+ struct exact_signed_base_helper{};
+ template <int Bits>
+ struct exact_unsigned_base_helper{};
+
+ template <> struct exact_signed_base_helper<sizeof(signed char)* CHAR_BIT> { typedef signed char exact; };
+ template <> struct exact_unsigned_base_helper<sizeof(unsigned char)* CHAR_BIT> { typedef unsigned char exact; };
+#if USHRT_MAX != UCHAR_MAX
+ template <> struct exact_signed_base_helper<sizeof(short)* CHAR_BIT> { typedef short exact; };
+ template <> struct exact_unsigned_base_helper<sizeof(unsigned short)* CHAR_BIT> { typedef unsigned short exact; };
+#endif
+#if UINT_MAX != USHRT_MAX
+ template <> struct exact_signed_base_helper<sizeof(int)* CHAR_BIT> { typedef int exact; };
+ template <> struct exact_unsigned_base_helper<sizeof(unsigned int)* CHAR_BIT> { typedef unsigned int exact; };
+#endif
+#if ULONG_MAX != UINT_MAX
+ template <> struct exact_signed_base_helper<sizeof(long)* CHAR_BIT> { typedef long exact; };
+ template <> struct exact_unsigned_base_helper<sizeof(unsigned long)* CHAR_BIT> { typedef unsigned long exact; };
+#endif
+#if defined(BOOST_HAS_LONG_LONG) &&\
+ ((defined(ULLONG_MAX) && (ULLONG_MAX != ULONG_MAX)) ||\
+ (defined(ULONG_LONG_MAX) && (ULONG_LONG_MAX != ULONG_MAX)) ||\
+ (defined(ULONGLONG_MAX) && (ULONGLONG_MAX != ULONG_MAX)) ||\
+ (defined(_ULLONG_MAX) && (_ULLONG_MAX != ULONG_MAX)))
+ template <> struct exact_signed_base_helper<sizeof(boost::long_long_type)* CHAR_BIT> { typedef boost::long_long_type exact; };
+ template <> struct exact_unsigned_base_helper<sizeof(boost::ulong_long_type)* CHAR_BIT> { typedef boost::ulong_long_type exact; };
+#endif
+
+
+ } // namespace detail
+
+ // integer templates specifying number of bits ---------------------------//
+
+ // signed
+ template< int Bits > // bits (including sign) required
+ struct int_t : public detail::exact_signed_base_helper<Bits>
+ {
+ BOOST_STATIC_ASSERT_MSG(Bits <= (int)(sizeof(boost::intmax_t) * CHAR_BIT),
+ "No suitable signed integer type with the requested number of bits is available.");
+ typedef typename detail::int_least_helper
+ <
+#ifdef BOOST_HAS_LONG_LONG
+ (Bits <= (int)(sizeof(boost::long_long_type) * CHAR_BIT)) +
+#else
+ 1 +
+#endif
+ (Bits-1 <= ::std::numeric_limits<long>::digits) +
+ (Bits-1 <= ::std::numeric_limits<int>::digits) +
+ (Bits-1 <= ::std::numeric_limits<short>::digits) +
+ (Bits-1 <= ::std::numeric_limits<signed char>::digits)
+ >::least least;
+ typedef typename int_fast_t<least>::type fast;
+ };
+
+ // unsigned
+ template< int Bits > // bits required
+ struct uint_t : public detail::exact_unsigned_base_helper<Bits>
+ {
+ BOOST_STATIC_ASSERT_MSG(Bits <= (int)(sizeof(boost::uintmax_t) * CHAR_BIT),
+ "No suitable unsigned integer type with the requested number of bits is available.");
+#if (defined(__BORLANDC__) || defined(__CODEGEAR__)) && defined(BOOST_NO_INTEGRAL_INT64_T)
+ // It's really not clear why this workaround should be needed... shrug I guess! JM
+ BOOST_STATIC_CONSTANT(int, s =
+ 6 +
+ (Bits <= ::std::numeric_limits<unsigned long>::digits) +
+ (Bits <= ::std::numeric_limits<unsigned int>::digits) +
+ (Bits <= ::std::numeric_limits<unsigned short>::digits) +
+ (Bits <= ::std::numeric_limits<unsigned char>::digits));
+ typedef typename detail::int_least_helper< ::boost::uint_t<Bits>::s>::least least;
+#else
+ typedef typename detail::uint_least_helper
+ <
+#ifdef BOOST_HAS_LONG_LONG
+ (Bits <= (int)(sizeof(boost::long_long_type) * CHAR_BIT)) +
+#else
+ 1 +
+#endif
+ (Bits <= ::std::numeric_limits<unsigned long>::digits) +
+ (Bits <= ::std::numeric_limits<unsigned int>::digits) +
+ (Bits <= ::std::numeric_limits<unsigned short>::digits) +
+ (Bits <= ::std::numeric_limits<unsigned char>::digits)
+ >::least least;
+#endif
+ typedef typename int_fast_t<least>::type fast;
+ // int_fast_t<> works correctly for unsigned too, in spite of the name.
+ };
+
+ // integer templates specifying extreme value ----------------------------//
+
+ // signed
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
+ template< boost::long_long_type MaxValue > // maximum value to require support
+#else
+ template< long MaxValue > // maximum value to require support
+#endif
+ struct int_max_value_t
+ {
+ typedef typename detail::int_least_helper
+ <
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
+ (MaxValue <= ::boost::integer_traits<boost::long_long_type>::const_max) +
+#else
+ 1 +
+#endif
+ (MaxValue <= ::boost::integer_traits<long>::const_max) +
+ (MaxValue <= ::boost::integer_traits<int>::const_max) +
+ (MaxValue <= ::boost::integer_traits<short>::const_max) +
+ (MaxValue <= ::boost::integer_traits<signed char>::const_max)
+ >::least least;
+ typedef typename int_fast_t<least>::type fast;
+ };
+
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
+ template< boost::long_long_type MinValue > // minimum value to require support
+#else
+ template< long MinValue > // minimum value to require support
+#endif
+ struct int_min_value_t
+ {
+ typedef typename detail::int_least_helper
+ <
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
+ (MinValue >= ::boost::integer_traits<boost::long_long_type>::const_min) +
+#else
+ 1 +
+#endif
+ (MinValue >= ::boost::integer_traits<long>::const_min) +
+ (MinValue >= ::boost::integer_traits<int>::const_min) +
+ (MinValue >= ::boost::integer_traits<short>::const_min) +
+ (MinValue >= ::boost::integer_traits<signed char>::const_min)
+ >::least least;
+ typedef typename int_fast_t<least>::type fast;
+ };
+
+ // unsigned
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
+ template< boost::ulong_long_type MaxValue > // minimum value to require support
+#else
+ template< unsigned long MaxValue > // minimum value to require support
+#endif
+ struct uint_value_t
+ {
+#if (defined(__BORLANDC__) || defined(__CODEGEAR__))
+ // It's really not clear why this workaround should be needed... shrug I guess! JM
+#if defined(BOOST_NO_INTEGRAL_INT64_T)
+ BOOST_STATIC_CONSTANT(unsigned, which =
+ 1 +
+ (MaxValue <= ::boost::integer_traits<unsigned long>::const_max) +
+ (MaxValue <= ::boost::integer_traits<unsigned int>::const_max) +
+ (MaxValue <= ::boost::integer_traits<unsigned short>::const_max) +
+ (MaxValue <= ::boost::integer_traits<unsigned char>::const_max));
+ typedef typename detail::int_least_helper< ::boost::uint_value_t<MaxValue>::which>::least least;
+#else // BOOST_NO_INTEGRAL_INT64_T
+ BOOST_STATIC_CONSTANT(unsigned, which =
+ 1 +
+ (MaxValue <= ::boost::integer_traits<boost::ulong_long_type>::const_max) +
+ (MaxValue <= ::boost::integer_traits<unsigned long>::const_max) +
+ (MaxValue <= ::boost::integer_traits<unsigned int>::const_max) +
+ (MaxValue <= ::boost::integer_traits<unsigned short>::const_max) +
+ (MaxValue <= ::boost::integer_traits<unsigned char>::const_max));
+ typedef typename detail::uint_least_helper< ::boost::uint_value_t<MaxValue>::which>::least least;
+#endif // BOOST_NO_INTEGRAL_INT64_T
+#else
+ typedef typename detail::uint_least_helper
+ <
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
+ (MaxValue <= ::boost::integer_traits<boost::ulong_long_type>::const_max) +
+#else
+ 1 +
+#endif
+ (MaxValue <= ::boost::integer_traits<unsigned long>::const_max) +
+ (MaxValue <= ::boost::integer_traits<unsigned int>::const_max) +
+ (MaxValue <= ::boost::integer_traits<unsigned short>::const_max) +
+ (MaxValue <= ::boost::integer_traits<unsigned char>::const_max)
+ >::least least;
+#endif
+ typedef typename int_fast_t<least>::type fast;
+ };
+
+
+} // namespace boost
+
+#endif // BOOST_INTEGER_HPP
--- /dev/null
+// Boost integer/integer_mask.hpp header file ------------------------------//
+
+// (C) Copyright Daryle Walker 2001.
+// 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)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_INTEGER_INTEGER_MASK_HPP
+#define BOOST_INTEGER_INTEGER_MASK_HPP
+
+#include <boost/integer_fwd.hpp> // self include
+
+#include <boost/config.hpp> // for BOOST_STATIC_CONSTANT
+#include <boost/integer.hpp> // for boost::uint_t
+
+#include <climits> // for UCHAR_MAX, etc.
+#include <cstddef> // for std::size_t
+
+#include <boost/limits.hpp> // for std::numeric_limits
+
+//
+// We simply cannot include this header on gcc without getting copious warnings of the kind:
+//
+// boost/integer/integer_mask.hpp:93:35: warning: use of C99 long long integer constant
+//
+// And yet there is no other reasonable implementation, so we declare this a system header
+// to suppress these warnings.
+//
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+#pragma GCC system_header
+#endif
+
+namespace boost
+{
+
+
+// Specified single-bit mask class declaration -----------------------------//
+// (Lowest bit starts counting at 0.)
+
+template < std::size_t Bit >
+struct high_bit_mask_t
+{
+ typedef typename uint_t<(Bit + 1)>::least least;
+ typedef typename uint_t<(Bit + 1)>::fast fast;
+
+ BOOST_STATIC_CONSTANT( least, high_bit = (least( 1u ) << Bit) );
+ BOOST_STATIC_CONSTANT( fast, high_bit_fast = (fast( 1u ) << Bit) );
+
+ BOOST_STATIC_CONSTANT( std::size_t, bit_position = Bit );
+
+}; // boost::high_bit_mask_t
+
+
+// Specified bit-block mask class declaration ------------------------------//
+// Makes masks for the lowest N bits
+// (Specializations are needed when N fills up a type.)
+
+template < std::size_t Bits >
+struct low_bits_mask_t
+{
+ typedef typename uint_t<Bits>::least least;
+ typedef typename uint_t<Bits>::fast fast;
+
+ BOOST_STATIC_CONSTANT( least, sig_bits = (~( ~(least( 0u )) << Bits )) );
+ BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) );
+
+ BOOST_STATIC_CONSTANT( std::size_t, bit_count = Bits );
+
+}; // boost::low_bits_mask_t
+
+
+#define BOOST_LOW_BITS_MASK_SPECIALIZE( Type ) \
+ template < > struct low_bits_mask_t< std::numeric_limits<Type>::digits > { \
+ typedef std::numeric_limits<Type> limits_type; \
+ typedef uint_t<limits_type::digits>::least least; \
+ typedef uint_t<limits_type::digits>::fast fast; \
+ BOOST_STATIC_CONSTANT( least, sig_bits = (~( least(0u) )) ); \
+ BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) ); \
+ BOOST_STATIC_CONSTANT( std::size_t, bit_count = limits_type::digits ); \
+ }
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4245) // 'initializing' : conversion from 'int' to 'const boost::low_bits_mask_t<8>::least', signed/unsigned mismatch
+#endif
+
+BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned char );
+
+#if USHRT_MAX > UCHAR_MAX
+BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned short );
+#endif
+
+#if UINT_MAX > USHRT_MAX
+BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned int );
+#endif
+
+#if ULONG_MAX > UINT_MAX
+BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned long );
+#endif
+
+#if defined(BOOST_HAS_LONG_LONG)
+ #if ((defined(ULLONG_MAX) && (ULLONG_MAX > ULONG_MAX)) ||\
+ (defined(ULONG_LONG_MAX) && (ULONG_LONG_MAX > ULONG_MAX)) ||\
+ (defined(ULONGLONG_MAX) && (ULONGLONG_MAX > ULONG_MAX)) ||\
+ (defined(_ULLONG_MAX) && (_ULLONG_MAX > ULONG_MAX)))
+ BOOST_LOW_BITS_MASK_SPECIALIZE( boost::ulong_long_type );
+ #endif
+#elif defined(BOOST_HAS_MS_INT64)
+ #if 18446744073709551615ui64 > ULONG_MAX
+ BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned __int64 );
+ #endif
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#undef BOOST_LOW_BITS_MASK_SPECIALIZE
+
+
+} // namespace boost
+
+
+#endif // BOOST_INTEGER_INTEGER_MASK_HPP
--- /dev/null
+// -------------- Boost static_log2.hpp header file ----------------------- //
+//
+// Copyright (C) 2001 Daryle Walker.
+// Copyright (C) 2003 Vesa Karvonen.
+// Copyright (C) 2003 Gennaro Prota.
+//
+// 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)
+//
+// ---------------------------------------------------
+// See http://www.boost.org/libs/integer for documentation.
+// ------------------------------------------------------------------------- //
+
+
+#ifndef BOOST_INTEGER_STATIC_LOG2_HPP
+#define BOOST_INTEGER_STATIC_LOG2_HPP
+
+#include "boost/integer_fwd.hpp" // for boost::intmax_t
+
+namespace boost {
+
+ namespace detail {
+
+ namespace static_log2_impl {
+
+ // choose_initial_n<>
+ //
+ // Recursively doubles its integer argument, until it
+ // becomes >= of the "width" (C99, 6.2.6.2p4) of
+ // static_log2_argument_type.
+ //
+ // Used to get the maximum power of two less then the width.
+ //
+ // Example: if on your platform argument_type has 48 value
+ // bits it yields n=32.
+ //
+ // It's easy to prove that, starting from such a value
+ // of n, the core algorithm works correctly for any width
+ // of static_log2_argument_type and that recursion always
+ // terminates with x = 1 and n = 0 (see the algorithm's
+ // invariant).
+
+ typedef boost::static_log2_argument_type argument_type;
+ typedef boost::static_log2_result_type result_type;
+
+ template <result_type n>
+ struct choose_initial_n {
+
+ BOOST_STATIC_CONSTANT(bool, c = (argument_type(1) << n << n) != 0);
+ BOOST_STATIC_CONSTANT(
+ result_type,
+ value = !c*n + choose_initial_n<2*c*n>::value
+ );
+
+ };
+
+ template <>
+ struct choose_initial_n<0> {
+ BOOST_STATIC_CONSTANT(result_type, value = 0);
+ };
+
+
+
+ // start computing from n_zero - must be a power of two
+ const result_type n_zero = 16;
+ const result_type initial_n = choose_initial_n<n_zero>::value;
+
+ // static_log2_impl<>
+ //
+ // * Invariant:
+ // 2n
+ // 1 <= x && x < 2 at the start of each recursion
+ // (see also choose_initial_n<>)
+ //
+ // * Type requirements:
+ //
+ // argument_type maybe any unsigned type with at least n_zero + 1
+ // value bits. (Note: If larger types will be standardized -e.g.
+ // unsigned long long- then the argument_type typedef can be
+ // changed without affecting the rest of the code.)
+ //
+
+ template <argument_type x, result_type n = initial_n>
+ struct static_log2_impl {
+
+ BOOST_STATIC_CONSTANT(bool, c = (x >> n) > 0); // x >= 2**n ?
+ BOOST_STATIC_CONSTANT(
+ result_type,
+ value = c*n + (static_log2_impl< (x>>c*n), n/2 >::value)
+ );
+
+ };
+
+ template <>
+ struct static_log2_impl<1, 0> {
+ BOOST_STATIC_CONSTANT(result_type, value = 0);
+ };
+
+ }
+ } // detail
+
+
+
+ // --------------------------------------
+ // static_log2<x>
+ // ----------------------------------------
+
+ template <static_log2_argument_type x>
+ struct static_log2 {
+
+ BOOST_STATIC_CONSTANT(
+ static_log2_result_type,
+ value = detail::static_log2_impl::static_log2_impl<x>::value
+ );
+
+ };
+
+
+ template <>
+ struct static_log2<0> { };
+
+}
+
+
+
+#endif // include guard
--- /dev/null
+// Boost integer_fwd.hpp header file ---------------------------------------//
+
+// (C) Copyright Dave Abrahams and Daryle Walker 2001. 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)
+
+// See http://www.boost.org/libs/integer for documentation.
+
+#ifndef BOOST_INTEGER_FWD_HPP
+#define BOOST_INTEGER_FWD_HPP
+
+#include <climits> // for UCHAR_MAX, etc.
+#include <cstddef> // for std::size_t
+
+#include <boost/config.hpp> // for BOOST_NO_INTRINSIC_WCHAR_T
+#include <boost/limits.hpp> // for std::numeric_limits
+#include <boost/cstdint.hpp> // For intmax_t
+
+
+namespace boost
+{
+
+#ifdef BOOST_NO_INTEGRAL_INT64_T
+ typedef unsigned long static_log2_argument_type;
+ typedef int static_log2_result_type;
+ typedef long static_min_max_signed_type;
+ typedef unsigned long static_min_max_unsigned_type;
+#else
+ typedef boost::uintmax_t static_min_max_unsigned_type;
+ typedef boost::intmax_t static_min_max_signed_type;
+ typedef boost::uintmax_t static_log2_argument_type;
+ typedef int static_log2_result_type;
+#endif
+
+// From <boost/cstdint.hpp> ------------------------------------------------//
+
+// Only has typedefs or using statements, with #conditionals
+
+
+// From <boost/integer_traits.hpp> -----------------------------------------//
+
+template < class T >
+ class integer_traits;
+
+template < >
+ class integer_traits< bool >;
+
+template < >
+ class integer_traits< char >;
+
+template < >
+ class integer_traits< signed char >;
+
+template < >
+ class integer_traits< unsigned char >;
+
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+template < >
+ class integer_traits< wchar_t >;
+#endif
+
+template < >
+ class integer_traits< short >;
+
+template < >
+ class integer_traits< unsigned short >;
+
+template < >
+ class integer_traits< int >;
+
+template < >
+ class integer_traits< unsigned int >;
+
+template < >
+ class integer_traits< long >;
+
+template < >
+ class integer_traits< unsigned long >;
+
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) && defined(BOOST_HAS_LONG_LONG)
+template < >
+class integer_traits< ::boost::long_long_type>;
+
+template < >
+class integer_traits< ::boost::ulong_long_type >;
+#elif !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) && defined(BOOST_HAS_MS_INT64)
+template < >
+class integer_traits<__int64>;
+
+template < >
+class integer_traits<unsigned __int64>;
+#endif
+
+
+// From <boost/integer.hpp> ------------------------------------------------//
+
+template < typename LeastInt >
+ struct int_fast_t;
+
+template< int Bits >
+ struct int_t;
+
+template< int Bits >
+ struct uint_t;
+
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
+ template< boost::long_long_type MaxValue > // maximum value to require support
+#else
+ template< long MaxValue > // maximum value to require support
+#endif
+ struct int_max_value_t;
+
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
+ template< boost::long_long_type MinValue > // minimum value to require support
+#else
+ template< long MinValue > // minimum value to require support
+#endif
+ struct int_min_value_t;
+
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && defined(BOOST_HAS_LONG_LONG)
+ template< boost::ulong_long_type MaxValue > // maximum value to require support
+#else
+ template< unsigned long MaxValue > // maximum value to require support
+#endif
+ struct uint_value_t;
+
+
+// From <boost/integer/integer_mask.hpp> -----------------------------------//
+
+template < std::size_t Bit >
+ struct high_bit_mask_t;
+
+template < std::size_t Bits >
+ struct low_bits_mask_t;
+
+template < >
+ struct low_bits_mask_t< ::std::numeric_limits<unsigned char>::digits >;
+
+// From <boost/integer/static_log2.hpp> ------------------------------------//
+
+template <static_log2_argument_type Value >
+ struct static_log2;
+
+template <> struct static_log2<0u>;
+
+
+// From <boost/integer/static_min_max.hpp> ---------------------------------//
+
+template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
+ struct static_signed_min;
+
+template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
+ struct static_signed_max;
+
+template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
+ struct static_unsigned_min;
+
+template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
+ struct static_unsigned_max;
+
+} // namespace boost
+
+
+#endif // BOOST_INTEGER_FWD_HPP
* accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
- * $Id: integer_traits.hpp 58381 2009-12-14 18:14:48Z johnmaddock $
+ * $Id: integer_traits.hpp 85813 2013-09-21 20:17:00Z jewillco $
*
* Idea by Beman Dawes, Ed Brey, Steve Cleary, and Nathan Myers
*/
template<>
class integer_traits< ::boost::long_long_type>
: public std::numeric_limits< ::boost::long_long_type>,
- public detail::integer_traits_base< ::boost::long_long_type, (1LL << (sizeof(::boost::long_long_type) - 1)), ~(1LL << (sizeof(::boost::long_long_type) - 1))>
+ public detail::integer_traits_base< ::boost::long_long_type, (1LL << (sizeof(::boost::long_long_type) * CHAR_BIT - 1)), ~(1LL << (sizeof(::boost::long_long_type) * CHAR_BIT - 1))>
{ };
template<>
--- /dev/null
+// iterator.hpp workarounds for non-conforming standard libraries ---------//
+
+// (C) Copyright Beman Dawes 2000. 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)
+
+// See http://www.boost.org/libs/utility for documentation.
+
+// Revision History
+// 12 Jan 01 added <cstddef> for std::ptrdiff_t (Jens Maurer)
+// 28 Jun 00 Workarounds to deal with known MSVC bugs (David Abrahams)
+// 26 Jun 00 Initial version (Jeremy Siek)
+
+#ifndef BOOST_ITERATOR_HPP
+#define BOOST_ITERATOR_HPP
+
+#include <iterator>
+#include <cstddef> // std::ptrdiff_t
+#include <boost/config.hpp>
+
+namespace boost
+{
+# if defined(BOOST_NO_STD_ITERATOR) && !defined(BOOST_MSVC_STD_ITERATOR)
+ template <class Category, class T,
+ class Distance = std::ptrdiff_t,
+ class Pointer = T*, class Reference = T&>
+ struct iterator
+ {
+ typedef T value_type;
+ typedef Distance difference_type;
+ typedef Pointer pointer;
+ typedef Reference reference;
+ typedef Category iterator_category;
+ };
+# else
+
+ // declare iterator_base in namespace detail to work around MSVC bugs which
+ // prevent derivation from an identically-named class in a different namespace.
+ namespace detail {
+ template <class Category, class T, class Distance, class Pointer, class Reference>
+# if !defined(BOOST_MSVC_STD_ITERATOR)
+ struct iterator_base : std::iterator<Category, T, Distance, Pointer, Reference> {};
+# else
+ struct iterator_base : std::iterator<Category, T, Distance>
+ {
+ typedef Reference reference;
+ typedef Pointer pointer;
+ typedef Distance difference_type;
+ };
+# endif
+ }
+
+ template <class Category, class T, class Distance = std::ptrdiff_t,
+ class Pointer = T*, class Reference = T&>
+ struct iterator : boost::detail::iterator_base<Category, T, Distance, Pointer, Reference> {};
+# endif
+} // namespace boost
+
+#endif // BOOST_ITERATOR_HPP
--- /dev/null
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 2002.
+// 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)
+
+// no include guard multiple inclusion intended
+
+//
+// This is a temporary workaround until the bulk of this is
+// available in boost config.
+// 23/02/03 thw
+//
+
+#include <boost/config.hpp> // for prior
+#include <boost/detail/workaround.hpp>
+
+#ifdef BOOST_ITERATOR_CONFIG_DEF
+# error you have nested config_def #inclusion.
+#else
+# define BOOST_ITERATOR_CONFIG_DEF
+#endif
+
+// We enable this always now. Otherwise, the simple case in
+// libs/iterator/test/constant_iterator_arrow.cpp fails to compile
+// because the operator-> return is improperly deduced as a non-const
+// pointer.
+#if 1 || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x531))
+
+// Recall that in general, compilers without partial specialization
+// can't strip constness. Consider counting_iterator, which normally
+// passes a const Value to iterator_facade. As a result, any code
+// which makes a std::vector of the iterator's value_type will fail
+// when its allocator declares functions overloaded on reference and
+// const_reference (the same type).
+//
+// Furthermore, Borland 5.5.1 drops constness in enough ways that we
+// end up using a proxy for operator[] when we otherwise shouldn't.
+// Using reference constness gives it an extra hint that it can
+// return the value_type from operator[] directly, but is not
+// strictly necessary. Not sure how best to resolve this one.
+
+# define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1
+
+#endif
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x5A0)) \
+ || (BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 700) && defined(_MSC_VER)) \
+ || BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) \
+ || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
+
+# define BOOST_NO_LVALUE_RETURN_DETECTION
+
+# if 0 // test code
+ struct v {};
+
+ typedef char (&no)[3];
+
+ template <class T>
+ no foo(T const&, ...);
+
+ template <class T>
+ char foo(T&, int);
+
+
+ struct value_iterator
+ {
+ v operator*() const;
+ };
+
+ template <class T>
+ struct lvalue_deref_helper
+ {
+ static T& x;
+ enum { value = (sizeof(foo(*x,0)) == 1) };
+ };
+
+ int z2[(lvalue_deref_helper<v*>::value == 1) ? 1 : -1];
+ int z[(lvalue_deref_helper<value_iterator>::value) == 1 ? -1 : 1 ];
+# endif
+
+#endif
+
+#if BOOST_WORKAROUND(__MWERKS__, <=0x2407)
+# define BOOST_NO_IS_CONVERTIBLE // "is_convertible doesn't work for simple types"
+#endif
+
+#if BOOST_WORKAROUND(__GNUC__, == 2) \
+ || BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4) && !defined(__EDG_VERSION__) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
+# define BOOST_NO_IS_CONVERTIBLE_TEMPLATE // The following program fails to compile:
+
+# if 0 // test code
+ #include <boost/type_traits/is_convertible.hpp>
+ template <class T>
+ struct foo
+ {
+ foo(T);
+
+ template <class U>
+ foo(foo<U> const& other) : p(other.p) { }
+
+ T p;
+ };
+
+ bool x = boost::is_convertible<foo<int const*>, foo<int*> >::value;
+# endif
+
+#endif
+
+
+#if !defined(BOOST_MSVC) && (defined(BOOST_NO_SFINAE) || defined(BOOST_NO_IS_CONVERTIBLE) || defined(BOOST_NO_IS_CONVERTIBLE_TEMPLATE))
+# define BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
+#endif
+
+# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+# define BOOST_ARG_DEPENDENT_TYPENAME typename
+# else
+# define BOOST_ARG_DEPENDENT_TYPENAME
+# endif
+
+# if BOOST_WORKAROUND(__GNUC__, == 2) && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(95)) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+
+// GCC-2.95 eagerly instantiates templated constructors and conversion
+// operators in convertibility checks, causing premature errors.
+//
+// Borland's problems are harder to diagnose due to lack of an
+// instantiation stack backtrace. They may be due in part to the fact
+// that it drops cv-qualification willy-nilly in templates.
+# define BOOST_NO_ONE_WAY_ITERATOR_INTEROP
+# endif
+
+// no include guard; multiple inclusion intended
--- /dev/null
+// (C) Copyright Thomas Witt 2002.
+// 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)
+
+// no include guard multiple inclusion intended
+
+//
+// This is a temporary workaround until the bulk of this is
+// available in boost config.
+// 23/02/03 thw
+//
+
+#undef BOOST_NO_IS_CONVERTIBLE
+#undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE
+#undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
+#undef BOOST_ARG_DEPENDENT_TYPENAME
+#undef BOOST_NO_LVALUE_RETURN_DETECTION
+#undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
+
+#ifdef BOOST_ITERATOR_CONFIG_DEF
+# undef BOOST_ITERATOR_CONFIG_DEF
+#else
+# error missing or nested #include config_def
+#endif
--- /dev/null
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 2002.
+// 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)
+#ifndef BOOST_ENABLE_IF_23022003THW_HPP
+#define BOOST_ENABLE_IF_23022003THW_HPP
+
+#include <boost/detail/workaround.hpp>
+#include <boost/mpl/identity.hpp>
+
+#include <boost/iterator/detail/config_def.hpp>
+
+//
+// Boost iterators uses its own enable_if cause we need
+// special semantics for deficient compilers.
+// 23/02/03 thw
+//
+
+namespace boost
+{
+
+ namespace iterators
+ {
+ //
+ // Base machinery for all kinds of enable if
+ //
+ template<bool>
+ struct enabled
+ {
+ template<typename T>
+ struct base
+ {
+ typedef T type;
+ };
+ };
+
+ //
+ // For compilers that don't support "Substitution Failure Is Not An Error"
+ // enable_if falls back to always enabled. See comments
+ // on operator implementation for consequences.
+ //
+ template<>
+ struct enabled<false>
+ {
+ template<typename T>
+ struct base
+ {
+#ifdef BOOST_NO_SFINAE
+
+ typedef T type;
+
+ // This way to do it would give a nice error message containing
+ // invalid overload, but has the big disadvantage that
+ // there is no reference to user code in the error message.
+ //
+ // struct invalid_overload;
+ // typedef invalid_overload type;
+ //
+#endif
+ };
+ };
+
+
+ template <class Cond,
+ class Return>
+ struct enable_if
+# if !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_IS_CONVERTIBLE)
+ : enabled<(Cond::value)>::template base<Return>
+# else
+ : mpl::identity<Return>
+# endif
+ {
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ typedef Return type;
+# endif
+ };
+
+ } // namespace iterators
+
+} // namespace boost
+
+#include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_ENABLE_IF_23022003THW_HPP
--- /dev/null
+// Copyright David Abrahams 2003. Use, modification and distribution is
+// subject to 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)
+#ifndef FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
+# define FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
+
+# include <boost/iterator/iterator_categories.hpp>
+
+# include <boost/mpl/or.hpp> // used in iterator_tag inheritance logic
+# include <boost/mpl/and.hpp>
+# include <boost/mpl/if.hpp>
+# include <boost/mpl/eval_if.hpp>
+# include <boost/mpl/identity.hpp>
+# include <boost/mpl/assert.hpp>
+
+# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/is_const.hpp>
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_convertible.hpp>
+
+# include <boost/type_traits/is_same.hpp>
+
+# include <boost/iterator/detail/config_def.hpp> // try to keep this last
+
+# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
+# include <boost/detail/indirect_traits.hpp>
+# endif
+
+//
+// iterator_category deduction for iterator_facade
+//
+
+// forward declaration
+namespace boost { struct use_default; }
+
+namespace boost { namespace detail {
+
+struct input_output_iterator_tag
+ : std::input_iterator_tag
+{
+ // Using inheritance for only input_iterator_tag helps to avoid
+ // ambiguities when a stdlib implementation dispatches on a
+ // function which is overloaded on both input_iterator_tag and
+ // output_iterator_tag, as STLPort does, in its __valid_range
+ // function. I claim it's better to avoid the ambiguity in these
+ // cases.
+ operator std::output_iterator_tag() const
+ {
+ return std::output_iterator_tag();
+ }
+};
+
+//
+// True iff the user has explicitly disabled writability of this
+// iterator. Pass the iterator_facade's Value parameter and its
+// nested ::reference type.
+//
+template <class ValueParam, class Reference>
+struct iterator_writability_disabled
+# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY // Adding Thomas' logic?
+ : mpl::or_<
+ is_const<Reference>
+ , boost::detail::indirect_traits::is_reference_to_const<Reference>
+ , is_const<ValueParam>
+ >
+# else
+ : is_const<ValueParam>
+# endif
+{};
+
+
+//
+// Convert an iterator_facade's traversal category, Value parameter,
+// and ::reference type to an appropriate old-style category.
+//
+// If writability has been disabled per the above metafunction, the
+// result will not be convertible to output_iterator_tag.
+//
+// Otherwise, if Traversal == single_pass_traversal_tag, the following
+// conditions will result in a tag that is convertible both to
+// input_iterator_tag and output_iterator_tag:
+//
+// 1. Reference is a reference to non-const
+// 2. Reference is not a reference and is convertible to Value
+//
+template <class Traversal, class ValueParam, class Reference>
+struct iterator_facade_default_category
+ : mpl::eval_if<
+ mpl::and_<
+ is_reference<Reference>
+ , is_convertible<Traversal,forward_traversal_tag>
+ >
+ , mpl::eval_if<
+ is_convertible<Traversal,random_access_traversal_tag>
+ , mpl::identity<std::random_access_iterator_tag>
+ , mpl::if_<
+ is_convertible<Traversal,bidirectional_traversal_tag>
+ , std::bidirectional_iterator_tag
+ , std::forward_iterator_tag
+ >
+ >
+ , typename mpl::eval_if<
+ mpl::and_<
+ is_convertible<Traversal, single_pass_traversal_tag>
+
+ // check for readability
+ , is_convertible<Reference, ValueParam>
+ >
+ , mpl::identity<std::input_iterator_tag>
+ , mpl::identity<Traversal>
+ >
+ >
+{
+};
+
+// True iff T is convertible to an old-style iterator category.
+template <class T>
+struct is_iterator_category
+ : mpl::or_<
+ is_convertible<T,std::input_iterator_tag>
+ , is_convertible<T,std::output_iterator_tag>
+ >
+{
+};
+
+template <class T>
+struct is_iterator_traversal
+ : is_convertible<T,incrementable_traversal_tag>
+{};
+
+//
+// A composite iterator_category tag convertible to Category (a pure
+// old-style category) and Traversal (a pure traversal tag).
+// Traversal must be a strict increase of the traversal power given by
+// Category.
+//
+template <class Category, class Traversal>
+struct iterator_category_with_traversal
+ : Category, Traversal
+{
+# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ // Make sure this isn't used to build any categories where
+ // convertibility to Traversal is redundant. Should just use the
+ // Category element in that case.
+ BOOST_MPL_ASSERT_NOT((
+ is_convertible<
+ typename iterator_category_to_traversal<Category>::type
+ , Traversal
+ >));
+
+ BOOST_MPL_ASSERT((is_iterator_category<Category>));
+ BOOST_MPL_ASSERT_NOT((is_iterator_category<Traversal>));
+ BOOST_MPL_ASSERT_NOT((is_iterator_traversal<Category>));
+# if !BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
+ BOOST_MPL_ASSERT((is_iterator_traversal<Traversal>));
+# endif
+# endif
+};
+
+// Computes an iterator_category tag whose traversal is Traversal and
+// which is appropriate for an iterator
+template <class Traversal, class ValueParam, class Reference>
+struct facade_iterator_category_impl
+{
+# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ BOOST_MPL_ASSERT_NOT((is_iterator_category<Traversal>));
+# endif
+
+ typedef typename iterator_facade_default_category<
+ Traversal,ValueParam,Reference
+ >::type category;
+
+ typedef typename mpl::if_<
+ is_same<
+ Traversal
+ , typename iterator_category_to_traversal<category>::type
+ >
+ , category
+ , iterator_category_with_traversal<category,Traversal>
+ >::type type;
+};
+
+//
+// Compute an iterator_category for iterator_facade
+//
+template <class CategoryOrTraversal, class ValueParam, class Reference>
+struct facade_iterator_category
+ : mpl::eval_if<
+ is_iterator_category<CategoryOrTraversal>
+ , mpl::identity<CategoryOrTraversal> // old-style categories are fine as-is
+ , facade_iterator_category_impl<CategoryOrTraversal,ValueParam,Reference>
+ >
+{
+};
+
+}} // namespace boost::detail
+
+# include <boost/iterator/detail/config_undef.hpp>
+
+#endif // FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
--- /dev/null
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 2002.
+// 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)
+#ifndef BOOST_INTEROPERABLE_23022003THW_HPP
+# define BOOST_INTEROPERABLE_23022003THW_HPP
+
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/or.hpp>
+
+# include <boost/type_traits/is_convertible.hpp>
+
+# include <boost/iterator/detail/config_def.hpp> // must appear last
+
+namespace boost
+{
+
+ //
+ // Meta function that determines whether two
+ // iterator types are considered interoperable.
+ //
+ // Two iterator types A,B are considered interoperable if either
+ // A is convertible to B or vice versa.
+ // This interoperability definition is in sync with the
+ // standards requirements on constant/mutable container
+ // iterators (23.1 [lib.container.requirements]).
+ //
+ // For compilers that don't support is_convertible
+ // is_interoperable gives false positives. See comments
+ // on operator implementation for consequences.
+ //
+ template <typename A, typename B>
+ struct is_interoperable
+# ifdef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
+ : mpl::true_
+# else
+ : mpl::or_<
+ is_convertible< A, B >
+ , is_convertible< B, A > >
+# endif
+ {
+ };
+
+} // namespace boost
+
+# include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_INTEROPERABLE_23022003THW_HPP
--- /dev/null
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 2002.
+// 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)
+#ifndef BOOST_ITERATOR_ADAPTOR_23022003THW_HPP
+#define BOOST_ITERATOR_ADAPTOR_23022003THW_HPP
+
+#include <boost/static_assert.hpp>
+#include <boost/iterator.hpp>
+#include <boost/detail/iterator.hpp>
+
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_facade.hpp>
+#include <boost/iterator/detail/enable_if.hpp>
+
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/or.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+
+#ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
+# include <boost/type_traits/remove_reference.hpp>
+#endif
+
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/iterator/detail/config_def.hpp>
+
+#include <boost/iterator/iterator_traits.hpp>
+
+namespace boost
+{
+ // Used as a default template argument internally, merely to
+ // indicate "use the default", this can also be passed by users
+ // explicitly in order to specify that the default should be used.
+ struct use_default;
+
+# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ // the incompleteness of use_default causes massive problems for
+ // is_convertible (naturally). This workaround is fortunately not
+ // needed for vc6/vc7.
+ template<class To>
+ struct is_convertible<use_default,To>
+ : mpl::false_ {};
+# endif
+
+ namespace detail
+ {
+
+ //
+ // Result type used in enable_if_convertible meta function.
+ // This can be an incomplete type, as only pointers to
+ // enable_if_convertible< ... >::type are used.
+ // We could have used void for this, but conversion to
+ // void* is just to easy.
+ //
+ struct enable_type;
+ }
+
+
+ //
+ // enable_if for use in adapted iterators constructors.
+ //
+ // In order to provide interoperability between adapted constant and
+ // mutable iterators, adapted iterators will usually provide templated
+ // conversion constructors of the following form
+ //
+ // template <class BaseIterator>
+ // class adapted_iterator :
+ // public iterator_adaptor< adapted_iterator<Iterator>, Iterator >
+ // {
+ // public:
+ //
+ // ...
+ //
+ // template <class OtherIterator>
+ // adapted_iterator(
+ // OtherIterator const& it
+ // , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0);
+ //
+ // ...
+ // };
+ //
+ // enable_if_convertible is used to remove those overloads from the overload
+ // set that cannot be instantiated. For all practical purposes only overloads
+ // for constant/mutable interaction will remain. This has the advantage that
+ // meta functions like boost::is_convertible do not return false positives,
+ // as they can only look at the signature of the conversion constructor
+ // and not at the actual instantiation.
+ //
+ // enable_if_interoperable can be safely used in user code. It falls back to
+ // always enabled for compilers that don't support enable_if or is_convertible.
+ // There is no need for compiler specific workarounds in user code.
+ //
+ // The operators implementation relies on boost::is_convertible not returning
+ // false positives for user/library defined iterator types. See comments
+ // on operator implementation for consequences.
+ //
+# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+
+ template<typename From, typename To>
+ struct enable_if_convertible
+ {
+ typedef typename mpl::if_<
+ mpl::or_<
+ is_same<From,To>
+ , is_convertible<From, To>
+ >
+ , boost::detail::enable_type
+ , int&
+ >::type type;
+ };
+
+# elif defined(BOOST_NO_IS_CONVERTIBLE) || defined(BOOST_NO_SFINAE)
+
+ template <class From, class To>
+ struct enable_if_convertible
+ {
+ typedef boost::detail::enable_type type;
+ };
+
+# elif BOOST_WORKAROUND(_MSC_FULL_VER, BOOST_TESTED_AT(13102292)) && BOOST_MSVC > 1300
+
+ // For some reason vc7.1 needs us to "cut off" instantiation
+ // of is_convertible in a few cases.
+ template<typename From, typename To>
+ struct enable_if_convertible
+ : iterators::enable_if<
+ mpl::or_<
+ is_same<From,To>
+ , is_convertible<From, To>
+ >
+ , boost::detail::enable_type
+ >
+ {};
+
+# else
+
+ template<typename From, typename To>
+ struct enable_if_convertible
+ : iterators::enable_if<
+ is_convertible<From, To>
+ , boost::detail::enable_type
+ >
+ {};
+
+# endif
+
+ //
+ // Default template argument handling for iterator_adaptor
+ //
+ namespace detail
+ {
+ // If T is use_default, return the result of invoking
+ // DefaultNullaryFn, otherwise return T.
+ template <class T, class DefaultNullaryFn>
+ struct ia_dflt_help
+ : mpl::eval_if<
+ is_same<T, use_default>
+ , DefaultNullaryFn
+ , mpl::identity<T>
+ >
+ {
+ };
+
+ // A metafunction which computes an iterator_adaptor's base class,
+ // a specialization of iterator_facade.
+ template <
+ class Derived
+ , class Base
+ , class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ >
+ struct iterator_adaptor_base
+ {
+ typedef iterator_facade<
+ Derived
+
+# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
+ , typename boost::detail::ia_dflt_help<
+ Value
+ , mpl::eval_if<
+ is_same<Reference,use_default>
+ , iterator_value<Base>
+ , remove_reference<Reference>
+ >
+ >::type
+# else
+ , typename boost::detail::ia_dflt_help<
+ Value, iterator_value<Base>
+ >::type
+# endif
+
+ , typename boost::detail::ia_dflt_help<
+ Traversal
+ , iterator_traversal<Base>
+ >::type
+
+ , typename boost::detail::ia_dflt_help<
+ Reference
+ , mpl::eval_if<
+ is_same<Value,use_default>
+ , iterator_reference<Base>
+ , add_reference<Value>
+ >
+ >::type
+
+ , typename boost::detail::ia_dflt_help<
+ Difference, iterator_difference<Base>
+ >::type
+ >
+ type;
+ };
+
+ // workaround for aC++ CR JAGaf33512
+ template <class Tr1, class Tr2>
+ inline void iterator_adaptor_assert_traversal ()
+ {
+ BOOST_STATIC_ASSERT((is_convertible<Tr1, Tr2>::value));
+ }
+ }
+
+ //
+ // Iterator Adaptor
+ //
+ // The parameter ordering changed slightly with respect to former
+ // versions of iterator_adaptor The idea is that when the user needs
+ // to fiddle with the reference type it is highly likely that the
+ // iterator category has to be adjusted as well. Any of the
+ // following four template arguments may be ommitted or explicitly
+ // replaced by use_default.
+ //
+ // Value - if supplied, the value_type of the resulting iterator, unless
+ // const. If const, a conforming compiler strips constness for the
+ // value_type. If not supplied, iterator_traits<Base>::value_type is used
+ //
+ // Category - the traversal category of the resulting iterator. If not
+ // supplied, iterator_traversal<Base>::type is used.
+ //
+ // Reference - the reference type of the resulting iterator, and in
+ // particular, the result type of operator*(). If not supplied but
+ // Value is supplied, Value& is used. Otherwise
+ // iterator_traits<Base>::reference is used.
+ //
+ // Difference - the difference_type of the resulting iterator. If not
+ // supplied, iterator_traits<Base>::difference_type is used.
+ //
+ template <
+ class Derived
+ , class Base
+ , class Value = use_default
+ , class Traversal = use_default
+ , class Reference = use_default
+ , class Difference = use_default
+ >
+ class iterator_adaptor
+ : public boost::detail::iterator_adaptor_base<
+ Derived, Base, Value, Traversal, Reference, Difference
+ >::type
+ {
+ friend class iterator_core_access;
+
+ protected:
+ typedef typename boost::detail::iterator_adaptor_base<
+ Derived, Base, Value, Traversal, Reference, Difference
+ >::type super_t;
+ public:
+ iterator_adaptor() {}
+
+ explicit iterator_adaptor(Base const &iter)
+ : m_iterator(iter)
+ {
+ }
+
+ typedef Base base_type;
+
+ Base const& base() const
+ { return m_iterator; }
+
+ protected:
+ // for convenience in derived classes
+ typedef iterator_adaptor<Derived,Base,Value,Traversal,Reference,Difference> iterator_adaptor_;
+
+ //
+ // lvalue access to the Base object for Derived
+ //
+ Base const& base_reference() const
+ { return m_iterator; }
+
+ Base& base_reference()
+ { return m_iterator; }
+
+ private:
+ //
+ // Core iterator interface for iterator_facade. This is private
+ // to prevent temptation for Derived classes to use it, which
+ // will often result in an error. Derived classes should use
+ // base_reference(), above, to get direct access to m_iterator.
+ //
+ typename super_t::reference dereference() const
+ { return *m_iterator; }
+
+ template <
+ class OtherDerived, class OtherIterator, class V, class C, class R, class D
+ >
+ bool equal(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& x) const
+ {
+ // Maybe readd with same_distance
+ // BOOST_STATIC_ASSERT(
+ // (detail::same_category_and_difference<Derived,OtherDerived>::value)
+ // );
+ return m_iterator == x.base();
+ }
+
+ typedef typename iterator_category_to_traversal<
+ typename super_t::iterator_category
+ >::type my_traversal;
+
+# define BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(cat) \
+ boost::detail::iterator_adaptor_assert_traversal<my_traversal, cat>();
+
+ void advance(typename super_t::difference_type n)
+ {
+ BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(random_access_traversal_tag)
+ m_iterator += n;
+ }
+
+ void increment() { ++m_iterator; }
+
+ void decrement()
+ {
+ BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(bidirectional_traversal_tag)
+ --m_iterator;
+ }
+
+ template <
+ class OtherDerived, class OtherIterator, class V, class C, class R, class D
+ >
+ typename super_t::difference_type distance_to(
+ iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& y) const
+ {
+ BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(random_access_traversal_tag)
+ // Maybe readd with same_distance
+ // BOOST_STATIC_ASSERT(
+ // (detail::same_category_and_difference<Derived,OtherDerived>::value)
+ // );
+ return y.base() - m_iterator;
+ }
+
+# undef BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL
+
+ private: // data members
+ Base m_iterator;
+ };
+
+} // namespace boost
+
+#include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_ITERATOR_ADAPTOR_23022003THW_HPP
--- /dev/null
+// (C) Copyright Jeremy Siek 2002.
+// 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)
+
+#ifndef BOOST_ITERATOR_CATEGORIES_HPP
+# define BOOST_ITERATOR_CATEGORIES_HPP
+
+# include <boost/config.hpp>
+# include <boost/detail/iterator.hpp>
+# include <boost/iterator/detail/config_def.hpp>
+
+# include <boost/detail/workaround.hpp>
+
+# include <boost/mpl/eval_if.hpp>
+# include <boost/mpl/identity.hpp>
+# include <boost/mpl/placeholders.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+
+# include <boost/type_traits/is_convertible.hpp>
+
+# include <boost/static_assert.hpp>
+
+namespace boost {
+
+//
+// Traversal Categories
+//
+
+struct no_traversal_tag {};
+
+struct incrementable_traversal_tag
+ : no_traversal_tag
+{
+// incrementable_traversal_tag() {}
+// incrementable_traversal_tag(std::output_iterator_tag const&) {};
+};
+
+struct single_pass_traversal_tag
+ : incrementable_traversal_tag
+{
+// single_pass_traversal_tag() {}
+// single_pass_traversal_tag(std::input_iterator_tag const&) {};
+};
+
+struct forward_traversal_tag
+ : single_pass_traversal_tag
+{
+// forward_traversal_tag() {}
+// forward_traversal_tag(std::forward_iterator_tag const&) {};
+};
+
+struct bidirectional_traversal_tag
+ : forward_traversal_tag
+{
+// bidirectional_traversal_tag() {};
+// bidirectional_traversal_tag(std::bidirectional_iterator_tag const&) {};
+};
+
+struct random_access_traversal_tag
+ : bidirectional_traversal_tag
+{
+// random_access_traversal_tag() {};
+// random_access_traversal_tag(std::random_access_iterator_tag const&) {};
+};
+
+namespace detail
+{
+ //
+ // Convert a "strictly old-style" iterator category to a traversal
+ // tag. This is broken out into a separate metafunction to reduce
+ // the cost of instantiating iterator_category_to_traversal, below,
+ // for new-style types.
+ //
+ template <class Cat>
+ struct old_category_to_traversal
+ : mpl::eval_if<
+ is_convertible<Cat,std::random_access_iterator_tag>
+ , mpl::identity<random_access_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Cat,std::bidirectional_iterator_tag>
+ , mpl::identity<bidirectional_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Cat,std::forward_iterator_tag>
+ , mpl::identity<forward_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Cat,std::input_iterator_tag>
+ , mpl::identity<single_pass_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Cat,std::output_iterator_tag>
+ , mpl::identity<incrementable_traversal_tag>
+ , void
+ >
+ >
+ >
+ >
+ >
+ {};
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ template <>
+ struct old_category_to_traversal<int>
+ {
+ typedef int type;
+ };
+# endif
+
+ template <class Traversal>
+ struct pure_traversal_tag
+ : mpl::eval_if<
+ is_convertible<Traversal,random_access_traversal_tag>
+ , mpl::identity<random_access_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Traversal,bidirectional_traversal_tag>
+ , mpl::identity<bidirectional_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Traversal,forward_traversal_tag>
+ , mpl::identity<forward_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Traversal,single_pass_traversal_tag>
+ , mpl::identity<single_pass_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Traversal,incrementable_traversal_tag>
+ , mpl::identity<incrementable_traversal_tag>
+ , void
+ >
+ >
+ >
+ >
+ >
+ {
+ };
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ template <>
+ struct pure_traversal_tag<int>
+ {
+ typedef int type;
+ };
+# endif
+
+} // namespace detail
+
+
+//
+// Convert an iterator category into a traversal tag
+//
+template <class Cat>
+struct iterator_category_to_traversal
+ : mpl::eval_if< // if already convertible to a traversal tag, we're done.
+ is_convertible<Cat,incrementable_traversal_tag>
+ , mpl::identity<Cat>
+ , boost::detail::old_category_to_traversal<Cat>
+ >
+{};
+
+// Trait to get an iterator's traversal category
+template <class Iterator = mpl::_1>
+struct iterator_traversal
+ : iterator_category_to_traversal<
+ typename boost::detail::iterator_traits<Iterator>::iterator_category
+ >
+{};
+
+# ifdef BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+// Hack because BOOST_MPL_AUX_LAMBDA_SUPPORT doesn't seem to work
+// out well. Instantiating the nested apply template also
+// requires instantiating iterator_traits on the
+// placeholder. Instead we just specialize it as a metafunction
+// class.
+template <>
+struct iterator_traversal<mpl::_1>
+{
+ template <class T>
+ struct apply : iterator_traversal<T>
+ {};
+};
+template <>
+struct iterator_traversal<mpl::_>
+ : iterator_traversal<mpl::_1>
+{};
+# endif
+
+} // namespace boost
+
+#include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_ITERATOR_CATEGORIES_HPP
--- /dev/null
+// (C) Copyright Jeremy Siek 2002.
+// 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)
+
+#ifndef BOOST_ITERATOR_CONCEPTS_HPP
+#define BOOST_ITERATOR_CONCEPTS_HPP
+
+#include <boost/concept_check.hpp>
+#include <boost/iterator/iterator_categories.hpp>
+
+// Use boost::detail::iterator_traits to work around some MSVC/Dinkumware problems.
+#include <boost/detail/iterator.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_integral.hpp>
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/or.hpp>
+
+#include <boost/static_assert.hpp>
+
+// Use boost/limits to work around missing limits headers on some compilers
+#include <boost/limits.hpp>
+#include <boost/config.hpp>
+
+#include <algorithm>
+
+#include <boost/concept/detail/concept_def.hpp>
+
+namespace boost_concepts
+{
+ // Used a different namespace here (instead of "boost") so that the
+ // concept descriptions do not take for granted the names in
+ // namespace boost.
+
+ //===========================================================================
+ // Iterator Access Concepts
+
+ BOOST_concept(ReadableIterator,(Iterator))
+ : boost::Assignable<Iterator>
+ , boost::CopyConstructible<Iterator>
+
+ {
+ typedef BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::value_type value_type;
+ typedef BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference reference;
+
+ BOOST_CONCEPT_USAGE(ReadableIterator)
+ {
+
+ value_type v = *i;
+ boost::ignore_unused_variable_warning(v);
+ }
+ private:
+ Iterator i;
+ };
+
+ template <
+ typename Iterator
+ , typename ValueType = BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::value_type
+ >
+ struct WritableIterator
+ : boost::CopyConstructible<Iterator>
+ {
+ BOOST_CONCEPT_USAGE(WritableIterator)
+ {
+ *i = v;
+ }
+ private:
+ ValueType v;
+ Iterator i;
+ };
+
+ template <
+ typename Iterator
+ , typename ValueType = BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::value_type
+ >
+ struct WritableIteratorConcept : WritableIterator<Iterator,ValueType> {};
+
+ BOOST_concept(SwappableIterator,(Iterator))
+ {
+ BOOST_CONCEPT_USAGE(SwappableIterator)
+ {
+ std::iter_swap(i1, i2);
+ }
+ private:
+ Iterator i1;
+ Iterator i2;
+ };
+
+ BOOST_concept(LvalueIterator,(Iterator))
+ {
+ typedef typename boost::detail::iterator_traits<Iterator>::value_type value_type;
+
+ BOOST_CONCEPT_USAGE(LvalueIterator)
+ {
+ value_type& r = const_cast<value_type&>(*i);
+ boost::ignore_unused_variable_warning(r);
+ }
+ private:
+ Iterator i;
+ };
+
+
+ //===========================================================================
+ // Iterator Traversal Concepts
+
+ BOOST_concept(IncrementableIterator,(Iterator))
+ : boost::Assignable<Iterator>
+ , boost::CopyConstructible<Iterator>
+ {
+ typedef typename boost::iterator_traversal<Iterator>::type traversal_category;
+
+ BOOST_CONCEPT_ASSERT((
+ boost::Convertible<
+ traversal_category
+ , boost::incrementable_traversal_tag
+ >));
+
+ BOOST_CONCEPT_USAGE(IncrementableIterator)
+ {
+ ++i;
+ (void)i++;
+ }
+ private:
+ Iterator i;
+ };
+
+ BOOST_concept(SinglePassIterator,(Iterator))
+ : IncrementableIterator<Iterator>
+ , boost::EqualityComparable<Iterator>
+
+ {
+ BOOST_CONCEPT_ASSERT((
+ boost::Convertible<
+ BOOST_DEDUCED_TYPENAME SinglePassIterator::traversal_category
+ , boost::single_pass_traversal_tag
+ > ));
+ };
+
+ BOOST_concept(ForwardTraversal,(Iterator))
+ : SinglePassIterator<Iterator>
+ , boost::DefaultConstructible<Iterator>
+ {
+ typedef typename boost::detail::iterator_traits<Iterator>::difference_type difference_type;
+
+ BOOST_MPL_ASSERT((boost::is_integral<difference_type>));
+ BOOST_MPL_ASSERT_RELATION(std::numeric_limits<difference_type>::is_signed, ==, true);
+
+ BOOST_CONCEPT_ASSERT((
+ boost::Convertible<
+ BOOST_DEDUCED_TYPENAME ForwardTraversal::traversal_category
+ , boost::forward_traversal_tag
+ > ));
+ };
+
+ BOOST_concept(BidirectionalTraversal,(Iterator))
+ : ForwardTraversal<Iterator>
+ {
+ BOOST_CONCEPT_ASSERT((
+ boost::Convertible<
+ BOOST_DEDUCED_TYPENAME BidirectionalTraversal::traversal_category
+ , boost::bidirectional_traversal_tag
+ > ));
+
+ BOOST_CONCEPT_USAGE(BidirectionalTraversal)
+ {
+ --i;
+ (void)i--;
+ }
+ private:
+ Iterator i;
+ };
+
+ BOOST_concept(RandomAccessTraversal,(Iterator))
+ : BidirectionalTraversal<Iterator>
+ {
+ BOOST_CONCEPT_ASSERT((
+ boost::Convertible<
+ BOOST_DEDUCED_TYPENAME RandomAccessTraversal::traversal_category
+ , boost::random_access_traversal_tag
+ > ));
+
+ BOOST_CONCEPT_USAGE(RandomAccessTraversal)
+ {
+ i += n;
+ i = i + n;
+ i = n + i;
+ i -= n;
+ i = i - n;
+ n = i - j;
+ }
+
+ private:
+ typename BidirectionalTraversal<Iterator>::difference_type n;
+ Iterator i, j;
+ };
+
+ //===========================================================================
+ // Iterator Interoperability
+
+ namespace detail
+ {
+ template <typename Iterator1, typename Iterator2>
+ void interop_single_pass_constraints(Iterator1 const& i1, Iterator2 const& i2)
+ {
+ bool b;
+ b = i1 == i2;
+ b = i1 != i2;
+
+ b = i2 == i1;
+ b = i2 != i1;
+ boost::ignore_unused_variable_warning(b);
+ }
+
+ template <typename Iterator1, typename Iterator2>
+ void interop_rand_access_constraints(
+ Iterator1 const& i1, Iterator2 const& i2,
+ boost::random_access_traversal_tag, boost::random_access_traversal_tag)
+ {
+ bool b;
+ typename boost::detail::iterator_traits<Iterator2>::difference_type n;
+ b = i1 < i2;
+ b = i1 <= i2;
+ b = i1 > i2;
+ b = i1 >= i2;
+ n = i1 - i2;
+
+ b = i2 < i1;
+ b = i2 <= i1;
+ b = i2 > i1;
+ b = i2 >= i1;
+ n = i2 - i1;
+ boost::ignore_unused_variable_warning(b);
+ boost::ignore_unused_variable_warning(n);
+ }
+
+ template <typename Iterator1, typename Iterator2>
+ void interop_rand_access_constraints(
+ Iterator1 const&, Iterator2 const&,
+ boost::single_pass_traversal_tag, boost::single_pass_traversal_tag)
+ { }
+
+ } // namespace detail
+
+ BOOST_concept(InteroperableIterator,(Iterator)(ConstIterator))
+ {
+ private:
+ typedef typename boost::detail::pure_traversal_tag<
+ typename boost::iterator_traversal<
+ Iterator
+ >::type
+ >::type traversal_category;
+
+ typedef typename boost::detail::pure_traversal_tag<
+ typename boost::iterator_traversal<
+ ConstIterator
+ >::type
+ >::type const_traversal_category;
+
+ public:
+ BOOST_CONCEPT_ASSERT((SinglePassIterator<Iterator>));
+ BOOST_CONCEPT_ASSERT((SinglePassIterator<ConstIterator>));
+
+ BOOST_CONCEPT_USAGE(InteroperableIterator)
+ {
+ detail::interop_single_pass_constraints(i, ci);
+ detail::interop_rand_access_constraints(i, ci, traversal_category(), const_traversal_category());
+
+ ci = i;
+ }
+
+ private:
+ Iterator i;
+ ConstIterator ci;
+ };
+
+} // namespace boost_concepts
+
+#include <boost/concept/detail/concept_undef.hpp>
+
+#endif // BOOST_ITERATOR_CONCEPTS_HPP
--- /dev/null
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 2002.
+// 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)
+#ifndef BOOST_ITERATOR_FACADE_23022003THW_HPP
+#define BOOST_ITERATOR_FACADE_23022003THW_HPP
+
+#include <boost/iterator.hpp>
+#include <boost/iterator/interoperable.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+
+#include <boost/iterator/detail/facade_iterator_category.hpp>
+#include <boost/iterator/detail/enable_if.hpp>
+
+#include <boost/static_assert.hpp>
+#include <boost/utility/addressof.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_pointer.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/is_pod.hpp>
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/always.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/identity.hpp>
+
+#include <boost/iterator/detail/config_def.hpp> // this goes last
+
+namespace boost
+{
+ // This forward declaration is required for the friend declaration
+ // in iterator_core_access
+ template <class I, class V, class TC, class R, class D> class iterator_facade;
+
+ namespace detail
+ {
+ // A binary metafunction class that always returns bool. VC6
+ // ICEs on mpl::always<bool>, probably because of the default
+ // parameters.
+ struct always_bool2
+ {
+ template <class T, class U>
+ struct apply
+ {
+ typedef bool type;
+ };
+ };
+
+ //
+ // enable if for use in operator implementation.
+ //
+ template <
+ class Facade1
+ , class Facade2
+ , class Return
+ >
+ struct enable_if_interoperable
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ {
+ typedef typename mpl::if_<
+ mpl::or_<
+ is_convertible<Facade1, Facade2>
+ , is_convertible<Facade2, Facade1>
+ >
+ , Return
+ , int[3]
+ >::type type;
+ };
+#else
+ : ::boost::iterators::enable_if<
+ mpl::or_<
+ is_convertible<Facade1, Facade2>
+ , is_convertible<Facade2, Facade1>
+ >
+ , Return
+ >
+ {};
+#endif
+
+ //
+ // Generates associated types for an iterator_facade with the
+ // given parameters.
+ //
+ template <
+ class ValueParam
+ , class CategoryOrTraversal
+ , class Reference
+ , class Difference
+ >
+ struct iterator_facade_types
+ {
+ typedef typename facade_iterator_category<
+ CategoryOrTraversal, ValueParam, Reference
+ >::type iterator_category;
+
+ typedef typename remove_const<ValueParam>::type value_type;
+
+ // Not the real associated pointer type
+ typedef typename mpl::eval_if<
+ boost::detail::iterator_writability_disabled<ValueParam,Reference>
+ , add_pointer<const value_type>
+ , add_pointer<value_type>
+ >::type pointer;
+
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && (BOOST_WORKAROUND(_STLPORT_VERSION, BOOST_TESTED_AT(0x452)) \
+ || BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, BOOST_TESTED_AT(310))) \
+ || BOOST_WORKAROUND(BOOST_RWSTD_VER, BOOST_TESTED_AT(0x20101)) \
+ || BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, <= 310)
+
+ // To interoperate with some broken library/compiler
+ // combinations, user-defined iterators must be derived from
+ // std::iterator. It is possible to implement a standard
+ // library for broken compilers without this limitation.
+# define BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE 1
+
+ typedef
+ iterator<iterator_category, value_type, Difference, pointer, Reference>
+ base;
+# endif
+ };
+
+ // iterators whose dereference operators reference the same value
+ // for all iterators into the same sequence (like many input
+ // iterators) need help with their postfix ++: the referenced
+ // value must be read and stored away before the increment occurs
+ // so that *a++ yields the originally referenced element and not
+ // the next one.
+ template <class Iterator>
+ class postfix_increment_proxy
+ {
+ typedef typename iterator_value<Iterator>::type value_type;
+ public:
+ explicit postfix_increment_proxy(Iterator const& x)
+ : stored_value(*x)
+ {}
+
+ // Returning a mutable reference allows nonsense like
+ // (*r++).mutate(), but it imposes fewer assumptions about the
+ // behavior of the value_type. In particular, recall that
+ // (*r).mutate() is legal if operator* returns by value.
+ value_type&
+ operator*() const
+ {
+ return this->stored_value;
+ }
+ private:
+ mutable value_type stored_value;
+ };
+
+ //
+ // In general, we can't determine that such an iterator isn't
+ // writable -- we also need to store a copy of the old iterator so
+ // that it can be written into.
+ template <class Iterator>
+ class writable_postfix_increment_proxy
+ {
+ typedef typename iterator_value<Iterator>::type value_type;
+ public:
+ explicit writable_postfix_increment_proxy(Iterator const& x)
+ : stored_value(*x)
+ , stored_iterator(x)
+ {}
+
+ // Dereferencing must return a proxy so that both *r++ = o and
+ // value_type(*r++) can work. In this case, *r is the same as
+ // *r++, and the conversion operator below is used to ensure
+ // readability.
+ writable_postfix_increment_proxy const&
+ operator*() const
+ {
+ return *this;
+ }
+
+ // Provides readability of *r++
+ operator value_type&() const
+ {
+ return stored_value;
+ }
+
+ // Provides writability of *r++
+ template <class T>
+ T const& operator=(T const& x) const
+ {
+ *this->stored_iterator = x;
+ return x;
+ }
+
+ // This overload just in case only non-const objects are writable
+ template <class T>
+ T& operator=(T& x) const
+ {
+ *this->stored_iterator = x;
+ return x;
+ }
+
+ // Provides X(r++)
+ operator Iterator const&() const
+ {
+ return stored_iterator;
+ }
+
+ private:
+ mutable value_type stored_value;
+ Iterator stored_iterator;
+ };
+
+# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <class Reference, class Value>
+ struct is_non_proxy_reference_impl
+ {
+ static Reference r;
+
+ template <class R>
+ static typename mpl::if_<
+ is_convertible<
+ R const volatile*
+ , Value const volatile*
+ >
+ , char[1]
+ , char[2]
+ >::type& helper(R const&);
+
+ BOOST_STATIC_CONSTANT(bool, value = sizeof(helper(r)) == 1);
+ };
+
+ template <class Reference, class Value>
+ struct is_non_proxy_reference
+ : mpl::bool_<
+ is_non_proxy_reference_impl<Reference, Value>::value
+ >
+ {};
+# else
+ template <class Reference, class Value>
+ struct is_non_proxy_reference
+ : is_convertible<
+ typename remove_reference<Reference>::type
+ const volatile*
+ , Value const volatile*
+ >
+ {};
+# endif
+
+ // A metafunction to choose the result type of postfix ++
+ //
+ // Because the C++98 input iterator requirements say that *r++ has
+ // type T (value_type), implementations of some standard
+ // algorithms like lexicographical_compare may use constructions
+ // like:
+ //
+ // *r++ < *s++
+ //
+ // If *r++ returns a proxy (as required if r is writable but not
+ // multipass), this sort of expression will fail unless the proxy
+ // supports the operator<. Since there are any number of such
+ // operations, we're not going to try to support them. Therefore,
+ // even if r++ returns a proxy, *r++ will only return a proxy if
+ // *r also returns a proxy.
+ template <class Iterator, class Value, class Reference, class CategoryOrTraversal>
+ struct postfix_increment_result
+ : mpl::eval_if<
+ mpl::and_<
+ // A proxy is only needed for readable iterators
+ is_convertible<Reference,Value const&>
+
+ // No multipass iterator can have values that disappear
+ // before positions can be re-visited
+ , mpl::not_<
+ is_convertible<
+ typename iterator_category_to_traversal<CategoryOrTraversal>::type
+ , forward_traversal_tag
+ >
+ >
+ >
+ , mpl::if_<
+ is_non_proxy_reference<Reference,Value>
+ , postfix_increment_proxy<Iterator>
+ , writable_postfix_increment_proxy<Iterator>
+ >
+ , mpl::identity<Iterator>
+ >
+ {};
+
+ // operator->() needs special support for input iterators to strictly meet the
+ // standard's requirements. If *i is not a reference type, we must still
+ // produce an lvalue to which a pointer can be formed. We do that by
+ // returning a proxy object containing an instance of the reference object.
+ template <class Reference, class Pointer>
+ struct operator_arrow_dispatch // proxy references
+ {
+ struct proxy
+ {
+ explicit proxy(Reference const & x) : m_ref(x) {}
+ Reference* operator->() { return boost::addressof(m_ref); }
+ // This function is needed for MWCW and BCC, which won't call
+ // operator-> again automatically per 13.3.1.2 para 8
+ operator Reference*() { return boost::addressof(m_ref); }
+ Reference m_ref;
+ };
+ typedef proxy result_type;
+ static result_type apply(Reference const & x)
+ {
+ return result_type(x);
+ }
+ };
+
+ template <class T, class Pointer>
+ struct operator_arrow_dispatch<T&, Pointer> // "real" references
+ {
+ typedef Pointer result_type;
+ static result_type apply(T& x)
+ {
+ return boost::addressof(x);
+ }
+ };
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // Deal with ETI
+ template<>
+ struct operator_arrow_dispatch<int, int>
+ {
+ typedef int result_type;
+ };
+# endif
+
+ // A proxy return type for operator[], needed to deal with
+ // iterators that may invalidate referents upon destruction.
+ // Consider the temporary iterator in *(a + n)
+ template <class Iterator>
+ class operator_brackets_proxy
+ {
+ // Iterator is actually an iterator_facade, so we do not have to
+ // go through iterator_traits to access the traits.
+ typedef typename Iterator::reference reference;
+ typedef typename Iterator::value_type value_type;
+
+ public:
+ operator_brackets_proxy(Iterator const& iter)
+ : m_iter(iter)
+ {}
+
+ operator reference() const
+ {
+ return *m_iter;
+ }
+
+ operator_brackets_proxy& operator=(value_type const& val)
+ {
+ *m_iter = val;
+ return *this;
+ }
+
+ private:
+ Iterator m_iter;
+ };
+
+ // A metafunction that determines whether operator[] must return a
+ // proxy, or whether it can simply return a copy of the value_type.
+ template <class ValueType, class Reference>
+ struct use_operator_brackets_proxy
+ : mpl::not_<
+ mpl::and_<
+ // Really we want an is_copy_constructible trait here,
+ // but is_POD will have to suffice in the meantime.
+ boost::is_POD<ValueType>
+ , iterator_writability_disabled<ValueType,Reference>
+ >
+ >
+ {};
+
+ template <class Iterator, class Value, class Reference>
+ struct operator_brackets_result
+ {
+ typedef typename mpl::if_<
+ use_operator_brackets_proxy<Value,Reference>
+ , operator_brackets_proxy<Iterator>
+ , Value
+ >::type type;
+ };
+
+ template <class Iterator>
+ operator_brackets_proxy<Iterator> make_operator_brackets_result(Iterator const& iter, mpl::true_)
+ {
+ return operator_brackets_proxy<Iterator>(iter);
+ }
+
+ template <class Iterator>
+ typename Iterator::value_type make_operator_brackets_result(Iterator const& iter, mpl::false_)
+ {
+ return *iter;
+ }
+
+ struct choose_difference_type
+ {
+ template <class I1, class I2>
+ struct apply
+ :
+# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
+ iterator_difference<I1>
+# elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ mpl::if_<
+ is_convertible<I2,I1>
+ , typename I1::difference_type
+ , typename I2::difference_type
+ >
+# else
+ mpl::eval_if<
+ is_convertible<I2,I1>
+ , iterator_difference<I1>
+ , iterator_difference<I2>
+ >
+# endif
+ {};
+
+ };
+ } // namespace detail
+
+
+ // Macros which describe the declarations of binary operators
+# ifdef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
+# define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type) \
+ template < \
+ class Derived1, class V1, class TC1, class Reference1, class Difference1 \
+ , class Derived2, class V2, class TC2, class Reference2, class Difference2 \
+ > \
+ prefix typename mpl::apply2<result_type,Derived1,Derived2>::type \
+ operator op( \
+ iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs \
+ , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs)
+# else
+# define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type) \
+ template < \
+ class Derived1, class V1, class TC1, class Reference1, class Difference1 \
+ , class Derived2, class V2, class TC2, class Reference2, class Difference2 \
+ > \
+ prefix typename boost::detail::enable_if_interoperable< \
+ Derived1, Derived2 \
+ , typename mpl::apply2<result_type,Derived1,Derived2>::type \
+ >::type \
+ operator op( \
+ iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs \
+ , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs)
+# endif
+
+# define BOOST_ITERATOR_FACADE_PLUS_HEAD(prefix,args) \
+ template <class Derived, class V, class TC, class R, class D> \
+ prefix Derived operator+ args
+
+ //
+ // Helper class for granting access to the iterator core interface.
+ //
+ // The simple core interface is used by iterator_facade. The core
+ // interface of a user/library defined iterator type should not be made public
+ // so that it does not clutter the public interface. Instead iterator_core_access
+ // should be made friend so that iterator_facade can access the core
+ // interface through iterator_core_access.
+ //
+ class iterator_core_access
+ {
+# if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
+ // Tasteless as this may seem, making all members public allows member templates
+ // to work in the absence of member template friends.
+ public:
+# else
+
+ template <class I, class V, class TC, class R, class D> friend class iterator_facade;
+
+# define BOOST_ITERATOR_FACADE_RELATION(op) \
+ BOOST_ITERATOR_FACADE_INTEROP_HEAD(friend,op, boost::detail::always_bool2);
+
+ BOOST_ITERATOR_FACADE_RELATION(==)
+ BOOST_ITERATOR_FACADE_RELATION(!=)
+
+ BOOST_ITERATOR_FACADE_RELATION(<)
+ BOOST_ITERATOR_FACADE_RELATION(>)
+ BOOST_ITERATOR_FACADE_RELATION(<=)
+ BOOST_ITERATOR_FACADE_RELATION(>=)
+# undef BOOST_ITERATOR_FACADE_RELATION
+
+ BOOST_ITERATOR_FACADE_INTEROP_HEAD(
+ friend, -, boost::detail::choose_difference_type)
+ ;
+
+ BOOST_ITERATOR_FACADE_PLUS_HEAD(
+ friend inline
+ , (iterator_facade<Derived, V, TC, R, D> const&
+ , typename Derived::difference_type)
+ )
+ ;
+
+ BOOST_ITERATOR_FACADE_PLUS_HEAD(
+ friend inline
+ , (typename Derived::difference_type
+ , iterator_facade<Derived, V, TC, R, D> const&)
+ )
+ ;
+
+# endif
+
+ template <class Facade>
+ static typename Facade::reference dereference(Facade const& f)
+ {
+ return f.dereference();
+ }
+
+ template <class Facade>
+ static void increment(Facade& f)
+ {
+ f.increment();
+ }
+
+ template <class Facade>
+ static void decrement(Facade& f)
+ {
+ f.decrement();
+ }
+
+ template <class Facade1, class Facade2>
+ static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::true_)
+ {
+ return f1.equal(f2);
+ }
+
+ template <class Facade1, class Facade2>
+ static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::false_)
+ {
+ return f2.equal(f1);
+ }
+
+ template <class Facade>
+ static void advance(Facade& f, typename Facade::difference_type n)
+ {
+ f.advance(n);
+ }
+
+ template <class Facade1, class Facade2>
+ static typename Facade1::difference_type distance_from(
+ Facade1 const& f1, Facade2 const& f2, mpl::true_)
+ {
+ return -f1.distance_to(f2);
+ }
+
+ template <class Facade1, class Facade2>
+ static typename Facade2::difference_type distance_from(
+ Facade1 const& f1, Facade2 const& f2, mpl::false_)
+ {
+ return f2.distance_to(f1);
+ }
+
+ //
+ // Curiously Recurring Template interface.
+ //
+ template <class I, class V, class TC, class R, class D>
+ static I& derived(iterator_facade<I,V,TC,R,D>& facade)
+ {
+ return *static_cast<I*>(&facade);
+ }
+
+ template <class I, class V, class TC, class R, class D>
+ static I const& derived(iterator_facade<I,V,TC,R,D> const& facade)
+ {
+ return *static_cast<I const*>(&facade);
+ }
+
+ private:
+ // objects of this class are useless
+ iterator_core_access(); //undefined
+ };
+
+ //
+ // iterator_facade - use as a public base class for defining new
+ // standard-conforming iterators.
+ //
+ template <
+ class Derived // The derived iterator type being constructed
+ , class Value
+ , class CategoryOrTraversal
+ , class Reference = Value&
+ , class Difference = std::ptrdiff_t
+ >
+ class iterator_facade
+# ifdef BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE
+ : public boost::detail::iterator_facade_types<
+ Value, CategoryOrTraversal, Reference, Difference
+ >::base
+# undef BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE
+# endif
+ {
+ private:
+ //
+ // Curiously Recurring Template interface.
+ //
+ Derived& derived()
+ {
+ return *static_cast<Derived*>(this);
+ }
+
+ Derived const& derived() const
+ {
+ return *static_cast<Derived const*>(this);
+ }
+
+ typedef boost::detail::iterator_facade_types<
+ Value, CategoryOrTraversal, Reference, Difference
+ > associated_types;
+
+ typedef boost::detail::operator_arrow_dispatch<
+ Reference
+ , typename associated_types::pointer
+ > operator_arrow_dispatch_;
+
+ protected:
+ // For use by derived classes
+ typedef iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Difference> iterator_facade_;
+
+ public:
+
+ typedef typename associated_types::value_type value_type;
+ typedef Reference reference;
+ typedef Difference difference_type;
+
+ typedef typename operator_arrow_dispatch_::result_type pointer;
+
+ typedef typename associated_types::iterator_category iterator_category;
+
+ reference operator*() const
+ {
+ return iterator_core_access::dereference(this->derived());
+ }
+
+ pointer operator->() const
+ {
+ return operator_arrow_dispatch_::apply(*this->derived());
+ }
+
+ typename boost::detail::operator_brackets_result<Derived,Value,reference>::type
+ operator[](difference_type n) const
+ {
+ typedef boost::detail::use_operator_brackets_proxy<Value,Reference> use_proxy;
+
+ return boost::detail::make_operator_brackets_result<Derived>(
+ this->derived() + n
+ , use_proxy()
+ );
+ }
+
+ Derived& operator++()
+ {
+ iterator_core_access::increment(this->derived());
+ return this->derived();
+ }
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ typename boost::detail::postfix_increment_result<Derived,Value,Reference,CategoryOrTraversal>::type
+ operator++(int)
+ {
+ typename boost::detail::postfix_increment_result<Derived,Value,Reference,CategoryOrTraversal>::type
+ tmp(this->derived());
+ ++*this;
+ return tmp;
+ }
+# endif
+
+ Derived& operator--()
+ {
+ iterator_core_access::decrement(this->derived());
+ return this->derived();
+ }
+
+ Derived operator--(int)
+ {
+ Derived tmp(this->derived());
+ --*this;
+ return tmp;
+ }
+
+ Derived& operator+=(difference_type n)
+ {
+ iterator_core_access::advance(this->derived(), n);
+ return this->derived();
+ }
+
+ Derived& operator-=(difference_type n)
+ {
+ iterator_core_access::advance(this->derived(), -n);
+ return this->derived();
+ }
+
+ Derived operator-(difference_type x) const
+ {
+ Derived result(this->derived());
+ return result -= x;
+ }
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // There appears to be a bug which trashes the data of classes
+ // derived from iterator_facade when they are assigned unless we
+ // define this assignment operator. This bug is only revealed
+ // (so far) in STLPort debug mode, but it's clearly a codegen
+ // problem so we apply the workaround for all MSVC6.
+ iterator_facade& operator=(iterator_facade const&)
+ {
+ return *this;
+ }
+# endif
+ };
+
+# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ template <class I, class V, class TC, class R, class D>
+ inline typename boost::detail::postfix_increment_result<I,V,R,TC>::type
+ operator++(
+ iterator_facade<I,V,TC,R,D>& i
+ , int
+ )
+ {
+ typename boost::detail::postfix_increment_result<I,V,R,TC>::type
+ tmp(*static_cast<I*>(&i));
+
+ ++i;
+
+ return tmp;
+ }
+# endif
+
+
+ //
+ // Comparison operator implementation. The library supplied operators
+ // enables the user to provide fully interoperable constant/mutable
+ // iterator types. I.e. the library provides all operators
+ // for all mutable/constant iterator combinations.
+ //
+ // Note though that this kind of interoperability for constant/mutable
+ // iterators is not required by the standard for container iterators.
+ // All the standard asks for is a conversion mutable -> constant.
+ // Most standard library implementations nowadays provide fully interoperable
+ // iterator implementations, but there are still heavily used implementations
+ // that do not provide them. (Actually it's even worse, they do not provide
+ // them for only a few iterators.)
+ //
+ // ?? Maybe a BOOST_ITERATOR_NO_FULL_INTEROPERABILITY macro should
+ // enable the user to turn off mixed type operators
+ //
+ // The library takes care to provide only the right operator overloads.
+ // I.e.
+ //
+ // bool operator==(Iterator, Iterator);
+ // bool operator==(ConstIterator, Iterator);
+ // bool operator==(Iterator, ConstIterator);
+ // bool operator==(ConstIterator, ConstIterator);
+ //
+ // ...
+ //
+ // In order to do so it uses c++ idioms that are not yet widely supported
+ // by current compiler releases. The library is designed to degrade gracefully
+ // in the face of compiler deficiencies. In general compiler
+ // deficiencies result in less strict error checking and more obscure
+ // error messages, functionality is not affected.
+ //
+ // For full operation compiler support for "Substitution Failure Is Not An Error"
+ // (aka. enable_if) and boost::is_convertible is required.
+ //
+ // The following problems occur if support is lacking.
+ //
+ // Pseudo code
+ //
+ // ---------------
+ // AdaptorA<Iterator1> a1;
+ // AdaptorA<Iterator2> a2;
+ //
+ // // This will result in a no such overload error in full operation
+ // // If enable_if or is_convertible is not supported
+ // // The instantiation will fail with an error hopefully indicating that
+ // // there is no operator== for Iterator1, Iterator2
+ // // The same will happen if no enable_if is used to remove
+ // // false overloads from the templated conversion constructor
+ // // of AdaptorA.
+ //
+ // a1 == a2;
+ // ----------------
+ //
+ // AdaptorA<Iterator> a;
+ // AdaptorB<Iterator> b;
+ //
+ // // This will result in a no such overload error in full operation
+ // // If enable_if is not supported the static assert used
+ // // in the operator implementation will fail.
+ // // This will accidently work if is_convertible is not supported.
+ //
+ // a == b;
+ // ----------------
+ //
+
+# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
+# define BOOST_ITERATOR_CONVERTIBLE(a,b) mpl::true_()
+# else
+# define BOOST_ITERATOR_CONVERTIBLE(a,b) is_convertible<a,b>()
+# endif
+
+# define BOOST_ITERATOR_FACADE_INTEROP(op, result_type, return_prefix, base_op) \
+ BOOST_ITERATOR_FACADE_INTEROP_HEAD(inline, op, result_type) \
+ { \
+ /* For those compilers that do not support enable_if */ \
+ BOOST_STATIC_ASSERT(( \
+ is_interoperable< Derived1, Derived2 >::value \
+ )); \
+ return_prefix iterator_core_access::base_op( \
+ *static_cast<Derived1 const*>(&lhs) \
+ , *static_cast<Derived2 const*>(&rhs) \
+ , BOOST_ITERATOR_CONVERTIBLE(Derived2,Derived1) \
+ ); \
+ }
+
+# define BOOST_ITERATOR_FACADE_RELATION(op, return_prefix, base_op) \
+ BOOST_ITERATOR_FACADE_INTEROP( \
+ op \
+ , boost::detail::always_bool2 \
+ , return_prefix \
+ , base_op \
+ )
+
+ BOOST_ITERATOR_FACADE_RELATION(==, return, equal)
+ BOOST_ITERATOR_FACADE_RELATION(!=, return !, equal)
+
+ BOOST_ITERATOR_FACADE_RELATION(<, return 0 >, distance_from)
+ BOOST_ITERATOR_FACADE_RELATION(>, return 0 <, distance_from)
+ BOOST_ITERATOR_FACADE_RELATION(<=, return 0 >=, distance_from)
+ BOOST_ITERATOR_FACADE_RELATION(>=, return 0 <=, distance_from)
+# undef BOOST_ITERATOR_FACADE_RELATION
+
+ // operator- requires an additional part in the static assertion
+ BOOST_ITERATOR_FACADE_INTEROP(
+ -
+ , boost::detail::choose_difference_type
+ , return
+ , distance_from
+ )
+# undef BOOST_ITERATOR_FACADE_INTEROP
+# undef BOOST_ITERATOR_FACADE_INTEROP_HEAD
+
+# define BOOST_ITERATOR_FACADE_PLUS(args) \
+ BOOST_ITERATOR_FACADE_PLUS_HEAD(inline, args) \
+ { \
+ Derived tmp(static_cast<Derived const&>(i)); \
+ return tmp += n; \
+ }
+
+BOOST_ITERATOR_FACADE_PLUS((
+ iterator_facade<Derived, V, TC, R, D> const& i
+ , typename Derived::difference_type n
+))
+
+BOOST_ITERATOR_FACADE_PLUS((
+ typename Derived::difference_type n
+ , iterator_facade<Derived, V, TC, R, D> const& i
+))
+# undef BOOST_ITERATOR_FACADE_PLUS
+# undef BOOST_ITERATOR_FACADE_PLUS_HEAD
+
+} // namespace boost
+
+#include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_ITERATOR_FACADE_23022003THW_HPP
--- /dev/null
+// Copyright David Abrahams 2003.
+// 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)
+#ifndef ITERATOR_TRAITS_DWA200347_HPP
+# define ITERATOR_TRAITS_DWA200347_HPP
+
+# include <boost/detail/iterator.hpp>
+# include <boost/detail/workaround.hpp>
+
+namespace boost {
+
+// Unfortunately, g++ 2.95.x chokes when we define a class template
+// iterator_category which has the same name as its
+// std::iterator_category() function, probably due in part to the
+// "std:: is visible globally" hack it uses. Use
+// BOOST_ITERATOR_CATEGORY to write code that's portable to older
+// GCCs.
+
+# if BOOST_WORKAROUND(__GNUC__, <= 2)
+# define BOOST_ITERATOR_CATEGORY iterator_category_
+# else
+# define BOOST_ITERATOR_CATEGORY iterator_category
+# endif
+
+
+template <class Iterator>
+struct iterator_value
+{
+ typedef typename boost::detail::iterator_traits<Iterator>::value_type type;
+};
+
+template <class Iterator>
+struct iterator_reference
+{
+ typedef typename boost::detail::iterator_traits<Iterator>::reference type;
+};
+
+
+template <class Iterator>
+struct iterator_pointer
+{
+ typedef typename boost::detail::iterator_traits<Iterator>::pointer type;
+};
+
+template <class Iterator>
+struct iterator_difference
+{
+ typedef typename boost::detail::iterator_traits<Iterator>::difference_type type;
+};
+
+template <class Iterator>
+struct BOOST_ITERATOR_CATEGORY
+{
+ typedef typename boost::detail::iterator_traits<Iterator>::iterator_category type;
+};
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+template <>
+struct iterator_value<int>
+{
+ typedef void type;
+};
+
+template <>
+struct iterator_reference<int>
+{
+ typedef void type;
+};
+
+template <>
+struct iterator_pointer<int>
+{
+ typedef void type;
+};
+
+template <>
+struct iterator_difference<int>
+{
+ typedef void type;
+};
+
+template <>
+struct BOOST_ITERATOR_CATEGORY<int>
+{
+ typedef void type;
+};
+# endif
+
+} // namespace boost::iterator
+
+#endif // ITERATOR_TRAITS_DWA200347_HPP
--- /dev/null
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 2002.
+// 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)
+#ifndef BOOST_REVERSE_ITERATOR_23022003THW_HPP
+#define BOOST_REVERSE_ITERATOR_23022003THW_HPP
+
+#include <boost/next_prior.hpp>
+#include <boost/iterator.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+
+namespace boost
+{
+
+ //
+ //
+ //
+ template <class Iterator>
+ class reverse_iterator
+ : public iterator_adaptor< reverse_iterator<Iterator>, Iterator >
+ {
+ typedef iterator_adaptor< reverse_iterator<Iterator>, Iterator > super_t;
+
+ friend class iterator_core_access;
+
+ public:
+ reverse_iterator() {}
+
+ explicit reverse_iterator(Iterator x)
+ : super_t(x) {}
+
+ template<class OtherIterator>
+ reverse_iterator(
+ reverse_iterator<OtherIterator> const& r
+ , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
+ )
+ : super_t(r.base())
+ {}
+
+ private:
+ typename super_t::reference dereference() const { return *boost::prior(this->base()); }
+
+ void increment() { --this->base_reference(); }
+ void decrement() { ++this->base_reference(); }
+
+ void advance(typename super_t::difference_type n)
+ {
+ this->base_reference() += -n;
+ }
+
+ template <class OtherIterator>
+ typename super_t::difference_type
+ distance_to(reverse_iterator<OtherIterator> const& y) const
+ {
+ return this->base_reference() - y.base();
+ }
+ };
+
+ template <class BidirectionalIterator>
+ reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
+ {
+ return reverse_iterator<BidirectionalIterator>(x);
+ }
+
+} // namespace boost
+
+#endif // BOOST_REVERSE_ITERATOR_23022003THW_HPP
#ifndef BOOST_LEXICAL_CAST_INCLUDED
#define BOOST_LEXICAL_CAST_INCLUDED
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
// Boost lexical_cast.hpp header -------------------------------------------//
//
// See http://www.boost.org/libs/conversion for documentation.
// enhanced with contributions from Terje Slettebo,
// with additional fixes and suggestions from Gennaro Prota,
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
-// Alexander Nasonov and other Boosters
-// when: November 2000, March 2003, June 2005, June 2006
+// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
+// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
+// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2013
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
+#define BOOST_LCAST_NO_WCHAR_T
+#endif
#include <climits>
#include <cstddef>
-#include <istream>
#include <string>
+#include <cstring>
+#include <cstdio>
#include <typeinfo>
#include <exception>
-#include <boost/config.hpp>
#include <boost/limits.hpp>
#include <boost/mpl/if.hpp>
#include <boost/throw_exception.hpp>
+#include <boost/type_traits/ice.hpp>
#include <boost/type_traits/is_pointer.hpp>
-#include <boost/type_traits/make_unsigned.hpp>
-#include <boost/call_traits.hpp>
#include <boost/static_assert.hpp>
#include <boost/detail/lcast_precision.hpp>
#include <boost/detail/workaround.hpp>
+
#ifndef BOOST_NO_STD_LOCALE
-#include <locale>
+# include <locale>
+#else
+# ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
+ // Getting error at this point means, that your STL library is old/lame/misconfigured.
+ // If nothing can be done with STL library, define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE,
+ // but beware: lexical_cast will understand only 'C' locale delimeters and thousands
+ // separators.
+# error "Unable to use <locale> header. Define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE to force "
+# error "boost::lexical_cast to use only 'C' locale during conversions."
+# endif
#endif
#ifdef BOOST_NO_STRINGSTREAM
#include <sstream>
#endif
-#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
-#define BOOST_LCAST_NO_WCHAR_T
-#endif
-
#ifdef BOOST_NO_TYPEID
#define BOOST_LCAST_THROW_BAD_CAST(S, T) throw_exception(bad_lexical_cast())
#else
namespace boost
{
// exception used to indicate runtime lexical_cast failure
- class bad_lexical_cast : public std::bad_cast
+ class BOOST_SYMBOL_VISIBLE bad_lexical_cast :
+ // workaround MSVC bug with std::bad_cast when _HAS_EXCEPTIONS == 0
+#if defined(BOOST_MSVC) && defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS
+ public std::exception
+#else
+ public std::bad_cast
+#endif
#if defined(__BORLANDC__) && BOOST_WORKAROUND( __BORLANDC__, < 0x560 )
// under bcc32 5.5.1 bad_cast doesn't derive from exception
{
public:
- bad_lexical_cast() :
+ bad_lexical_cast() BOOST_NOEXCEPT :
#ifndef BOOST_NO_TYPEID
source(&typeid(void)), target(&typeid(void))
#else
bad_lexical_cast(
const std::type_info &source_type_arg,
- const std::type_info &target_type_arg) :
+ const std::type_info &target_type_arg) BOOST_NOEXCEPT :
source(&source_type_arg), target(&target_type_arg)
{
}
return *target;
}
+#ifndef BOOST_NO_CXX11_NOEXCEPT
+ virtual const char *what() const noexcept
+#else
virtual const char *what() const throw()
+#endif
{
return "bad lexical cast: "
"source type value could not be interpreted as target";
}
+
+#ifndef BOOST_NO_CXX11_NOEXCEPT
+ virtual ~bad_lexical_cast() BOOST_NOEXCEPT
+#else
virtual ~bad_lexical_cast() throw()
- {
- }
+#endif
+ {}
private:
const std::type_info *source;
const std::type_info *target;
};
- namespace detail // selectors for choosing stream character type
+ namespace detail // widest_char
{
- template<typename Type>
- struct stream_char
+ template <typename TargetChar, typename SourceChar>
+ struct widest_char
{
- typedef char type;
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
+ (sizeof(TargetChar) > sizeof(SourceChar))
+ , TargetChar
+ , SourceChar >::type type;
+ };
+ }
+} // namespace boost
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(__SUNPRO_CC) && !defined(__PGIC__)
+
+#include <cmath>
+#include <istream>
+
+#ifndef BOOST_NO_CXX11_HDR_ARRAY
+#include <array>
+#endif
+
+#include <boost/array.hpp>
+#include <boost/numeric/conversion/cast.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/type_traits/is_signed.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_arithmetic.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/has_left_shift.hpp>
+#include <boost/type_traits/has_right_shift.hpp>
+#include <boost/math/special_functions/sign.hpp>
+#include <boost/math/special_functions/fpclassify.hpp>
+#include <boost/range/iterator_range_core.hpp>
+#include <boost/container/container_fwd.hpp>
+#include <boost/integer.hpp>
+#ifndef BOOST_NO_CWCHAR
+# include <cwchar>
+#endif
+
+namespace boost {
+
+ namespace detail // is_char_or_wchar<...>
+ {
+ // returns true, if T is one of the character types
+ template < typename T >
+ struct is_char_or_wchar
+ {
+ typedef boost::type_traits::ice_or<
+ boost::is_same< T, char >::value,
+ #ifndef BOOST_LCAST_NO_WCHAR_T
+ boost::is_same< T, wchar_t >::value,
+ #endif
+ #ifndef BOOST_NO_CXX11_CHAR16_T
+ boost::is_same< T, char16_t >::value,
+ #endif
+ #ifndef BOOST_NO_CXX11_CHAR32_T
+ boost::is_same< T, char32_t >::value,
+ #endif
+ boost::is_same< T, unsigned char >::value,
+ boost::is_same< T, signed char >::value
+ > result_type;
+
+ BOOST_STATIC_CONSTANT(bool, value = (result_type::value) );
};
+ }
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- template<class CharT, class Traits, class Alloc>
- struct stream_char< std::basic_string<CharT,Traits,Alloc> >
+ namespace detail // normalize_single_byte_char<Char>
+ {
+ // Converts signed/unsigned char to char
+ template < class Char >
+ struct normalize_single_byte_char
{
- typedef CharT type;
+ typedef Char type;
};
-#endif
-#ifndef BOOST_LCAST_NO_WCHAR_T
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
- template<>
- struct stream_char<wchar_t>
+ template <>
+ struct normalize_single_byte_char< signed char >
{
- typedef wchar_t type;
+ typedef char type;
};
-#endif
- template<>
- struct stream_char<wchar_t *>
+ template <>
+ struct normalize_single_byte_char< unsigned char >
{
- typedef wchar_t type;
+ typedef char type;
};
+ }
- template<>
- struct stream_char<const wchar_t *>
+ namespace detail // deduce_character_type_later<T>
+ {
+ // Helper type, meaning that stram character for T must be deduced
+ // at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
+ template < class T > struct deduce_character_type_later {};
+ }
+
+ namespace detail // stream_char_common<T>
+ {
+ // Selectors to choose stream character type (common for Source and Target)
+ // Returns one of char, wchar_t, char16_t, char32_t or deduce_character_type_later<T> types
+ // Executed on Stage 1 (See deduce_source_char<T> and deduce_target_char<T>)
+ template < typename Type >
+ struct stream_char_common: public boost::mpl::if_c<
+ boost::detail::is_char_or_wchar< Type >::value,
+ Type,
+ boost::detail::deduce_character_type_later< Type >
+ > {};
+
+ template < typename Char >
+ struct stream_char_common< Char* >: public boost::mpl::if_c<
+ boost::detail::is_char_or_wchar< Char >::value,
+ Char,
+ boost::detail::deduce_character_type_later< Char* >
+ > {};
+
+ template < typename Char >
+ struct stream_char_common< const Char* >: public boost::mpl::if_c<
+ boost::detail::is_char_or_wchar< Char >::value,
+ Char,
+ boost::detail::deduce_character_type_later< const Char* >
+ > {};
+
+ template < typename Char >
+ struct stream_char_common< boost::iterator_range< Char* > >: public boost::mpl::if_c<
+ boost::detail::is_char_or_wchar< Char >::value,
+ Char,
+ boost::detail::deduce_character_type_later< boost::iterator_range< Char* > >
+ > {};
+
+ template < typename Char >
+ struct stream_char_common< boost::iterator_range< const Char* > >: public boost::mpl::if_c<
+ boost::detail::is_char_or_wchar< Char >::value,
+ Char,
+ boost::detail::deduce_character_type_later< boost::iterator_range< const Char* > >
+ > {};
+
+ template < class Char, class Traits, class Alloc >
+ struct stream_char_common< std::basic_string< Char, Traits, Alloc > >
{
- typedef wchar_t type;
+ typedef Char type;
};
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- template<>
- struct stream_char<std::wstring>
+ template < class Char, class Traits, class Alloc >
+ struct stream_char_common< boost::container::basic_string< Char, Traits, Alloc > >
{
- typedef wchar_t type;
+ typedef Char type;
};
+
+ template < typename Char, std::size_t N >
+ struct stream_char_common< boost::array< Char, N > >: public boost::mpl::if_c<
+ boost::detail::is_char_or_wchar< Char >::value,
+ Char,
+ boost::detail::deduce_character_type_later< boost::array< Char, N > >
+ > {};
+
+ template < typename Char, std::size_t N >
+ struct stream_char_common< boost::array< const Char, N > >: public boost::mpl::if_c<
+ boost::detail::is_char_or_wchar< Char >::value,
+ Char,
+ boost::detail::deduce_character_type_later< boost::array< const Char, N > >
+ > {};
+
+#ifndef BOOST_NO_CXX11_HDR_ARRAY
+ template < typename Char, std::size_t N >
+ struct stream_char_common< std::array<Char, N > >: public boost::mpl::if_c<
+ boost::detail::is_char_or_wchar< Char >::value,
+ Char,
+ boost::detail::deduce_character_type_later< std::array< Char, N > >
+ > {};
+
+ template < typename Char, std::size_t N >
+ struct stream_char_common< std::array< const Char, N > >: public boost::mpl::if_c<
+ boost::detail::is_char_or_wchar< Char >::value,
+ Char,
+ boost::detail::deduce_character_type_later< std::array< const Char, N > >
+ > {};
#endif
+
+#ifdef BOOST_HAS_INT128
+ template <> struct stream_char_common< boost::int128_type >: public boost::mpl::identity< char > {};
+ template <> struct stream_char_common< boost::uint128_type >: public boost::mpl::identity< char > {};
#endif
- template<typename TargetChar, typename SourceChar>
- struct widest_char
+#if !defined(BOOST_LCAST_NO_WCHAR_T) && defined(BOOST_NO_INTRINSIC_WCHAR_T)
+ template <>
+ struct stream_char_common< wchar_t >
{
- typedef TargetChar type;
+ typedef char type;
};
+#endif
+ }
- template<>
- struct widest_char<char, wchar_t>
+ namespace detail // deduce_source_char_impl<T>
+ {
+ // If type T is `deduce_character_type_later` type, then tries to deduce
+ // character type using boost::has_left_shift<T> metafunction.
+ // Otherwise supplied type T is a character type, that must be normalized
+ // using normalize_single_byte_char<Char>.
+ // Executed at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
+ template < class Char >
+ struct deduce_source_char_impl
+ {
+ typedef BOOST_DEDUCED_TYPENAME boost::detail::normalize_single_byte_char< Char >::type type;
+ };
+
+ template < class T >
+ struct deduce_source_char_impl< deduce_character_type_later< T > >
{
- typedef wchar_t type;
+ typedef boost::has_left_shift< std::basic_ostream< char >, T > result_t;
+
+#if defined(BOOST_LCAST_NO_WCHAR_T)
+ BOOST_STATIC_ASSERT_MSG((result_t::value),
+ "Source type is not std::ostream`able and std::wostream`s are not supported by your STL implementation");
+ typedef char type;
+#else
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
+ result_t::value, char, wchar_t
+ >::type type;
+
+ BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_left_shift< std::basic_ostream< type >, T >::value),
+ "Source type is neither std::ostream`able nor std::wostream`able");
+#endif
+ };
+ }
+
+ namespace detail // deduce_target_char_impl<T>
+ {
+ // If type T is `deduce_character_type_later` type, then tries to deduce
+ // character type using boost::has_right_shift<T> metafunction.
+ // Otherwise supplied type T is a character type, that must be normalized
+ // using normalize_single_byte_char<Char>.
+ // Executed at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
+ template < class Char >
+ struct deduce_target_char_impl
+ {
+ typedef BOOST_DEDUCED_TYPENAME normalize_single_byte_char< Char >::type type;
+ };
+
+ template < class T >
+ struct deduce_target_char_impl< deduce_character_type_later<T> >
+ {
+ typedef boost::has_right_shift<std::basic_istream<char>, T > result_t;
+
+#if defined(BOOST_LCAST_NO_WCHAR_T)
+ BOOST_STATIC_ASSERT_MSG((result_t::value),
+ "Target type is not std::istream`able and std::wistream`s are not supported by your STL implementation");
+ typedef char type;
+#else
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
+ result_t::value, char, wchar_t
+ >::type type;
+
+ BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_right_shift<std::basic_istream<wchar_t>, T >::value),
+ "Target type is neither std::istream`able nor std::wistream`able");
+#endif
+ };
+ }
+
+ namespace detail // deduce_target_char<T> and deduce_source_char<T>
+ {
+ // We deduce stream character types in two stages.
+ //
+ // Stage 1 is common for Target and Source. At Stage 1 we get
+ // non normalized character type (may contain unsigned/signed char)
+ // or deduce_character_type_later<T> where T is the original type.
+ // Stage 1 is executed by stream_char_common<T>
+ //
+ // At Stage 2 we normalize character types or try to deduce character
+ // type using metafunctions.
+ // Stage 2 is executed by deduce_target_char_impl<T> and
+ // deduce_source_char_impl<T>
+ //
+ // deduce_target_char<T> and deduce_source_char<T> functions combine
+ // both stages
+
+ template < class T >
+ struct deduce_target_char
+ {
+ typedef BOOST_DEDUCED_TYPENAME stream_char_common< T >::type stage1_type;
+ typedef BOOST_DEDUCED_TYPENAME deduce_target_char_impl< stage1_type >::type stage2_type;
+
+ typedef stage2_type type;
+ };
+
+ template < class T >
+ struct deduce_source_char
+ {
+ typedef BOOST_DEDUCED_TYPENAME stream_char_common< T >::type stage1_type;
+ typedef BOOST_DEDUCED_TYPENAME deduce_source_char_impl< stage1_type >::type stage2_type;
+
+ typedef stage2_type type;
};
}
namespace detail // deduce_char_traits template
{
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- template<class CharT, class Target, class Source>
+ // We are attempting to get char_traits<> from Source or Tagret
+ // template parameter. Otherwise we'll be using std::char_traits<Char>
+ template < class Char, class Target, class Source >
struct deduce_char_traits
{
- typedef std::char_traits<CharT> type;
+ typedef std::char_traits< Char > type;
};
- template<class CharT, class Traits, class Alloc, class Source>
- struct deduce_char_traits< CharT
- , std::basic_string<CharT,Traits,Alloc>
+ template < class Char, class Traits, class Alloc, class Source >
+ struct deduce_char_traits< Char
+ , std::basic_string< Char, Traits, Alloc >
, Source
>
{
typedef Traits type;
};
- template<class CharT, class Target, class Traits, class Alloc>
- struct deduce_char_traits< CharT
+ template < class Char, class Target, class Traits, class Alloc >
+ struct deduce_char_traits< Char
, Target
- , std::basic_string<CharT,Traits,Alloc>
+ , std::basic_string< Char, Traits, Alloc >
>
{
typedef Traits type;
};
- template<class CharT, class Traits, class Alloc1, class Alloc2>
- struct deduce_char_traits< CharT
- , std::basic_string<CharT,Traits,Alloc1>
- , std::basic_string<CharT,Traits,Alloc2>
+ template < class Char, class Traits, class Alloc, class Source >
+ struct deduce_char_traits< Char
+ , boost::container::basic_string< Char, Traits, Alloc >
+ , Source
>
{
typedef Traits type;
};
-#endif
- }
-
- namespace detail // lcast_src_length
- {
- // Return max. length of string representation of Source;
- // 0 if unlimited (with exceptions for some types, see below).
- // Values with limited string representation are placed to
- // the buffer locally defined in lexical_cast function.
- // 1 is returned for few types such as CharT const* or
- // std::basic_string<CharT> that already have an internal
- // buffer ready to be reused by lexical_stream_limited_src.
- // Each specialization should have a correspondent operator<<
- // defined in lexical_stream_limited_src.
- template< class CharT // A result of widest_char transformation.
- , class Source // Source type of lexical_cast.
- >
- struct lcast_src_length
- {
- BOOST_STATIC_CONSTANT(std::size_t, value = 0);
- // To check coverage, build the test with
- // bjam --v2 profile optimization=off
- static void check_coverage() {}
- };
-
- template<>
- struct lcast_src_length<char, bool>
- {
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
- };
- template<>
- struct lcast_src_length<char, char>
+ template < class Char, class Target, class Traits, class Alloc >
+ struct deduce_char_traits< Char
+ , Target
+ , boost::container::basic_string< Char, Traits, Alloc >
+ >
{
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
+ typedef Traits type;
};
- // No specializations for:
- // lcast_src_length<char, signed char>
- // lcast_src_length<char, unsigned char>
- // lcast_src_length<char, signed char*>
- // lcast_src_length<char, unsigned char*>
- // lcast_src_length<char, signed char const*>
- // lcast_src_length<char, unsigned char const*>
-
-#ifndef BOOST_LCAST_NO_WCHAR_T
- template<>
- struct lcast_src_length<wchar_t, bool>
+ template < class Char, class Traits, class Alloc1, class Alloc2 >
+ struct deduce_char_traits< Char
+ , std::basic_string< Char, Traits, Alloc1 >
+ , std::basic_string< Char, Traits, Alloc2 >
+ >
{
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
+ typedef Traits type;
};
- template<>
- struct lcast_src_length<wchar_t, char>
+ template<class Char, class Traits, class Alloc1, class Alloc2>
+ struct deduce_char_traits< Char
+ , boost::container::basic_string< Char, Traits, Alloc1 >
+ , boost::container::basic_string< Char, Traits, Alloc2 >
+ >
{
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
+ typedef Traits type;
};
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
- template<>
- struct lcast_src_length<wchar_t, wchar_t>
+ template < class Char, class Traits, class Alloc1, class Alloc2 >
+ struct deduce_char_traits< Char
+ , boost::container::basic_string< Char, Traits, Alloc1 >
+ , std::basic_string< Char, Traits, Alloc2 >
+ >
{
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
+ typedef Traits type;
};
-#endif
-#endif
- template<>
- struct lcast_src_length<char, char const*>
+ template < class Char, class Traits, class Alloc1, class Alloc2 >
+ struct deduce_char_traits< Char
+ , std::basic_string< Char, Traits, Alloc1 >
+ , boost::container::basic_string< Char, Traits, Alloc2 >
+ >
{
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
+ typedef Traits type;
};
+ }
- template<>
- struct lcast_src_length<char, char*>
+ namespace detail // array_to_pointer_decay<T>
+ {
+ template<class T>
+ struct array_to_pointer_decay
{
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
+ typedef T type;
};
-#ifndef BOOST_LCAST_NO_WCHAR_T
- template<>
- struct lcast_src_length<wchar_t, wchar_t const*>
+ template<class T, std::size_t N>
+ struct array_to_pointer_decay<T[N]>
{
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
+ typedef const T * type;
};
+ }
- template<>
- struct lcast_src_length<wchar_t, wchar_t*>
- {
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
- };
+ namespace detail // is_this_float_conversion_optimized<Float, Char>
+ {
+ // this metafunction evaluates to true, if we have optimized comnversion
+ // from Float type to Char array.
+ // Must be in sync with lexical_stream_limited_src<Char, ...>::shl_real_type(...)
+ template <typename Float, typename Char>
+ struct is_this_float_conversion_optimized
+ {
+ typedef boost::type_traits::ice_and<
+ boost::is_float<Float>::value,
+#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_SWPRINTF) && !defined(__MINGW32__)
+ boost::type_traits::ice_or<
+ boost::type_traits::ice_eq<sizeof(Char), sizeof(char) >::value,
+ boost::is_same<Char, wchar_t>::value
+ >::value
+#else
+ boost::type_traits::ice_eq<sizeof(Char), sizeof(char) >::value
#endif
+ > result_type;
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- template<class CharT, class Traits, class Alloc>
- struct lcast_src_length< CharT, std::basic_string<CharT,Traits,Alloc> >
- {
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
+ BOOST_STATIC_CONSTANT(bool, value = (result_type::value) );
};
-#else
- template<>
- struct lcast_src_length< char, std::basic_string<char> >
- {
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
- static void check_coverage() {}
- };
-
-#ifndef BOOST_LCAST_NO_WCHAR_T
- template<>
- struct lcast_src_length< wchar_t, std::basic_string<wchar_t> >
+ }
+
+ namespace detail // lcast_src_length
+ {
+ // Return max. length of string representation of Source;
+ template< class Source // Source type of lexical_cast.
+ >
+ struct lcast_src_length
{
BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ // To check coverage, build the test with
+ // bjam --v2 profile optimization=off
static void check_coverage() {}
};
-#endif
-#endif
// Helper for integral types.
// Notes on length calculation:
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
BOOST_STATIC_CONSTANT(std::size_t, value =
std::numeric_limits<Source>::is_signed +
- std::numeric_limits<Source>::is_specialized + // == 1
+ std::numeric_limits<Source>::is_specialized + /* == 1 */
std::numeric_limits<Source>::digits10 * 2
);
#else
#endif
};
-#define BOOST_LCAST_DEF1(CharT, T) \
- template<> struct lcast_src_length<CharT, T> \
+#define BOOST_LCAST_DEF(T) \
+ template<> struct lcast_src_length<T> \
: lcast_src_length_integral<T> \
{ static void check_coverage() {} };
-#ifdef BOOST_LCAST_NO_WCHAR_T
-#define BOOST_LCAST_DEF(T) BOOST_LCAST_DEF1(char, T)
-#else
-#define BOOST_LCAST_DEF(T) \
- BOOST_LCAST_DEF1(char, T) \
- BOOST_LCAST_DEF1(wchar_t, T)
-#endif
-
BOOST_LCAST_DEF(short)
BOOST_LCAST_DEF(unsigned short)
BOOST_LCAST_DEF(int)
BOOST_LCAST_DEF(unsigned __int64)
BOOST_LCAST_DEF( __int64)
#endif
+#ifdef BOOST_HAS_INT128
+ BOOST_LCAST_DEF(boost::int128_type)
+ BOOST_LCAST_DEF(boost::uint128_type)
+#endif
#undef BOOST_LCAST_DEF
-#undef BOOST_LCAST_DEF1
#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
// Helper for floating point types.
};
template<>
- struct lcast_src_length<char,float>
+ struct lcast_src_length<float>
: lcast_src_length_floating<float>
{
static void check_coverage() {}
};
template<>
- struct lcast_src_length<char,double>
+ struct lcast_src_length<double>
: lcast_src_length_floating<double>
{
static void check_coverage() {}
};
template<>
- struct lcast_src_length<char,long double>
+ struct lcast_src_length<long double>
: lcast_src_length_floating<long double>
{
static void check_coverage() {}
};
-#ifndef BOOST_LCAST_NO_WCHAR_T
- template<>
- struct lcast_src_length<wchar_t,float>
- : lcast_src_length_floating<float>
- {
- static void check_coverage() {}
- };
-
- template<>
- struct lcast_src_length<wchar_t,double>
- : lcast_src_length_floating<double>
- {
- static void check_coverage() {}
- };
+#endif // #ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
+ }
- template<>
- struct lcast_src_length<wchar_t,long double>
- : lcast_src_length_floating<long double>
+ namespace detail // lexical_cast_stream_traits<Source, Target>
{
- static void check_coverage() {}
- };
+ template <class Source, class Target>
+ struct lexical_cast_stream_traits {
+ typedef BOOST_DEDUCED_TYPENAME boost::detail::array_to_pointer_decay<Source>::type src;
+ typedef BOOST_DEDUCED_TYPENAME boost::remove_cv<src>::type no_cv_src;
+
+ typedef boost::detail::deduce_source_char<no_cv_src> deduce_src_char_metafunc;
+ typedef BOOST_DEDUCED_TYPENAME deduce_src_char_metafunc::type src_char_t;
+ typedef BOOST_DEDUCED_TYPENAME boost::detail::deduce_target_char<Target>::type target_char_t;
+
+ typedef BOOST_DEDUCED_TYPENAME boost::detail::widest_char<
+ target_char_t, src_char_t
+ >::type char_type;
+
+#if !defined(BOOST_NO_CXX11_CHAR16_T) && defined(BOOST_NO_CXX11_UNICODE_LITERALS)
+ BOOST_STATIC_ASSERT_MSG(( !boost::is_same<char16_t, src_char_t>::value
+ && !boost::is_same<char16_t, target_char_t>::value),
+ "Your compiler does not have full support for char16_t" );
+#endif
+#if !defined(BOOST_NO_CXX11_CHAR32_T) && defined(BOOST_NO_CXX11_UNICODE_LITERALS)
+ BOOST_STATIC_ASSERT_MSG(( !boost::is_same<char32_t, src_char_t>::value
+ && !boost::is_same<char32_t, target_char_t>::value),
+ "Your compiler does not have full support for char32_t" );
+#endif
-#endif // #ifndef BOOST_LCAST_NO_WCHAR_T
-#endif // #ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
+ typedef BOOST_DEDUCED_TYPENAME boost::detail::deduce_char_traits<
+ char_type, Target, no_cv_src
+ >::type traits;
+
+ typedef boost::type_traits::ice_and<
+ boost::is_same<char, src_char_t>::value, // source is not a wide character based type
+ boost::type_traits::ice_ne<sizeof(char), sizeof(target_char_t) >::value, // target type is based on wide character
+ boost::type_traits::ice_not<
+ boost::detail::is_char_or_wchar<no_cv_src>::value // single character widening is optimized
+ >::value // and does not requires stringbuffer
+ > is_string_widening_required_t;
+
+ typedef boost::type_traits::ice_not< boost::type_traits::ice_or<
+ boost::is_integral<no_cv_src>::value,
+ boost::detail::is_this_float_conversion_optimized<no_cv_src, char_type >::value,
+ boost::detail::is_char_or_wchar<
+ BOOST_DEDUCED_TYPENAME deduce_src_char_metafunc::stage1_type // if we did not get character type at stage1
+ >::value // then we have no optimization for that type
+ >::value > is_source_input_not_optimized_t;
+
+ // If we have an optimized conversion for
+ // Source, we do not need to construct stringbuf.
+ BOOST_STATIC_CONSTANT(bool, requires_stringbuf =
+ (boost::type_traits::ice_or<
+ is_string_widening_required_t::value, is_source_input_not_optimized_t::value
+ >::value)
+ );
+
+ typedef boost::detail::lcast_src_length<no_cv_src> len_t;
+ };
}
- namespace detail // '0' and '-' constants
+ namespace detail // '0', '+' and '-' constants
{
- template<typename CharT> struct lcast_char_constants;
+ template < typename Char > struct lcast_char_constants;
template<>
struct lcast_char_constants<char>
{
BOOST_STATIC_CONSTANT(char, zero = '0');
BOOST_STATIC_CONSTANT(char, minus = '-');
+ BOOST_STATIC_CONSTANT(char, plus = '+');
+ BOOST_STATIC_CONSTANT(char, lowercase_e = 'e');
+ BOOST_STATIC_CONSTANT(char, capital_e = 'E');
+ BOOST_STATIC_CONSTANT(char, c_decimal_separator = '.');
};
#ifndef BOOST_LCAST_NO_WCHAR_T
{
BOOST_STATIC_CONSTANT(wchar_t, zero = L'0');
BOOST_STATIC_CONSTANT(wchar_t, minus = L'-');
+ BOOST_STATIC_CONSTANT(wchar_t, plus = L'+');
+ BOOST_STATIC_CONSTANT(wchar_t, lowercase_e = L'e');
+ BOOST_STATIC_CONSTANT(wchar_t, capital_e = L'E');
+ BOOST_STATIC_CONSTANT(wchar_t, c_decimal_separator = L'.');
};
#endif
- }
- namespace detail // lexical_streambuf_fake
- {
- struct lexical_streambuf_fake
- {
+#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
+ template<>
+ struct lcast_char_constants<char16_t>
+ {
+ BOOST_STATIC_CONSTANT(char16_t, zero = u'0');
+ BOOST_STATIC_CONSTANT(char16_t, minus = u'-');
+ BOOST_STATIC_CONSTANT(char16_t, plus = u'+');
+ BOOST_STATIC_CONSTANT(char16_t, lowercase_e = u'e');
+ BOOST_STATIC_CONSTANT(char16_t, capital_e = u'E');
+ BOOST_STATIC_CONSTANT(char16_t, c_decimal_separator = u'.');
+ };
+#endif
+
+#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
+ template<>
+ struct lcast_char_constants<char32_t>
+ {
+ BOOST_STATIC_CONSTANT(char32_t, zero = U'0');
+ BOOST_STATIC_CONSTANT(char32_t, minus = U'-');
+ BOOST_STATIC_CONSTANT(char32_t, plus = U'+');
+ BOOST_STATIC_CONSTANT(char32_t, lowercase_e = U'e');
+ BOOST_STATIC_CONSTANT(char32_t, capital_e = U'E');
+ BOOST_STATIC_CONSTANT(char32_t, c_decimal_separator = U'.');
};
+#endif
}
namespace detail // lcast_to_unsigned
{
-#if (defined _MSC_VER)
-# pragma warning( push )
-// C4146: unary minus operator applied to unsigned type, result still unsigned
-# pragma warning( disable : 4146 )
-#elif defined( __BORLANDC__ )
-# pragma option push -w-8041
-#endif
template<class T>
inline
- BOOST_DEDUCED_TYPENAME make_unsigned<T>::type lcast_to_unsigned(T value)
+ BOOST_DEDUCED_TYPENAME make_unsigned<T>::type lcast_to_unsigned(T value) BOOST_NOEXCEPT
{
- typedef BOOST_DEDUCED_TYPENAME make_unsigned<T>::type result_type;
- result_type uvalue = static_cast<result_type>(value);
- return value < 0 ? -uvalue : uvalue;
+ typedef BOOST_DEDUCED_TYPENAME boost::make_unsigned<T>::type result_type;
+ return static_cast<result_type>(
+ value < 0 ? 0u - static_cast<result_type>(value) : value
+ );
}
-#if (defined _MSC_VER)
-# pragma warning( pop )
-#elif defined( __BORLANDC__ )
-# pragma option pop
-#endif
}
namespace detail // lcast_put_unsigned
{
template<class Traits, class T, class CharT>
- CharT* lcast_put_unsigned(T n, CharT* finish)
+ CharT* lcast_put_unsigned(const T n_param, CharT* finish)
{
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
BOOST_STATIC_ASSERT(!std::numeric_limits<T>::is_signed);
#endif
-#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
- // TODO: use BOOST_NO_STD_LOCALE
- std::locale loc;
- typedef std::numpunct<CharT> numpunct;
- numpunct const& np = BOOST_USE_FACET(numpunct, loc);
- std::string const& grouping = np.grouping();
- std::string::size_type const grouping_size = grouping.size();
- CharT thousands_sep = grouping_size ? np.thousands_sep() : 0;
- std::string::size_type group = 0; // current group number
- char last_grp_size = grouping[0] <= 0 ? CHAR_MAX : grouping[0];
- // a) Since grouping is const, grouping[grouping.size()] returns 0.
- // b) It's safe to assume here and below that CHAR_MAX
- // is equivalent to unlimited grouping:
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(std::numeric_limits<T>::digits10 < CHAR_MAX);
-#endif
-
- char left = last_grp_size;
-#endif
-
typedef typename Traits::int_type int_type;
CharT const czero = lcast_char_constants<CharT>::zero;
int_type const zero = Traits::to_int_type(czero);
+ BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
+ (sizeof(int_type) > sizeof(T))
+ , int_type
+ , T
+ >::type n = n_param;
- do
- {
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
- if(left == 0)
- {
- ++group;
- if(group < grouping_size)
- {
- char const grp_size = grouping[group];
- last_grp_size = grp_size <= 0 ? CHAR_MAX : grp_size;
- }
+ std::locale loc;
+ if (loc != std::locale::classic()) {
+ typedef std::numpunct<CharT> numpunct;
+ numpunct const& np = BOOST_USE_FACET(numpunct, loc);
+ std::string const grouping = np.grouping();
+ std::string::size_type const grouping_size = grouping.size();
- left = last_grp_size;
- --finish;
- Traits::assign(*finish, thousands_sep);
- }
+ if ( grouping_size && grouping[0] > 0 )
+ {
- --left;
+#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+ // Check that ulimited group is unreachable:
+ BOOST_STATIC_ASSERT(std::numeric_limits<T>::digits10 < CHAR_MAX);
#endif
+ CharT thousands_sep = np.thousands_sep();
+ std::string::size_type group = 0; // current group number
+ char last_grp_size = grouping[0];
+ char left = last_grp_size;
- --finish;
- int_type const digit = static_cast<int_type>(n % 10U);
- Traits::assign(*finish, Traits::to_char_type(zero + digit));
- n /= 10;
- } while(n);
+ do
+ {
+ if(left == 0)
+ {
+ ++group;
+ if(group < grouping_size)
+ {
+ char const grp_size = grouping[group];
+ last_grp_size = grp_size <= 0 ? static_cast<char>(CHAR_MAX) : grp_size;
+ }
+
+ left = last_grp_size;
+ --finish;
+ Traits::assign(*finish, thousands_sep);
+ }
+
+ --left;
+
+ --finish;
+ int_type const digit = static_cast<int_type>(n % 10U);
+ Traits::assign(*finish, Traits::to_char_type(zero + digit));
+ n /= 10;
+ } while(n);
+ return finish;
+ }
+ }
+#endif
+ {
+ do
+ {
+ --finish;
+ int_type const digit = static_cast<int_type>(n % 10U);
+ Traits::assign(*finish, Traits::to_char_type(zero + digit));
+ n /= 10;
+ } while(n);
+ }
return finish;
}
}
- namespace detail // stream wrapper for handling lexical conversions
+ namespace detail // lcast_ret_unsigned
{
- template<typename Target, typename Source, typename Traits>
- class lexical_stream
+ template<class Traits, class T, class CharT>
+ inline bool lcast_ret_unsigned(T& value, const CharT* const begin, const CharT* end)
{
- private:
- typedef typename widest_char<
- typename stream_char<Target>::type,
- typename stream_char<Source>::type>::type char_type;
+#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+ BOOST_STATIC_ASSERT(!std::numeric_limits<T>::is_signed);
- typedef Traits traits_type;
+ // GCC when used with flag -std=c++0x may not have std::numeric_limits
+ // specializations for __int128 and unsigned __int128 types.
+ // Try compilation with -std=gnu++0x or -std=gnu++11.
+ //
+ // http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40856
+ BOOST_STATIC_ASSERT_MSG(std::numeric_limits<T>::is_specialized,
+ "std::numeric_limits are not specialized for integral type passed to boost::lexical_cast"
+ );
+#endif
+ CharT const czero = lcast_char_constants<CharT>::zero;
+ --end;
+ value = 0;
- public:
- lexical_stream(char_type* = 0, char_type* = 0)
- {
- stream.unsetf(std::ios::skipws);
- lcast_set_precision(stream, static_cast<Source*>(0), static_cast<Target*>(0) );
+ if (begin > end || *end < czero || *end >= czero + 10)
+ return false;
+ value = static_cast<T>(*end - czero);
+ --end;
+ T multiplier = 1;
+ bool multiplier_overflowed = false;
+
+#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
+ std::locale loc;
+ if (loc != std::locale::classic()) {
+ typedef std::numpunct<CharT> numpunct;
+ numpunct const& np = BOOST_USE_FACET(numpunct, loc);
+ std::string const& grouping = np.grouping();
+ std::string::size_type const grouping_size = grouping.size();
+
+ /* According to Programming languages - C++
+ * we MUST check for correct grouping
+ */
+ if (grouping_size && grouping[0] > 0)
+ {
+ unsigned char current_grouping = 0;
+ CharT const thousands_sep = np.thousands_sep();
+ char remained = static_cast<char>(grouping[current_grouping] - 1);
+ bool shall_we_return = true;
+
+ for(;end>=begin; --end)
+ {
+ if (remained) {
+ T const multiplier_10 = static_cast<T>(multiplier * 10);
+ if (multiplier_10 / 10 != multiplier) multiplier_overflowed = true;
+
+ T const dig_value = static_cast<T>(*end - czero);
+ T const new_sub_value = static_cast<T>(multiplier_10 * dig_value);
+
+ if (*end < czero || *end >= czero + 10
+ /* detecting overflow */
+ || (dig_value && new_sub_value / dig_value != multiplier_10)
+ || static_cast<T>((std::numeric_limits<T>::max)()-new_sub_value) < value
+ || (multiplier_overflowed && dig_value)
+ )
+ return false;
+
+ value = static_cast<T>(value + new_sub_value);
+ multiplier = static_cast<T>(multiplier * 10);
+ --remained;
+ } else {
+ if ( !Traits::eq(*end, thousands_sep) ) //|| begin == end ) return false;
+ {
+ /*
+ * According to Programming languages - C++
+ * Digit grouping is checked. That is, the positions of discarded
+ * separators is examined for consistency with
+ * use_facet<numpunct<charT> >(loc ).grouping()
+ *
+ * BUT what if there is no separators at all and grouping()
+ * is not empty? Well, we have no extraced separators, so we
+ * won`t check them for consistency. This will allow us to
+ * work with "C" locale from other locales
+ */
+ shall_we_return = false;
+ break;
+ } else {
+ if ( begin == end ) return false;
+ if (current_grouping < grouping_size-1 ) ++current_grouping;
+ remained = grouping[current_grouping];
+ }
+ }
+ }
+
+ if (shall_we_return) return true;
+ }
}
- ~lexical_stream()
+#endif
{
- #if defined(BOOST_NO_STRINGSTREAM)
- stream.freeze(false);
- #endif
+ while ( begin <= end )
+ {
+ T const multiplier_10 = static_cast<T>(multiplier * 10);
+ if (multiplier_10 / 10 != multiplier) multiplier_overflowed = true;
+
+ T const dig_value = static_cast<T>(*end - czero);
+ T const new_sub_value = static_cast<T>(multiplier_10 * dig_value);
+
+ if (*end < czero || *end >= czero + 10
+ /* detecting overflow */
+ || (dig_value && new_sub_value / dig_value != multiplier_10)
+ || static_cast<T>((std::numeric_limits<T>::max)()-new_sub_value) < value
+ || (multiplier_overflowed && dig_value)
+ )
+ return false;
+
+ value = static_cast<T>(value + new_sub_value);
+ multiplier = static_cast<T>(multiplier * 10);
+ --end;
+ }
}
- bool operator<<(const Source &input)
- {
- return !(stream << input).fail();
+ return true;
+ }
+ }
+
+ namespace detail
+ {
+ template <class CharT>
+ bool lc_iequal(const CharT* val, const CharT* lcase, const CharT* ucase, unsigned int len) BOOST_NOEXCEPT {
+ for( unsigned int i=0; i < len; ++i ) {
+ if ( val[i] != lcase[i] && val[i] != ucase[i] ) return false;
}
- template<typename InputStreamable>
- bool operator>>(InputStreamable &output)
+
+ return true;
+ }
+
+ /* Returns true and sets the correct value if found NaN or Inf. */
+ template <class CharT, class T>
+ inline bool parse_inf_nan_impl(const CharT* begin, const CharT* end, T& value
+ , const CharT* lc_NAN, const CharT* lc_nan
+ , const CharT* lc_INFINITY, const CharT* lc_infinity
+ , const CharT opening_brace, const CharT closing_brace) BOOST_NOEXCEPT
+ {
+ using namespace std;
+ if (begin == end) return false;
+ const CharT minus = lcast_char_constants<CharT>::minus;
+ const CharT plus = lcast_char_constants<CharT>::plus;
+ const int inifinity_size = 8;
+
+ bool has_minus = false;
+ /* Parsing +/- */
+ if( *begin == minus)
{
- return !is_pointer<InputStreamable>::value &&
- stream >> output &&
- stream.get() ==
-#if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
-// GCC 2.9x lacks std::char_traits<>::eof().
-// We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3
-// configurations, which do provide std::char_traits<>::eof().
-
- EOF;
-#else
- traits_type::eof();
-#endif
+ ++ begin;
+ has_minus = true;
}
+ else if( *begin == plus ) ++begin;
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ if( end-begin < 3 ) return false;
+ if( lc_iequal(begin, lc_nan, lc_NAN, 3) )
+ {
+ begin += 3;
+ if (end != begin) /* It is 'nan(...)' or some bad input*/
+ {
+ if(end-begin<2) return false; // bad input
+ -- end;
+ if( *begin != opening_brace || *end != closing_brace) return false; // bad input
+ }
- bool operator>>(std::string &output)
+ if( !has_minus ) value = std::numeric_limits<T>::quiet_NaN();
+ else value = (boost::math::changesign) (std::numeric_limits<T>::quiet_NaN());
+ return true;
+ } else
+ if (( /* 'INF' or 'inf' */
+ end-begin==3
+ &&
+ lc_iequal(begin, lc_infinity, lc_INFINITY, 3)
+ )
+ ||
+ ( /* 'INFINITY' or 'infinity' */
+ end-begin==inifinity_size
+ &&
+ lc_iequal(begin, lc_infinity, lc_INFINITY, inifinity_size)
+ )
+ )
{
- #if defined(BOOST_NO_STRINGSTREAM)
- stream << '\0';
- #endif
- stream.str().swap(output);
+ if( !has_minus ) value = std::numeric_limits<T>::infinity();
+ else value = (boost::math::changesign) (std::numeric_limits<T>::infinity());
return true;
}
- #ifndef BOOST_LCAST_NO_WCHAR_T
- bool operator>>(std::wstring &output)
+
+ return false;
+ }
+
+ template <class CharT, class T>
+ bool put_inf_nan_impl(CharT* begin, CharT*& end, const T& value
+ , const CharT* lc_nan
+ , const CharT* lc_infinity) BOOST_NOEXCEPT
+ {
+ using namespace std;
+ const CharT minus = lcast_char_constants<CharT>::minus;
+ if ( (boost::math::isnan)(value) )
{
- stream.str().swap(output);
+ if ( (boost::math::signbit)(value) )
+ {
+ *begin = minus;
+ ++ begin;
+ }
+
+ memcpy(begin, lc_nan, 3 * sizeof(CharT));
+ end = begin + 3;
+ return true;
+ } else if ( (boost::math::isinf)(value) )
+ {
+ if ( (boost::math::signbit)(value) )
+ {
+ *begin = minus;
+ ++ begin;
+ }
+
+ memcpy(begin, lc_infinity, 3 * sizeof(CharT));
+ end = begin + 3;
return true;
}
- #endif
+ return false;
+ }
+
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ template <class T>
+ bool parse_inf_nan(const wchar_t* begin, const wchar_t* end, T& value) BOOST_NOEXCEPT
+ {
+ return parse_inf_nan_impl(begin, end, value
+ , L"NAN", L"nan"
+ , L"INFINITY", L"infinity"
+ , L'(', L')');
+ }
+
+ template <class T>
+ bool put_inf_nan(wchar_t* begin, wchar_t*& end, const T& value) BOOST_NOEXCEPT
+ {
+ return put_inf_nan_impl(begin, end, value, L"nan", L"infinity");
+ }
+
+#endif
+#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
+ template <class T>
+ bool parse_inf_nan(const char16_t* begin, const char16_t* end, T& value) BOOST_NOEXCEPT
+ {
+ return parse_inf_nan_impl(begin, end, value
+ , u"NAN", u"nan"
+ , u"INFINITY", u"infinity"
+ , u'(', u')');
+ }
+
+ template <class T>
+ bool put_inf_nan(char16_t* begin, char16_t*& end, const T& value) BOOST_NOEXCEPT
+ {
+ return put_inf_nan_impl(begin, end, value, u"nan", u"infinity");
+ }
+#endif
+#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
+ template <class T>
+ bool parse_inf_nan(const char32_t* begin, const char32_t* end, T& value) BOOST_NOEXCEPT
+ {
+ return parse_inf_nan_impl(begin, end, value
+ , U"NAN", U"nan"
+ , U"INFINITY", U"infinity"
+ , U'(', U')');
+ }
+
+ template <class T>
+ bool put_inf_nan(char32_t* begin, char32_t*& end, const T& value) BOOST_NOEXCEPT
+ {
+ return put_inf_nan_impl(begin, end, value, U"nan", U"infinity");
+ }
+#endif
+
+ template <class CharT, class T>
+ bool parse_inf_nan(const CharT* begin, const CharT* end, T& value) BOOST_NOEXCEPT
+ {
+ return parse_inf_nan_impl(begin, end, value
+ , "NAN", "nan"
+ , "INFINITY", "infinity"
+ , '(', ')');
+ }
+
+ template <class CharT, class T>
+ bool put_inf_nan(CharT* begin, CharT*& end, const T& value) BOOST_NOEXCEPT
+ {
+ return put_inf_nan_impl(begin, end, value, "nan", "infinity");
+ }
+ }
+
+
+ namespace detail // lcast_ret_float
+ {
+
+// Silence buggy MS warnings like C4244: '+=' : conversion from 'int' to 'unsigned short', possible loss of data
+#if defined(_MSC_VER) && (_MSC_VER == 1400)
+# pragma warning(push)
+# pragma warning(disable:4244)
+#endif
+ template <class T>
+ struct mantissa_holder_type
+ {
+ /* Can not be used with this type */
+ };
+
+ template <>
+ struct mantissa_holder_type<float>
+ {
+ typedef unsigned int type;
+ typedef double wide_result_t;
+ };
+
+ template <>
+ struct mantissa_holder_type<double>
+ {
+#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+ typedef long double wide_result_t;
+#if defined(BOOST_HAS_LONG_LONG)
+ typedef boost::ulong_long_type type;
+#elif defined(BOOST_HAS_MS_INT64)
+ typedef unsigned __int64 type;
+#endif
+#endif
+ };
+
+ template<class Traits, class T, class CharT>
+ inline bool lcast_ret_float(T& value, const CharT* begin, const CharT* end)
+ {
+
+#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
+ std::locale loc;
+ typedef std::numpunct<CharT> numpunct;
+ numpunct const& np = BOOST_USE_FACET(numpunct, loc);
+ std::string const grouping(
+ (loc == std::locale::classic())
+ ? std::string()
+ : np.grouping()
+ );
+ std::string::size_type const grouping_size = grouping.size();
+ CharT const thousands_sep = static_cast<CharT>(grouping_size ? np.thousands_sep() : 0);
+ CharT const decimal_point = np.decimal_point();
+ bool found_grouping = false;
+ std::string::size_type last_grouping_pos = grouping_size - 1;
#else
- bool operator>>(std::basic_string<char_type,traits_type>& output)
- {
- stream.str().swap(output);
- return true;
+ CharT const decimal_point = lcast_char_constants<CharT>::c_decimal_separator;
+#endif
+
+ CharT const czero = lcast_char_constants<CharT>::zero;
+ CharT const minus = lcast_char_constants<CharT>::minus;
+ CharT const plus = lcast_char_constants<CharT>::plus;
+ CharT const capital_e = lcast_char_constants<CharT>::capital_e;
+ CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
+
+ value = static_cast<T>(0);
+
+ if (parse_inf_nan(begin, end, value)) return true;
+
+ typedef typename Traits::int_type int_type;
+ typedef BOOST_DEDUCED_TYPENAME mantissa_holder_type<T>::type mantissa_type;
+ typedef BOOST_DEDUCED_TYPENAME mantissa_holder_type<T>::wide_result_t wide_result_t;
+ int_type const zero = Traits::to_int_type(czero);
+ if (begin == end) return false;
+
+ /* Getting the plus/minus sign */
+ bool has_minus = false;
+ if (Traits::eq(*begin, minus) ) {
+ ++ begin;
+ has_minus = true;
+ if (begin == end) return false;
+ } else if (Traits::eq(*begin, plus) ) {
+ ++begin;
+ if (begin == end) return false;
}
- template<class Alloc>
- bool operator>>(std::basic_string<char_type,traits_type,Alloc>& out)
+ bool found_decimal = false;
+ bool found_number_before_exp = false;
+ int pow_of_10 = 0;
+ mantissa_type mantissa=0;
+ bool is_mantissa_full = false;
+
+ char length_since_last_delim = 0;
+
+ while ( begin != end )
{
- std::basic_string<char_type,traits_type> str(stream.str());
- out.assign(str.begin(), str.end());
- return true;
+ if (found_decimal) {
+ /* We allow no thousand_separators after decimal point */
+
+ mantissa_type tmp_mantissa = mantissa * 10u;
+ if (Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) break;
+ if ( *begin < czero || *begin >= czero + 10 ) return false;
+ if ( is_mantissa_full
+ || tmp_mantissa / 10u != mantissa
+ || (std::numeric_limits<mantissa_type>::max)()-(*begin - zero) < tmp_mantissa
+ ) {
+ is_mantissa_full = true;
+ ++ begin;
+ continue;
+ }
+
+ -- pow_of_10;
+ mantissa = tmp_mantissa;
+ mantissa += *begin - zero;
+
+ found_number_before_exp = true;
+ } else {
+
+ if (*begin >= czero && *begin < czero + 10) {
+
+ /* Checking for mantissa overflow. If overflow will
+ * occur, them we only increase multiplyer
+ */
+ mantissa_type tmp_mantissa = mantissa * 10u;
+ if( !is_mantissa_full
+ && tmp_mantissa / 10u == mantissa
+ && (std::numeric_limits<mantissa_type>::max)()-(*begin - zero) >= tmp_mantissa
+ )
+ {
+ mantissa = tmp_mantissa;
+ mantissa += *begin - zero;
+ } else
+ {
+ is_mantissa_full = true;
+ ++ pow_of_10;
+ }
+
+ found_number_before_exp = true;
+ ++ length_since_last_delim;
+ } else if (Traits::eq(*begin, decimal_point) || Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) {
+#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
+ /* If ( we need to check grouping
+ * and ( grouping missmatches
+ * or grouping position is incorrect
+ * or we are using the grouping position 0 twice
+ * )
+ * ) then return error
+ */
+ if( grouping_size && found_grouping
+ && (
+ length_since_last_delim != grouping[0]
+ || last_grouping_pos>1
+ || (last_grouping_pos==0 && grouping_size>1)
+ )
+ ) return false;
+#endif
+
+ if(Traits::eq(*begin, decimal_point)) {
+ ++ begin;
+ found_decimal = true;
+ if (!found_number_before_exp && begin==end) return false;
+ continue;
+ }else {
+ if (!found_number_before_exp) return false;
+ break;
+ }
+ }
+#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
+ else if (grouping_size && Traits::eq(*begin, thousands_sep)){
+ if(found_grouping)
+ {
+ /* It is not he first time, when we find thousands separator,
+ * so we need to chek, is the distance between two groupings
+ * equal to grouping[last_grouping_pos] */
+
+ if (length_since_last_delim != grouping[last_grouping_pos] )
+ {
+ if (!last_grouping_pos) return false;
+ else
+ {
+ -- last_grouping_pos;
+ if (length_since_last_delim != grouping[last_grouping_pos]) return false;
+ }
+ } else
+ /* We are calling the grouping[0] twice, when grouping size is more than 1 */
+ if (grouping_size>1u && last_grouping_pos+1<grouping_size) return false;
+
+ } else {
+ /* Delimiter at the begining ',000' */
+ if (!length_since_last_delim) return false;
+
+ found_grouping = true;
+ if (length_since_last_delim > grouping[last_grouping_pos] ) return false;
+ }
+
+ length_since_last_delim = 0;
+ ++ begin;
+
+ /* Delimiter at the end '100,' */
+ if (begin == end) return false;
+ continue;
+ }
+#endif
+ else return false;
+ }
+
+ ++begin;
}
+
+ // Exponent found
+ if ( begin != end && (Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) ) {
+ ++ begin;
+ if ( begin == end ) return false;
+
+ bool exp_has_minus = false;
+ if(Traits::eq(*begin, minus)) {
+ exp_has_minus = true;
+ ++ begin;
+ if ( begin == end ) return false;
+ } else if (Traits::eq(*begin, plus)) {
+ ++ begin;
+ if ( begin == end ) return false;
+ }
+
+ int exp_pow_of_10 = 0;
+ while ( begin != end )
+ {
+ if ( *begin < czero
+ || *begin >= czero + 10
+ || exp_pow_of_10 * 10 < exp_pow_of_10) /* Overflows are checked lower more precisely*/
+ return false;
+
+ exp_pow_of_10 *= 10;
+ exp_pow_of_10 += *begin - zero;
+ ++ begin;
+ };
+
+ if ( exp_pow_of_10 ) {
+ /* Overflows are checked lower */
+ if ( exp_has_minus ) {
+ pow_of_10 -= exp_pow_of_10;
+ } else {
+ pow_of_10 += exp_pow_of_10;
+ }
+ }
+ }
+
+ /* We need a more accurate algorithm... We can not use current algorithm
+ * with long doubles (and with doubles if sizeof(double)==sizeof(long double)).
+ */
+ const wide_result_t result = std::pow(static_cast<wide_result_t>(10.0), pow_of_10) * mantissa;
+ value = static_cast<T>( has_minus ? (boost::math::changesign)(result) : result);
+
+ if ( (boost::math::isinf)(value) || (boost::math::isnan)(value) ) return false;
+
+ return true;
+ }
+// Unsilence buggy MS warnings like C4244: '+=' : conversion from 'int' to 'unsigned short', possible loss of data
+#if defined(_MSC_VER) && (_MSC_VER == 1400)
+# pragma warning(pop)
+#endif
+ }
+
+ namespace detail // parser_buf
+ {
+ //
+ // class parser_buf:
+ // acts as a stream buffer which wraps around a pair of pointers
+ //
+ // This class is copied (and slightly changed) from
+ // boost/regex/v4/cpp_regex_traits.hpp
+ // Thanks John Maddock for it! (previous version had some
+ // problems with libc++ and some other STL implementations)
+ template <class BufferType, class charT>
+ class parser_buf : public BufferType {
+ typedef BufferType base_type;
+ typedef typename base_type::int_type int_type;
+ typedef typename base_type::char_type char_type;
+ typedef typename base_type::pos_type pos_type;
+ typedef ::std::streamsize streamsize;
+ typedef typename base_type::off_type off_type;
+
+ public:
+ parser_buf() : base_type() { setbuf(0, 0); }
+ const charT* getnext() { return this->gptr(); }
+#ifndef BOOST_NO_USING_TEMPLATE
+ using base_type::pptr;
+ using base_type::pbase;
+#else
+ charT* pptr() const { return base_type::pptr(); }
+ charT* pbase() const { return base_type::pbase(); }
+#endif
+ base_type* setbuf(char_type* s, streamsize n) {
+ this->setg(s, s, s + n);
+ return this;
+ }
+
+ pos_type seekpos(pos_type sp, ::std::ios_base::openmode which) {
+ if(which & ::std::ios_base::out)
+ return pos_type(off_type(-1));
+ off_type size = static_cast<off_type>(this->egptr() - this->eback());
+ charT* g = this->eback();
+ if(off_type(sp) <= size)
+ {
+ this->setg(g, g + off_type(sp), g + size);
+ }
+ return pos_type(off_type(-1));
+ }
+
+ pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which) {
+ typedef typename boost::int_t<sizeof(way) * CHAR_BIT>::least cast_type;
+
+ if(which & ::std::ios_base::out)
+ return pos_type(off_type(-1));
+ std::ptrdiff_t size = this->egptr() - this->eback();
+ std::ptrdiff_t pos = this->gptr() - this->eback();
+ charT* g = this->eback();
+ switch(static_cast<cast_type>(way))
+ {
+ case ::std::ios_base::beg:
+ if((off < 0) || (off > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + off, g + size);
+ break;
+ case ::std::ios_base::end:
+ if((off < 0) || (off > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + size - off, g + size);
+ break;
+ case ::std::ios_base::cur:
+ {
+ std::ptrdiff_t newpos = static_cast<std::ptrdiff_t>(pos + off);
+ if((newpos < 0) || (newpos > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + newpos, g + size);
+ break;
+ }
+ default: ;
+ }
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
#endif
+ return static_cast<pos_type>(this->gptr() - this->eback());
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+ }
private:
- #if defined(BOOST_NO_STRINGSTREAM)
- std::strstream stream;
- #elif defined(BOOST_NO_STD_LOCALE)
- std::stringstream stream;
- #else
- std::basic_stringstream<char_type,traits_type> stream;
- #endif
+ parser_buf& operator=(const parser_buf&);
+ parser_buf(const parser_buf&);
};
}
+ namespace detail
+ {
+ struct do_not_construct_out_stream_t{};
+ }
+
namespace detail // optimized stream wrapper
{
// String representation of Source has an upper limit.
template< class CharT // a result of widest_char transformation
- , class Base // lexical_streambuf_fake or basic_streambuf<CharT>
, class Traits // usually char_traits<CharT>
+ , bool RequiresStringbuffer
>
- class lexical_stream_limited_src : public Base
+ class lexical_stream_limited_src
{
+
+#if defined(BOOST_NO_STRINGSTREAM)
+ typedef std::ostrstream out_stream_t;
+#elif defined(BOOST_NO_STD_LOCALE)
+ typedef std::ostringstream out_stream_t;
+ typedef parser_buf<std::streambuf, char> buffer_t;
+#else
+ typedef std::basic_ostringstream<CharT, Traits> out_stream_t;
+ typedef parser_buf<std::basic_streambuf<CharT, Traits>, CharT> buffer_t;
+#endif
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
+ RequiresStringbuffer,
+ out_stream_t,
+ do_not_construct_out_stream_t
+ >::type deduced_out_stream_t;
+
// A string representation of Source is written to [start, finish).
- // Currently, it is assumed that [start, finish) is big enough
- // to hold a string representation of any Source value.
CharT* start;
CharT* finish;
+ deduced_out_stream_t out_stream;
+
+ public:
+ lexical_stream_limited_src(CharT* sta, CharT* fin) BOOST_NOEXCEPT
+ : start(sta)
+ , finish(fin)
+ {}
private:
+ // Undefined:
+ lexical_stream_limited_src(lexical_stream_limited_src const&);
+ void operator=(lexical_stream_limited_src const&);
- static void widen_and_assign(char*p, char ch)
+/************************************ HELPER FUNCTIONS FOR OPERATORS << ( ... ) ********************************/
+ bool shl_char(CharT ch) BOOST_NOEXCEPT
{
- Traits::assign(*p, ch);
+ Traits::assign(*start, ch);
+ finish = start + 1;
+ return true;
}
#ifndef BOOST_LCAST_NO_WCHAR_T
- static void widen_and_assign(wchar_t* p, char ch)
+ template <class T>
+ bool shl_char(T ch)
{
- // TODO: use BOOST_NO_STD_LOCALE
+ BOOST_STATIC_ASSERT_MSG(( sizeof(T) <= sizeof(CharT)) ,
+ "boost::lexical_cast does not support narrowing of char types."
+ "Use boost::locale instead" );
+#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
std::locale loc;
- wchar_t w = BOOST_USE_FACET(std::ctype<wchar_t>, loc).widen(ch);
- Traits::assign(*p, w);
+ CharT const w = BOOST_USE_FACET(std::ctype<CharT>, loc).widen(ch);
+#else
+ CharT const w = static_cast<CharT>(ch);
+#endif
+ Traits::assign(*start, w);
+ finish = start + 1;
+ return true;
+ }
+#endif
+
+ bool shl_char_array(CharT const* str) BOOST_NOEXCEPT
+ {
+ start = const_cast<CharT*>(str);
+ finish = start + Traits::length(str);
+ return true;
}
- static void widen_and_assign(wchar_t* p, wchar_t ch)
+ template <class T>
+ bool shl_char_array(T const* str)
+ {
+ BOOST_STATIC_ASSERT_MSG(( sizeof(T) <= sizeof(CharT)),
+ "boost::lexical_cast does not support narrowing of char types."
+ "Use boost::locale instead" );
+ return shl_input_streamable(str);
+ }
+
+ bool shl_char_array_limited(CharT const* str, std::size_t max_size) BOOST_NOEXCEPT
{
- Traits::assign(*p, ch);
+ start = const_cast<CharT*>(str);
+ finish = std::find(start, start + max_size, Traits::to_char_type(0));
+ return true;
}
- static void widen_and_assign(char*, wchar_t ch); // undefined
+ template<typename InputStreamable>
+ bool shl_input_streamable(InputStreamable& input)
+ {
+#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_LOCALE)
+ // If you have compilation error at this point, than your STL library
+ // does not support such conversions. Try updating it.
+ BOOST_STATIC_ASSERT((boost::is_same<char, CharT>::value));
#endif
- template<class OutputStreamable>
- bool lcast_put(const OutputStreamable& input)
- {
- this->setp(start, finish);
- std::basic_ostream<CharT> stream(static_cast<Base*>(this));
- lcast_set_precision(stream, static_cast<OutputStreamable*>(0));
- bool const result = !(stream << input).fail();
- finish = this->pptr();
+#ifndef BOOST_NO_EXCEPTIONS
+ out_stream.exceptions(std::ios::badbit);
+ try {
+#endif
+ bool const result = !(out_stream << input).fail();
+ const buffer_t* const p = static_cast<buffer_t*>(
+ static_cast<std::basic_streambuf<CharT, Traits>*>(out_stream.rdbuf())
+ );
+ start = p->pbase();
+ finish = p->pptr();
return result;
+#ifndef BOOST_NO_EXCEPTIONS
+ } catch (const ::std::ios_base::failure& /*f*/) {
+ return false;
+ }
+#endif
}
- // Undefined:
- lexical_stream_limited_src(lexical_stream_limited_src const&);
- void operator=(lexical_stream_limited_src const&);
+ template <class T>
+ inline bool shl_signed(T n)
+ {
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
+ if(n < 0)
+ {
+ --start;
+ CharT const minus = lcast_char_constants<CharT>::minus;
+ Traits::assign(*start, minus);
+ }
+ return true;
+ }
- public:
+ template <class T, class SomeCharT>
+ bool shl_real_type(const T& val, SomeCharT* begin, SomeCharT*& end)
+ {
+ if (put_inf_nan(begin, end, val)) return true;
+ lcast_set_precision(out_stream, &val);
+ return shl_input_streamable(val);
+ }
- lexical_stream_limited_src(CharT* sta, CharT* fin)
- : start(sta)
- , finish(fin)
- {}
+ static bool shl_real_type(float val, char* begin, char*& end)
+ { using namespace std;
+ if (put_inf_nan(begin, end, val)) return true;
+ const double val_as_double = val;
+ end = begin +
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+ sprintf_s(begin, end-begin,
+#else
+ sprintf(begin,
+#endif
+ "%.*g", static_cast<int>(boost::detail::lcast_get_precision<float>()), val_as_double);
+ return end > begin;
+ }
- public: // output
+ static bool shl_real_type(double val, char* begin, char*& end)
+ { using namespace std;
+ if (put_inf_nan(begin, end, val)) return true;
+ end = begin +
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+ sprintf_s(begin, end-begin,
+#else
+ sprintf(begin,
+#endif
+ "%.*g", static_cast<int>(boost::detail::lcast_get_precision<double>()), val);
+ return end > begin;
+ }
+
+#ifndef __MINGW32__
+ static bool shl_real_type(long double val, char* begin, char*& end)
+ { using namespace std;
+ if (put_inf_nan(begin, end, val)) return true;
+ end = begin +
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+ sprintf_s(begin, end-begin,
+#else
+ sprintf(begin,
+#endif
+ "%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double>()), val );
+ return end > begin;
+ }
+#endif
+
+#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_SWPRINTF) && !defined(__MINGW32__)
+ static bool shl_real_type(float val, wchar_t* begin, wchar_t*& end)
+ { using namespace std;
+ if (put_inf_nan(begin, end, val)) return true;
+ const double val_as_double = val;
+ end = begin + swprintf(begin, end-begin,
+ L"%.*g",
+ static_cast<int>(boost::detail::lcast_get_precision<float >()),
+ val_as_double );
+ return end > begin;
+ }
+
+ static bool shl_real_type(double val, wchar_t* begin, wchar_t*& end)
+ { using namespace std;
+ if (put_inf_nan(begin, end, val)) return true;
+ end = begin + swprintf(begin, end-begin,
+ L"%.*g", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
+ return end > begin;
+ }
+
+ static bool shl_real_type(long double val, wchar_t* begin, wchar_t*& end)
+ { using namespace std;
+ if (put_inf_nan(begin, end, val)) return true;
+ end = begin + swprintf(begin, end-begin,
+ L"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
+ return end > begin;
+ }
+#endif
+
+/************************************ OPERATORS << ( ... ) ********************************/
+ public:
template<class Alloc>
- bool operator<<(std::basic_string<CharT,Traits,Alloc> const& str)
+ bool operator<<(std::basic_string<CharT,Traits,Alloc> const& str) BOOST_NOEXCEPT
{
start = const_cast<CharT*>(str.data());
finish = start + str.length();
return true;
}
- bool operator<<(bool);
- bool operator<<(char);
-#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
- bool operator<<(wchar_t);
-#endif
- bool operator<<(CharT const*);
- bool operator<<(short);
- bool operator<<(int);
- bool operator<<(long);
- bool operator<<(unsigned short);
- bool operator<<(unsigned int);
- bool operator<<(unsigned long);
+ template<class Alloc>
+ bool operator<<(boost::container::basic_string<CharT,Traits,Alloc> const& str) BOOST_NOEXCEPT
+ {
+ start = const_cast<CharT*>(str.data());
+ finish = start + str.length();
+ return true;
+ }
+
+ bool operator<<(bool value) BOOST_NOEXCEPT
+ {
+ CharT const czero = lcast_char_constants<CharT>::zero;
+ Traits::assign(*start, Traits::to_char_type(czero + value));
+ finish = start + 1;
+ return true;
+ }
+
+ bool operator<<(const iterator_range<CharT*>& rng) BOOST_NOEXCEPT
+ {
+ start = rng.begin();
+ finish = rng.end();
+ return true;
+ }
+
+ bool operator<<(const iterator_range<const CharT*>& rng) BOOST_NOEXCEPT
+ {
+ start = const_cast<CharT*>(rng.begin());
+ finish = const_cast<CharT*>(rng.end());
+ return true;
+ }
+
+ bool operator<<(const iterator_range<const signed char*>& rng) BOOST_NOEXCEPT
+ {
+ return (*this) << iterator_range<char*>(
+ const_cast<char*>(reinterpret_cast<const char*>(rng.begin())),
+ const_cast<char*>(reinterpret_cast<const char*>(rng.end()))
+ );
+ }
+
+ bool operator<<(const iterator_range<const unsigned char*>& rng) BOOST_NOEXCEPT
+ {
+ return (*this) << iterator_range<char*>(
+ const_cast<char*>(reinterpret_cast<const char*>(rng.begin())),
+ const_cast<char*>(reinterpret_cast<const char*>(rng.end()))
+ );
+ }
+
+ bool operator<<(const iterator_range<signed char*>& rng) BOOST_NOEXCEPT
+ {
+ return (*this) << iterator_range<char*>(
+ reinterpret_cast<char*>(rng.begin()),
+ reinterpret_cast<char*>(rng.end())
+ );
+ }
+
+ bool operator<<(const iterator_range<unsigned char*>& rng) BOOST_NOEXCEPT
+ {
+ return (*this) << iterator_range<char*>(
+ reinterpret_cast<char*>(rng.begin()),
+ reinterpret_cast<char*>(rng.end())
+ );
+ }
+
+ bool operator<<(char ch) { return shl_char(ch); }
+ bool operator<<(unsigned char ch) { return ((*this) << static_cast<char>(ch)); }
+ bool operator<<(signed char ch) { return ((*this) << static_cast<char>(ch)); }
+#if !defined(BOOST_LCAST_NO_WCHAR_T)
+ bool operator<<(wchar_t const* str) { return shl_char_array(str); }
+ bool operator<<(wchar_t * str) { return shl_char_array(str); }
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+ bool operator<<(wchar_t ch) { return shl_char(ch); }
+#endif
+#endif
+#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
+ bool operator<<(char16_t ch) { return shl_char(ch); }
+ bool operator<<(char16_t * str) { return shl_char_array(str); }
+ bool operator<<(char16_t const * str) { return shl_char_array(str); }
+#endif
+#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
+ bool operator<<(char32_t ch) { return shl_char(ch); }
+ bool operator<<(char32_t * str) { return shl_char_array(str); }
+ bool operator<<(char32_t const * str) { return shl_char_array(str); }
+#endif
+ bool operator<<(unsigned char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
+ bool operator<<(unsigned char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
+ bool operator<<(signed char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
+ bool operator<<(signed char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
+ bool operator<<(char const* str) { return shl_char_array(str); }
+ bool operator<<(char* str) { return shl_char_array(str); }
+ bool operator<<(short n) { return shl_signed(n); }
+ bool operator<<(int n) { return shl_signed(n); }
+ bool operator<<(long n) { return shl_signed(n); }
+ bool operator<<(unsigned short n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
+ bool operator<<(unsigned int n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
+ bool operator<<(unsigned long n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
+
#if defined(BOOST_HAS_LONG_LONG)
- bool operator<<(boost::ulong_long_type);
- bool operator<<(boost::long_long_type );
+ bool operator<<(boost::ulong_long_type n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
+ bool operator<<(boost::long_long_type n) { return shl_signed(n); }
#elif defined(BOOST_HAS_MS_INT64)
- bool operator<<(unsigned __int64);
- bool operator<<( __int64);
+ bool operator<<(unsigned __int64 n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
+ bool operator<<( __int64 n) { return shl_signed(n); }
#endif
- // These three operators use ostream and streambuf.
- // lcast_streambuf_for_source<T>::value is true.
- bool operator<<(float);
- bool operator<<(double);
- bool operator<<(long double);
- public: // input
+#ifdef BOOST_HAS_INT128
+ bool operator<<(const boost::uint128_type& n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
+ bool operator<<(const boost::int128_type& n) { return shl_signed(n); }
+#endif
+
+ bool operator<<(float val) { return shl_real_type(val, start, finish); }
+ bool operator<<(double val) { return shl_real_type(val, start, finish); }
+ bool operator<<(long double val) {
+#ifndef __MINGW32__
+ return shl_real_type(val, start, finish);
+#else
+ return shl_real_type(static_cast<double>(val), start, finish);
+#endif
+ }
+
+ template <std::size_t N>
+ bool operator<<(boost::array<CharT, N> const& input) BOOST_NOEXCEPT
+ { return shl_char_array_limited(input.begin(), N); }
+
+ template <std::size_t N>
+ bool operator<<(boost::array<unsigned char, N> const& input) BOOST_NOEXCEPT
+ { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
+
+ template <std::size_t N>
+ bool operator<<(boost::array<signed char, N> const& input) BOOST_NOEXCEPT
+ { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
+
+ template <std::size_t N>
+ bool operator<<(boost::array<const CharT, N> const& input) BOOST_NOEXCEPT
+ { return shl_char_array_limited(input.begin(), N); }
+
+ template <std::size_t N>
+ bool operator<<(boost::array<const unsigned char, N> const& input) BOOST_NOEXCEPT
+ { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
+
+ template <std::size_t N>
+ bool operator<<(boost::array<const signed char, N> const& input) BOOST_NOEXCEPT
+ { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
+
+#ifndef BOOST_NO_CXX11_HDR_ARRAY
+ template <std::size_t N>
+ bool operator<<(std::array<CharT, N> const& input) BOOST_NOEXCEPT
+ {
+ if (input.size()) return shl_char_array_limited(&input[0], N);
+ else return true;
+ }
+
+ template <std::size_t N>
+ bool operator<<(std::array<unsigned char, N> const& input) BOOST_NOEXCEPT
+ { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
+
+ template <std::size_t N>
+ bool operator<<(std::array<signed char, N> const& input) BOOST_NOEXCEPT
+ { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
+
+ template <std::size_t N>
+ bool operator<<(std::array<const CharT, N> const& input) BOOST_NOEXCEPT
+ {
+ if (input.size()) return shl_char_array_limited(&input[0], N);
+ else return true;
+ }
+
+ template <std::size_t N>
+ bool operator<<(std::array<const unsigned char, N> const& input) BOOST_NOEXCEPT
+ { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
+
+ template <std::size_t N>
+ bool operator<<(std::array<const signed char, N> const& input) BOOST_NOEXCEPT
+ { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
+#endif
+
+ template <class InStreamable>
+ bool operator<<(const InStreamable& input) { return shl_input_streamable(input); }
+
+/************************************ HELPER FUNCTIONS FOR OPERATORS >> ( ... ) ********************************/
+ private:
+
+ template <typename Type>
+ bool shr_unsigned(Type& output)
+ {
+ if (start == finish) return false;
+ CharT const minus = lcast_char_constants<CharT>::minus;
+ CharT const plus = lcast_char_constants<CharT>::plus;
+ bool has_minus = false;
+
+ /* We won`t use `start' any more, so no need in decrementing it after */
+ if ( Traits::eq(minus,*start) )
+ {
+ ++start;
+ has_minus = true;
+ } else if ( Traits::eq( plus, *start ) )
+ {
+ ++start;
+ }
+
+ bool const succeed = lcast_ret_unsigned<Traits>(output, start, finish);
+
+ if (has_minus) {
+ output = static_cast<Type>(0u - output);
+ }
+
+ return succeed;
+ }
+
+ template <typename Type>
+ bool shr_signed(Type& output)
+ {
+ if (start == finish) return false;
+ CharT const minus = lcast_char_constants<CharT>::minus;
+ CharT const plus = lcast_char_constants<CharT>::plus;
+ typedef BOOST_DEDUCED_TYPENAME make_unsigned<Type>::type utype;
+ utype out_tmp =0;
+ bool has_minus = false;
+
+ /* We won`t use `start' any more, so no need in decrementing it after */
+ if ( Traits::eq(minus,*start) )
+ {
+ ++start;
+ has_minus = true;
+ } else if ( Traits::eq(plus, *start) )
+ {
+ ++start;
+ }
+
+ bool succeed = lcast_ret_unsigned<Traits>(out_tmp, start, finish);
+ if (has_minus) {
+ utype const comp_val = (static_cast<utype>(1) << std::numeric_limits<Type>::digits);
+ succeed = succeed && out_tmp<=comp_val;
+ output = static_cast<Type>(0u - out_tmp);
+ } else {
+ utype const comp_val = static_cast<utype>((std::numeric_limits<Type>::max)());
+ succeed = succeed && out_tmp<=comp_val;
+ output = out_tmp;
+ }
+ return succeed;
+ }
- // Generic istream-based algorithm.
- // lcast_streambuf_for_target<InputStreamable>::value is true.
template<typename InputStreamable>
- bool operator>>(InputStreamable& output)
+ bool shr_using_base_class(InputStreamable& output)
{
-#if (defined _MSC_VER)
-# pragma warning( push )
- // conditional expression is constant
-# pragma warning( disable : 4127 )
+ BOOST_STATIC_ASSERT_MSG(
+ (!boost::is_pointer<InputStreamable>::value),
+ "boost::lexical_cast can not convert to pointers"
+ );
+
+#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_LOCALE)
+ BOOST_STATIC_ASSERT_MSG((boost::is_same<char, CharT>::value),
+ "boost::lexical_cast can not convert, because your STL library does not "
+ "support such conversions. Try updating it."
+ );
#endif
- if(is_pointer<InputStreamable>::value)
- return false;
- this->setg(start, start, finish);
- std::basic_istream<CharT> stream(static_cast<Base*>(this));
+#if defined(BOOST_NO_STRINGSTREAM)
+ std::istrstream stream(start, finish - start);
+#else
+
+ buffer_t buf;
+ buf.setbuf(start, finish - start);
+#if defined(BOOST_NO_STD_LOCALE)
+ std::istream stream(&buf);
+#else
+ std::basic_istream<CharT, Traits> stream(&buf);
+#endif // BOOST_NO_STD_LOCALE
+#endif // BOOST_NO_STRINGSTREAM
+
+#ifndef BOOST_NO_EXCEPTIONS
+ stream.exceptions(std::ios::badbit);
+ try {
+#endif
stream.unsetf(std::ios::skipws);
lcast_set_precision(stream, static_cast<InputStreamable*>(0));
-#if (defined _MSC_VER)
-# pragma warning( pop )
-#endif
+
return stream >> output &&
stream.get() ==
#if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
#else
Traits::eof();
#endif
+
+#ifndef BOOST_NO_EXCEPTIONS
+ } catch (const ::std::ios_base::failure& /*f*/) {
+ return false;
+ }
+#endif
+ }
+
+ template<class T>
+ inline bool shr_xchar(T& output)
+ {
+ BOOST_STATIC_ASSERT_MSG(( sizeof(CharT) == sizeof(T) ),
+ "boost::lexical_cast does not support narrowing of character types."
+ "Use boost::locale instead" );
+ bool const ok = (finish - start == 1);
+ if (ok) {
+ CharT out;
+ Traits::assign(out, *start);
+ output = static_cast<T>(out);
+ }
+ return ok;
}
- bool operator>>(CharT&);
+/************************************ OPERATORS >> ( ... ) ********************************/
+ public:
+ bool operator>>(unsigned short& output) { return shr_unsigned(output); }
+ bool operator>>(unsigned int& output) { return shr_unsigned(output); }
+ bool operator>>(unsigned long int& output) { return shr_unsigned(output); }
+ bool operator>>(short& output) { return shr_signed(output); }
+ bool operator>>(int& output) { return shr_signed(output); }
+ bool operator>>(long int& output) { return shr_signed(output); }
+#if defined(BOOST_HAS_LONG_LONG)
+ bool operator>>(boost::ulong_long_type& output) { return shr_unsigned(output); }
+ bool operator>>(boost::long_long_type& output) { return shr_signed(output); }
+#elif defined(BOOST_HAS_MS_INT64)
+ bool operator>>(unsigned __int64& output) { return shr_unsigned(output); }
+ bool operator>>(__int64& output) { return shr_signed(output); }
+#endif
+
+#ifdef BOOST_HAS_INT128
+ bool operator>>(boost::uint128_type& output) { return shr_unsigned(output); }
+ bool operator>>(boost::int128_type& output) { return shr_signed(output); }
+#endif
+
+ bool operator>>(char& output) { return shr_xchar(output); }
+ bool operator>>(unsigned char& output) { return shr_xchar(output); }
+ bool operator>>(signed char& output) { return shr_xchar(output); }
+#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+ bool operator>>(wchar_t& output) { return shr_xchar(output); }
+#endif
+#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
+ bool operator>>(char16_t& output) { return shr_xchar(output); }
+#endif
+#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
+ bool operator>>(char32_t& output) { return shr_xchar(output); }
+#endif
+ template<class Alloc>
+ bool operator>>(std::basic_string<CharT,Traits,Alloc>& str) { str.assign(start, finish); return true; }
+
+ template<class Alloc>
+ bool operator>>(boost::container::basic_string<CharT,Traits,Alloc>& str) { str.assign(start, finish); return true; }
+
+
+ private:
+ template <std::size_t N, class ArrayT>
+ bool shr_std_array(ArrayT& output) BOOST_NOEXCEPT
+ {
+ using namespace std;
+ const std::size_t size = finish - start;
+ if (size > N - 1) { // `-1` because we need to store \0 at the end
+ return false;
+ }
+
+ memcpy(&output[0], start, size * sizeof(CharT));
+ output[size] = Traits::to_char_type(0);
+ return true;
+ }
+
+ public:
+
+ template <std::size_t N>
+ bool operator>>(boost::array<CharT, N>& output) BOOST_NOEXCEPT
+ {
+ return shr_std_array<N>(output);
+ }
+
+ template <std::size_t N>
+ bool operator>>(boost::array<unsigned char, N>& output)
+ {
+ return ((*this) >> reinterpret_cast<boost::array<char, N>& >(output));
+ }
+
+ template <std::size_t N>
+ bool operator>>(boost::array<signed char, N>& output)
+ {
+ return ((*this) >> reinterpret_cast<boost::array<char, N>& >(output));
+ }
+
+#ifndef BOOST_NO_CXX11_HDR_ARRAY
+ template <std::size_t N>
+ bool operator>>(std::array<CharT, N>& output) BOOST_NOEXCEPT
+ {
+ return shr_std_array<N>(output);
+ }
+
+ template <std::size_t N>
+ bool operator>>(std::array<unsigned char, N>& output)
+ {
+ return ((*this) >> reinterpret_cast<std::array<char, N>& >(output));
+ }
+
+ template <std::size_t N>
+ bool operator>>(std::array<signed char, N>& output)
+ {
+ return ((*this) >> reinterpret_cast<std::array<char, N>& >(output));
+ }
+#endif
+
+
+ /*
+ * case "-0" || "0" || "+0" : output = false; return true;
+ * case "1" || "+1": output = true; return true;
+ * default: return false;
+ */
+ bool operator>>(bool& output) BOOST_NOEXCEPT
+ {
+ CharT const zero = lcast_char_constants<CharT>::zero;
+ CharT const plus = lcast_char_constants<CharT>::plus;
+ CharT const minus = lcast_char_constants<CharT>::minus;
+
+ switch(finish-start)
+ {
+ case 1:
+ output = Traits::eq(start[0], zero+1);
+ return output || Traits::eq(start[0], zero );
+ case 2:
+ if ( Traits::eq( plus, *start) )
+ {
+ ++start;
+ output = Traits::eq(start[0], zero +1);
+ return output || Traits::eq(start[0], zero );
+ } else
+ {
+ output = false;
+ return Traits::eq( minus, *start)
+ && Traits::eq( zero, start[1]);
+ }
+ default:
+ output = false; // Suppress warning about uninitalized variable
+ return false;
+ }
+ }
+
+ bool operator>>(float& output) { return lcast_ret_float<Traits>(output,start,finish); }
+
+ private:
+ // Not optimised converter
+ template <class T>
+ bool float_types_converter_internal(T& output, int /*tag*/) {
+ if (parse_inf_nan(start, finish, output)) return true;
+ bool return_value = shr_using_base_class(output);
+
+ /* Some compilers and libraries successfully
+ * parse 'inf', 'INFINITY', '1.0E', '1.0E-'...
+ * We are trying to provide a unified behaviour,
+ * so we just forbid such conversions (as some
+ * of the most popular compilers/libraries do)
+ * */
+ CharT const minus = lcast_char_constants<CharT>::minus;
+ CharT const plus = lcast_char_constants<CharT>::plus;
+ CharT const capital_e = lcast_char_constants<CharT>::capital_e;
+ CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
+ if ( return_value &&
+ (
+ Traits::eq(*(finish-1), lowercase_e) // 1.0e
+ || Traits::eq(*(finish-1), capital_e) // 1.0E
+ || Traits::eq(*(finish-1), minus) // 1.0e- or 1.0E-
+ || Traits::eq(*(finish-1), plus) // 1.0e+ or 1.0E+
+ )
+ ) return false;
+
+ return return_value;
+ }
+
+ // Optimised converter
+ bool float_types_converter_internal(double& output,char /*tag*/) {
+ return lcast_ret_float<Traits>(output,start,finish);
+ }
+ public:
+
+ bool operator>>(double& output)
+ {
+ /*
+ * Some compilers implement long double as double. In that case these types have
+ * same size, same precision, same max and min values... And it means,
+ * that current implementation of lcast_ret_float cannot be used for type
+ * double, because it will give a big precision loss.
+ * */
+ boost::mpl::if_c<
+#if (defined(BOOST_HAS_LONG_LONG) || defined(BOOST_HAS_MS_INT64)) && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)
+ boost::type_traits::ice_eq< sizeof(double), sizeof(long double) >::value,
+#else
+ 1,
+#endif
+ int,
+ char
+ >::type tag = 0;
+
+ return float_types_converter_internal(output, tag);
+ }
+
+ bool operator>>(long double& output)
+ {
+ int tag = 0;
+ return float_types_converter_internal(output, tag);
+ }
+
+ // Generic istream-based algorithm.
+ // lcast_streambuf_for_target<InputStreamable>::value is true.
+ template<typename InputStreamable>
+ bool operator>>(InputStreamable& output) { return shr_using_base_class(output); }
+ };
+ }
+
+ namespace detail
+ {
+ template<typename T>
+ struct is_stdstring
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false );
+ };
+
+ template<typename CharT, typename Traits, typename Alloc>
+ struct is_stdstring< std::basic_string<CharT, Traits, Alloc> >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true );
+ };
+
+ template<typename CharT, typename Traits, typename Alloc>
+ struct is_stdstring< boost::container::basic_string<CharT, Traits, Alloc> >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true );
+ };
+
+ template<typename Target, typename Source>
+ struct is_arithmetic_and_not_xchars
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ (
+ boost::type_traits::ice_and<
+ boost::is_arithmetic<Source>::value,
+ boost::is_arithmetic<Target>::value,
+ boost::type_traits::ice_not<
+ detail::is_char_or_wchar<Target>::value
+ >::value,
+ boost::type_traits::ice_not<
+ detail::is_char_or_wchar<Source>::value
+ >::value
+ >::value
+ )
+ );
+ };
+
+ /*
+ * is_xchar_to_xchar<Target, Source>::value is true, when
+ * Target and Souce are the same char types, or when
+ * Target and Souce are char types of the same size.
+ */
+ template<typename Target, typename Source>
+ struct is_xchar_to_xchar
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ (
+ boost::type_traits::ice_or<
+ boost::type_traits::ice_and<
+ is_same<Source,Target>::value,
+ is_char_or_wchar<Target>::value
+ >::value,
+ boost::type_traits::ice_and<
+ boost::type_traits::ice_eq< sizeof(char),sizeof(Target)>::value,
+ boost::type_traits::ice_eq< sizeof(char),sizeof(Source)>::value,
+ is_char_or_wchar<Target>::value,
+ is_char_or_wchar<Source>::value
+ >::value
+ >::value
+ )
+ );
+ };
+
+ template<typename Target, typename Source>
+ struct is_char_array_to_stdstring
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false );
+ };
+
+ template<typename CharT, typename Traits, typename Alloc>
+ struct is_char_array_to_stdstring< std::basic_string<CharT, Traits, Alloc>, CharT* >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true );
+ };
+
+ template<typename CharT, typename Traits, typename Alloc>
+ struct is_char_array_to_stdstring< std::basic_string<CharT, Traits, Alloc>, const CharT* >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true );
+ };
+
+ template<typename CharT, typename Traits, typename Alloc>
+ struct is_char_array_to_stdstring< boost::container::basic_string<CharT, Traits, Alloc>, CharT* >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true );
+ };
+
+ template<typename CharT, typename Traits, typename Alloc>
+ struct is_char_array_to_stdstring< boost::container::basic_string<CharT, Traits, Alloc>, const CharT* >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true );
+ };
+
+#if (defined _MSC_VER)
+# pragma warning( push )
+# pragma warning( disable : 4701 ) // possible use of ... before initialization
+# pragma warning( disable : 4702 ) // unreachable code
+# pragma warning( disable : 4267 ) // conversion from 'size_t' to 'unsigned int'
+#endif
+ template<typename Target, typename Source>
+ struct lexical_cast_do_cast
+ {
+ static inline Target lexical_cast_impl(const Source& arg)
+ {
+ typedef lexical_cast_stream_traits<Source, Target> stream_trait;
+
+ typedef detail::lexical_stream_limited_src<
+ BOOST_DEDUCED_TYPENAME stream_trait::char_type,
+ BOOST_DEDUCED_TYPENAME stream_trait::traits,
+ stream_trait::requires_stringbuf
+ > interpreter_type;
+
+ // Target type must be default constructible
+ Target result;
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-// This #if is in sync with lcast_streambuf_for_target
+ BOOST_DEDUCED_TYPENAME stream_trait::char_type buf[stream_trait::len_t::value + 1];
+ stream_trait::len_t::check_coverage();
- bool operator>>(std::string&);
+ interpreter_type interpreter(buf, buf + stream_trait::len_t::value + 1);
-#ifndef BOOST_LCAST_NO_WCHAR_T
- bool operator>>(std::wstring&);
+ // Disabling ADL, by directly specifying operators.
+ if(!(interpreter.operator <<(arg) && interpreter.operator >>(result)))
+ BOOST_LCAST_THROW_BAD_CAST(Source, Target);
+
+ return result;
+ }
+ };
+#if (defined _MSC_VER)
+# pragma warning( pop )
#endif
-#else
- template<class Alloc>
- bool operator>>(std::basic_string<CharT,Traits,Alloc>& str)
+ template <typename Source>
+ struct lexical_cast_copy
+ {
+ static inline const Source& lexical_cast_impl(const Source &arg) BOOST_NOEXCEPT
{
- str.assign(start, finish);
- return true;
+ return arg;
}
-#endif
};
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- bool value)
+ template <class Source, class Target >
+ struct detect_precision_loss
{
- typedef typename Traits::int_type int_type;
- CharT const czero = lcast_char_constants<CharT>::zero;
- int_type const zero = Traits::to_int_type(czero);
- Traits::assign(*start, Traits::to_char_type(zero + value));
- finish = start + 1;
- return true;
- }
+ typedef boost::numeric::Trunc<Source> Rounder;
+ typedef Source source_type ;
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- char ch)
- {
- widen_and_assign(start, ch);
- finish = start + 1;
- return true;
- }
+ typedef BOOST_DEDUCED_TYPENAME mpl::if_<
+ boost::is_arithmetic<Source>, Source, Source const&
+ >::type argument_type ;
-#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- wchar_t ch)
- {
- widen_and_assign(start, ch);
- finish = start + 1;
- return true;
- }
-#endif
+ static source_type nearbyint ( argument_type s )
+ {
+ const source_type near_int = Rounder::nearbyint(s);
+ if (near_int) {
+ const source_type orig_div_round = s / near_int;
+ const source_type eps = std::numeric_limits<source_type>::epsilon();
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- short n)
- {
- start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
- if(n < 0)
- {
- --start;
- CharT const minus = lcast_char_constants<CharT>::minus;
- Traits::assign(*start, minus);
+ if ((orig_div_round > 1 ? orig_div_round - 1 : 1 - orig_div_round) > eps)
+ BOOST_LCAST_THROW_BAD_CAST(Source, Target);
}
- return true;
- }
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- int n)
+ return s ;
+ }
+
+ typedef typename Rounder::round_style round_style;
+ } ;
+
+ template <class Source, class Target >
+ struct nothrow_overflow_handler
{
- start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
- if(n < 0)
- {
- --start;
- CharT const minus = lcast_char_constants<CharT>::minus;
- Traits::assign(*start, minus);
- }
- return true;
- }
+ void operator() ( boost::numeric::range_check_result r )
+ {
+ if (r != boost::numeric::cInRange)
+ BOOST_LCAST_THROW_BAD_CAST(Source, Target);
+ }
+ } ;
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- long n)
+ template <typename Target, typename Source>
+ struct lexical_cast_dynamic_num_not_ignoring_minus
{
- start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
- if(n < 0)
+ static inline Target lexical_cast_impl(const Source &arg)
{
- --start;
- CharT const minus = lcast_char_constants<CharT>::minus;
- Traits::assign(*start, minus);
+ return boost::numeric::converter<
+ Target,
+ Source,
+ boost::numeric::conversion_traits<Target,Source>,
+ nothrow_overflow_handler<Source, Target>,
+ detect_precision_loss<Source, Target>
+ >::convert(arg);
}
- return true;
- }
+ };
-#if defined(BOOST_HAS_LONG_LONG)
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- boost::long_long_type n)
+ template <typename Target, typename Source>
+ struct lexical_cast_dynamic_num_ignoring_minus
{
- start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
- if(n < 0)
+ static inline Target lexical_cast_impl(const Source &arg)
{
- --start;
- CharT const minus = lcast_char_constants<CharT>::minus;
- Traits::assign(*start, minus);
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::eval_if_c<
+ boost::is_float<Source>::value,
+ boost::mpl::identity<Source>,
+ boost::make_unsigned<Source>
+ >::type usource_t;
+
+ typedef boost::numeric::converter<
+ Target,
+ usource_t,
+ boost::numeric::conversion_traits<Target,usource_t>,
+ nothrow_overflow_handler<usource_t, Target>,
+ detect_precision_loss<usource_t, Target>
+ > converter_t;
+
+ return (
+ arg < 0 ? static_cast<Target>(0u - converter_t::convert(0u - arg)) : converter_t::convert(arg)
+ );
}
- return true;
- }
-#elif defined(BOOST_HAS_MS_INT64)
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- __int64 n)
- {
- start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
- if(n < 0)
+ };
+
+ /*
+ * lexical_cast_dynamic_num follows the rules:
+ * 1) If Source can be converted to Target without precision loss and
+ * without overflows, then assign Source to Target and return
+ *
+ * 2) If Source is less than 0 and Target is an unsigned integer,
+ * then negate Source, check the requirements of rule 1) and if
+ * successful, assign static_casted Source to Target and return
+ *
+ * 3) Otherwise throw a bad_lexical_cast exception
+ *
+ *
+ * Rule 2) required because boost::lexical_cast has the behavior of
+ * stringstream, which uses the rules of scanf for conversions. And
+ * in the C99 standard for unsigned input value minus sign is
+ * optional, so if a negative number is read, no errors will arise
+ * and the result will be the two's complement.
+ */
+ template <typename Target, typename Source>
+ struct lexical_cast_dynamic_num
+ {
+ static inline Target lexical_cast_impl(const Source &arg)
{
- --start;
- CharT const minus = lcast_char_constants<CharT>::minus;
- Traits::assign(*start, minus);
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
+ boost::type_traits::ice_and<
+ boost::type_traits::ice_or<
+ boost::is_signed<Source>::value,
+ boost::is_float<Source>::value
+ >::value,
+ boost::type_traits::ice_not<
+ boost::is_same<Source, bool>::value
+ >::value,
+ boost::type_traits::ice_not<
+ boost::is_same<Target, bool>::value
+ >::value,
+ boost::is_unsigned<Target>::value
+ >::value,
+ lexical_cast_dynamic_num_ignoring_minus<Target, Source>,
+ lexical_cast_dynamic_num_not_ignoring_minus<Target, Source>
+ >::type caster_type;
+
+ return caster_type::lexical_cast_impl(arg);
}
- return true;
- }
-#endif
-
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- unsigned short n)
- {
- start = lcast_put_unsigned<Traits>(n, finish);
- return true;
- }
-
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- unsigned int n)
- {
- start = lcast_put_unsigned<Traits>(n, finish);
- return true;
- }
-
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- unsigned long n)
- {
- start = lcast_put_unsigned<Traits>(n, finish);
- return true;
- }
-
-#if defined(BOOST_HAS_LONG_LONG)
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- boost::ulong_long_type n)
- {
- start = lcast_put_unsigned<Traits>(n, finish);
- return true;
- }
-#elif defined(BOOST_HAS_MS_INT64)
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- unsigned __int64 n)
- {
- start = lcast_put_unsigned<Traits>(n, finish);
- return true;
- }
-#endif
+ };
+ }
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- float val)
- {
- return this->lcast_put(val);
- }
+ template <typename Target, typename Source>
+ inline Target lexical_cast(const Source &arg)
+ {
+ typedef BOOST_DEDUCED_TYPENAME boost::detail::array_to_pointer_decay<Source>::type src;
+
+ typedef BOOST_DEDUCED_TYPENAME boost::type_traits::ice_or<
+ boost::detail::is_xchar_to_xchar<Target, src >::value,
+ boost::detail::is_char_array_to_stdstring<Target, src >::value,
+ boost::type_traits::ice_and<
+ boost::is_same<Target, src >::value,
+ boost::detail::is_stdstring<Target >::value
+ >::value
+ > shall_we_copy_t;
+
+ typedef BOOST_DEDUCED_TYPENAME
+ boost::detail::is_arithmetic_and_not_xchars<Target, src > shall_we_copy_with_dynamic_check_t;
+
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
+ shall_we_copy_t::value,
+ boost::detail::lexical_cast_copy<src >,
+ BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
+ shall_we_copy_with_dynamic_check_t::value,
+ boost::detail::lexical_cast_dynamic_num<Target, src >,
+ boost::detail::lexical_cast_do_cast<Target, src >
+ >::type
+ >::type caster_type;
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- double val)
- {
- return this->lcast_put(val);
- }
+ return caster_type::lexical_cast_impl(arg);
+ }
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- long double val)
- {
- return this->lcast_put(val);
- }
+ template <typename Target>
+ inline Target lexical_cast(const char* chars, std::size_t count)
+ {
+ return ::boost::lexical_cast<Target>(
+ ::boost::iterator_range<const char*>(chars, chars + count)
+ );
+ }
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
- CharT const* str)
- {
- start = const_cast<CharT*>(str);
- finish = start + Traits::length(str);
- return true;
- }
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator>>(
- CharT& output)
- {
- bool const ok = (finish - start == 1);
- if(ok)
- Traits::assign(output, *start);
- return ok;
- }
+ template <typename Target>
+ inline Target lexical_cast(const unsigned char* chars, std::size_t count)
+ {
+ return ::boost::lexical_cast<Target>(
+ ::boost::iterator_range<const unsigned char*>(chars, chars + count)
+ );
+ }
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator>>(
- std::string& str)
- {
- str.assign(start, finish);
- return true;
- }
+ template <typename Target>
+ inline Target lexical_cast(const signed char* chars, std::size_t count)
+ {
+ return ::boost::lexical_cast<Target>(
+ ::boost::iterator_range<const signed char*>(chars, chars + count)
+ );
+ }
#ifndef BOOST_LCAST_NO_WCHAR_T
- template<typename CharT, class Base, class Traits>
- inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator>>(
- std::wstring& str)
- {
- str.assign(start, finish);
- return true;
- }
+ template <typename Target>
+ inline Target lexical_cast(const wchar_t* chars, std::size_t count)
+ {
+ return ::boost::lexical_cast<Target>(
+ ::boost::iterator_range<const wchar_t*>(chars, chars + count)
+ );
+ }
#endif
+#ifndef BOOST_NO_CXX11_CHAR16_T
+ template <typename Target>
+ inline Target lexical_cast(const char16_t* chars, std::size_t count)
+ {
+ return ::boost::lexical_cast<Target>(
+ ::boost::iterator_range<const char16_t*>(chars, chars + count)
+ );
+ }
#endif
+#ifndef BOOST_NO_CXX11_CHAR32_T
+ template <typename Target>
+ inline Target lexical_cast(const char32_t* chars, std::size_t count)
+ {
+ return ::boost::lexical_cast<Target>(
+ ::boost::iterator_range<const char32_t*>(chars, chars + count)
+ );
}
+#endif
- namespace detail // lcast_streambuf_for_source
- {
- // Returns true if optimized stream wrapper needs ostream for writing.
- template<class Source>
- struct lcast_streambuf_for_source
- {
- BOOST_STATIC_CONSTANT(bool, value = false);
- };
+} // namespace boost
- template<>
- struct lcast_streambuf_for_source<float>
- {
- BOOST_STATIC_CONSTANT(bool, value = true);
- };
-
- template<>
- struct lcast_streambuf_for_source<double>
- {
- BOOST_STATIC_CONSTANT(bool, value = true);
- };
-
- template<>
- struct lcast_streambuf_for_source<long double>
- {
- BOOST_STATIC_CONSTANT(bool, value = true);
- };
- }
+#else // #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- namespace detail // lcast_streambuf_for_target
+namespace boost {
+ namespace detail
{
- // Returns true if optimized stream wrapper needs istream for reading.
- template<class Target>
- struct lcast_streambuf_for_target
- {
- BOOST_STATIC_CONSTANT(bool, value = true);
- };
- template<>
- struct lcast_streambuf_for_target<char>
+ // selectors for choosing stream character type
+ template<typename Type>
+ struct stream_char
{
- BOOST_STATIC_CONSTANT(bool, value = false);
+ typedef char type;
};
-#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+#ifndef BOOST_LCAST_NO_WCHAR_T
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
template<>
- struct lcast_streambuf_for_target<wchar_t>
+ struct stream_char<wchar_t>
{
- BOOST_STATIC_CONSTANT(bool, value = false);
+ typedef wchar_t type;
};
#endif
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- template<class Traits, class Alloc>
- struct lcast_streambuf_for_target<
- std::basic_string<char,Traits,Alloc> >
- {
- BOOST_STATIC_CONSTANT(bool, value = false);
- };
-
-#ifndef BOOST_LCAST_NO_WCHAR_T
- template<class Traits, class Alloc>
- struct lcast_streambuf_for_target<
- std::basic_string<wchar_t,Traits,Alloc> >
- {
- BOOST_STATIC_CONSTANT(bool, value = false);
- };
-#endif
-#else
template<>
- struct lcast_streambuf_for_target<std::string>
+ struct stream_char<wchar_t *>
{
- BOOST_STATIC_CONSTANT(bool, value = false);
+ typedef wchar_t type;
};
-#ifndef BOOST_LCAST_NO_WCHAR_T
template<>
- struct lcast_streambuf_for_target<std::wstring>
- {
- BOOST_STATIC_CONSTANT(bool, value = false);
- };
-#endif
-#endif
- }
-
- #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
- // call-by-const reference version
-
- namespace detail
- {
- template<class T>
- struct array_to_pointer_decay
+ struct stream_char<const wchar_t *>
{
- typedef T type;
+ typedef wchar_t type;
};
- template<class T, std::size_t N>
- struct array_to_pointer_decay<T[N]>
+ template<>
+ struct stream_char<std::wstring>
{
- typedef const T * type;
+ typedef wchar_t type;
};
-
-#if (defined _MSC_VER)
-# pragma warning( push )
-# pragma warning( disable : 4701 ) // possible use of ... before initialization
-# pragma warning( disable : 4702 ) // unreachable code
#endif
- template< typename Target
- , typename Source
- , bool Unlimited // string representation of Source is unlimited
- , typename CharT
- >
- Target lexical_cast(
- BOOST_DEDUCED_TYPENAME boost::call_traits<Source>::param_type arg,
- CharT* buf, std::size_t src_len)
+ // stream wrapper for handling lexical conversions
+ template<typename Target, typename Source, typename Traits>
+ class lexical_stream
{
- typedef BOOST_DEDUCED_TYPENAME
- deduce_char_traits<CharT,Target,Source>::type traits;
+ private:
+ typedef typename widest_char<
+ typename stream_char<Target>::type,
+ typename stream_char<Source>::type>::type char_type;
- typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
- lcast_streambuf_for_target<Target>::value ||
- lcast_streambuf_for_source<Source>::value
- , std::basic_streambuf<CharT>
- , lexical_streambuf_fake
- >::type base;
+ typedef Traits traits_type;
- BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
- Unlimited
- , detail::lexical_stream<Target,Source,traits>
- , detail::lexical_stream_limited_src<CharT,base,traits>
- >::type interpreter(buf, buf + src_len);
+ public:
+ lexical_stream(char_type* = 0, char_type* = 0)
+ {
+ stream.unsetf(std::ios::skipws);
+ lcast_set_precision(stream, static_cast<Source*>(0), static_cast<Target*>(0) );
+ }
+ ~lexical_stream()
+ {
+ #if defined(BOOST_NO_STRINGSTREAM)
+ stream.freeze(false);
+ #endif
+ }
+ bool operator<<(const Source &input)
+ {
+ return !(stream << input).fail();
+ }
+ template<typename InputStreamable>
+ bool operator>>(InputStreamable &output)
+ {
+ return !is_pointer<InputStreamable>::value &&
+ stream >> output &&
+ stream.get() ==
+#if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
+// GCC 2.9x lacks std::char_traits<>::eof().
+// We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3
+// configurations, which do provide std::char_traits<>::eof().
- Target result;
- if(!(interpreter << arg && interpreter >> result))
- BOOST_LCAST_THROW_BAD_CAST(Source, Target);
- return result;
- }
-#if (defined _MSC_VER)
-# pragma warning( pop )
+ EOF;
+#else
+ traits_type::eof();
#endif
- }
+ }
- template<typename Target, typename Source>
- inline Target lexical_cast(const Source &arg)
- {
- typedef typename detail::array_to_pointer_decay<Source>::type src;
-
- typedef typename detail::widest_char<
- typename detail::stream_char<Target>::type
- , typename detail::stream_char<src>::type
- >::type char_type;
-
- typedef detail::lcast_src_length<char_type, src> lcast_src_length;
- std::size_t const src_len = lcast_src_length::value;
- char_type buf[src_len + 1];
- lcast_src_length::check_coverage();
- return detail::lexical_cast<Target, src, !src_len>(arg, buf, src_len);
- }
+ bool operator>>(std::string &output)
+ {
+ #if defined(BOOST_NO_STRINGSTREAM)
+ stream << '\0';
+ #endif
+ stream.str().swap(output);
+ return true;
+ }
+ #ifndef BOOST_LCAST_NO_WCHAR_T
+ bool operator>>(std::wstring &output)
+ {
+ stream.str().swap(output);
+ return true;
+ }
+ #endif
- #else
+ private:
+ #if defined(BOOST_NO_STRINGSTREAM)
+ std::strstream stream;
+ #elif defined(BOOST_NO_STD_LOCALE)
+ std::stringstream stream;
+ #else
+ std::basic_stringstream<char_type,traits_type> stream;
+ #endif
+ };
+ }
// call-by-value fallback version (deprecated)
Target result;
if(!(interpreter << arg && interpreter >> result))
-#ifndef BOOST_NO_TYPEID
- throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
-#else
- throw_exception(bad_lexical_cast());
-#endif
+ BOOST_LCAST_THROW_BAD_CAST(Source, Target);
return result;
}
- #endif
-}
+} // namespace boost
+
+#endif
// Copyright Kevlin Henney, 2000-2005.
-// Copyright Alexander Nasonov, 2006-2007.
+// Copyright Alexander Nasonov, 2006-2010.
+// Copyright Antony Polukhin, 2011-2013.
//
// 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)
+#undef BOOST_LCAST_THROW_BAD_CAST
#undef BOOST_LCAST_NO_WCHAR_T
-#endif
+
+#endif // BOOST_LEXICAL_CAST_INCLUDED
+
#include <boost/config.hpp>
#ifdef BOOST_NO_LIMITS
-# include <boost/detail/limits.hpp>
+# error "There is no std::numeric_limits suppport available."
#else
# include <limits>
#endif
--- /dev/null
+// Copyright John Maddock 2010, 2012.
+// Copyright Paul A. Bristow 2011, 2012.
+
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_CALCULATE_CONSTANTS_CONSTANTS_INCLUDED
+#define BOOST_MATH_CALCULATE_CONSTANTS_CONSTANTS_INCLUDED
+
+#include <boost/math/special_functions/trunc.hpp>
+
+namespace boost{ namespace math{ namespace constants{ namespace detail{
+
+template <class T>
+template<int N>
+inline T constant_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+
+ return ldexp(acos(T(0)), 1);
+
+ /*
+ // Although this code works well, it's usually more accurate to just call acos
+ // and access the number types own representation of PI which is usually calculated
+ // at slightly higher precision...
+
+ T result;
+ T a = 1;
+ T b;
+ T A(a);
+ T B = 0.5f;
+ T D = 0.25f;
+
+ T lim;
+ lim = boost::math::tools::epsilon<T>();
+
+ unsigned k = 1;
+
+ do
+ {
+ result = A + B;
+ result = ldexp(result, -2);
+ b = sqrt(B);
+ a += b;
+ a = ldexp(a, -1);
+ A = a * a;
+ B = A - result;
+ B = ldexp(B, 1);
+ result = A - B;
+ bool neg = boost::math::sign(result) < 0;
+ if(neg)
+ result = -result;
+ if(result <= lim)
+ break;
+ if(neg)
+ result = -result;
+ result = ldexp(result, k - 1);
+ D -= result;
+ ++k;
+ lim = ldexp(lim, 1);
+ }
+ while(true);
+
+ result = B / D;
+ return result;
+ */
+}
+
+template <class T>
+template<int N>
+inline T constant_two_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ return 2 * pi<T, policies::policy<policies::digits2<N> > >();
+}
+
+template <class T> // 2 / pi
+template<int N>
+inline T constant_two_div_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ return 2 / pi<T, policies::policy<policies::digits2<N> > >();
+}
+
+template <class T> // sqrt(2/pi)
+template <int N>
+inline T constant_root_two_div_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sqrt((2 / pi<T, policies::policy<policies::digits2<N> > >()));
+}
+
+template <class T>
+template<int N>
+inline T constant_one_div_two_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ return 1 / two_pi<T, policies::policy<policies::digits2<N> > >();
+}
+
+template <class T>
+template<int N>
+inline T constant_root_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sqrt(pi<T, policies::policy<policies::digits2<N> > >());
+}
+
+template <class T>
+template<int N>
+inline T constant_root_half_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sqrt(pi<T, policies::policy<policies::digits2<N> > >() / 2);
+}
+
+template <class T>
+template<int N>
+inline T constant_root_two_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sqrt(two_pi<T, policies::policy<policies::digits2<N> > >());
+}
+
+template <class T>
+template<int N>
+inline T constant_log_root_two_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return log(root_two_pi<T, policies::policy<policies::digits2<N> > >());
+}
+
+template <class T>
+template<int N>
+inline T constant_root_ln_four<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sqrt(log(static_cast<T>(4)));
+}
+
+template <class T>
+template<int N>
+inline T constant_e<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ //
+ // Although we can clearly calculate this from first principles, this hooks into
+ // T's own notion of e, which hopefully will more accurate than one calculated to
+ // a few epsilon:
+ //
+ BOOST_MATH_STD_USING
+ return exp(static_cast<T>(1));
+}
+
+template <class T>
+template<int N>
+inline T constant_half<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ return static_cast<T>(1) / static_cast<T>(2);
+}
+
+template <class T>
+template<int M>
+inline T constant_euler<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<M>))
+{
+ BOOST_MATH_STD_USING
+ //
+ // This is the method described in:
+ // "Some New Algorithms for High-Precision Computation of Euler's Constant"
+ // Richard P Brent and Edwin M McMillan.
+ // Mathematics of Computation, Volume 34, Number 149, Jan 1980, pages 305-312.
+ // See equation 17 with p = 2.
+ //
+ T n = 3 + (M ? (std::min)(M, tools::digits<T>()) : tools::digits<T>()) / 4;
+ T lim = M ? ldexp(T(1), 1 - (std::min)(M, tools::digits<T>())) : tools::epsilon<T>();
+ T lnn = log(n);
+ T term = 1;
+ T N = -lnn;
+ T D = 1;
+ T Hk = 0;
+ T one = 1;
+
+ for(unsigned k = 1;; ++k)
+ {
+ term *= n * n;
+ term /= k * k;
+ Hk += one / k;
+ N += term * (Hk - lnn);
+ D += term;
+
+ if(term < D * lim)
+ break;
+ }
+ return N / D;
+}
+
+template <class T>
+template<int N>
+inline T constant_euler_sqr<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return euler<T, policies::policy<policies::digits2<N> > >()
+ * euler<T, policies::policy<policies::digits2<N> > >();
+}
+
+template <class T>
+template<int N>
+inline T constant_one_div_euler<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return static_cast<T>(1)
+ / euler<T, policies::policy<policies::digits2<N> > >();
+}
+
+
+template <class T>
+template<int N>
+inline T constant_root_two<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sqrt(static_cast<T>(2));
+}
+
+
+template <class T>
+template<int N>
+inline T constant_root_three<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sqrt(static_cast<T>(3));
+}
+
+template <class T>
+template<int N>
+inline T constant_half_root_two<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sqrt(static_cast<T>(2)) / 2;
+}
+
+template <class T>
+template<int N>
+inline T constant_ln_two<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ //
+ // Although there are good ways to calculate this from scratch, this hooks into
+ // T's own notion of log(2) which will hopefully be accurate to the full precision
+ // of T:
+ //
+ BOOST_MATH_STD_USING
+ return log(static_cast<T>(2));
+}
+
+template <class T>
+template<int N>
+inline T constant_ln_ten<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return log(static_cast<T>(10));
+}
+
+template <class T>
+template<int N>
+inline T constant_ln_ln_two<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return log(log(static_cast<T>(2)));
+}
+
+template <class T>
+template<int N>
+inline T constant_third<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return static_cast<T>(1) / static_cast<T>(3);
+}
+
+template <class T>
+template<int N>
+inline T constant_twothirds<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return static_cast<T>(2) / static_cast<T>(3);
+}
+
+template <class T>
+template<int N>
+inline T constant_two_thirds<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return static_cast<T>(2) / static_cast<T>(3);
+}
+
+template <class T>
+template<int N>
+inline T constant_three_quarters<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return static_cast<T>(3) / static_cast<T>(4);
+}
+
+template <class T>
+template<int N>
+inline T constant_pi_minus_three<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ return pi<T, policies::policy<policies::digits2<N> > >() - static_cast<T>(3);
+}
+
+template <class T>
+template<int N>
+inline T constant_four_minus_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ return static_cast<T>(4) - pi<T, policies::policy<policies::digits2<N> > >();
+}
+
+template <class T>
+template<int N>
+inline T constant_pow23_four_minus_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pow(four_minus_pi<T, policies::policy<policies::digits2<N> > >(), static_cast<T>(1.5));
+}
+
+template <class T>
+template<int N>
+inline T constant_exp_minus_half<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return exp(static_cast<T>(-0.5));
+}
+
+// Pi
+template <class T>
+template<int N>
+inline T constant_one_div_root_two<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ return static_cast<T>(1) / root_two<T, policies::policy<policies::digits2<N> > >();
+}
+
+template <class T>
+template<int N>
+inline T constant_one_div_root_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ return static_cast<T>(1) / root_pi<T, policies::policy<policies::digits2<N> > >();
+}
+
+template <class T>
+template<int N>
+inline T constant_one_div_root_two_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ return static_cast<T>(1) / root_two_pi<T, policies::policy<policies::digits2<N> > >();
+}
+
+template <class T>
+template<int N>
+inline T constant_root_one_div_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sqrt(static_cast<T>(1) / pi<T, policies::policy<policies::digits2<N> > >());
+}
+
+
+template <class T>
+template<int N>
+inline T constant_four_thirds_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pi<T, policies::policy<policies::digits2<N> > >() * static_cast<T>(4) / static_cast<T>(3);
+}
+
+template <class T>
+template<int N>
+inline T constant_half_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pi<T, policies::policy<policies::digits2<N> > >() / static_cast<T>(2);
+}
+
+
+template <class T>
+template<int N>
+inline T constant_third_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pi<T, policies::policy<policies::digits2<N> > >() / static_cast<T>(3);
+}
+
+template <class T>
+template<int N>
+inline T constant_sixth_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pi<T, policies::policy<policies::digits2<N> > >() / static_cast<T>(6);
+}
+
+template <class T>
+template<int N>
+inline T constant_two_thirds_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pi<T, policies::policy<policies::digits2<N> > >() * static_cast<T>(2) / static_cast<T>(3);
+}
+
+template <class T>
+template<int N>
+inline T constant_three_quarters_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pi<T, policies::policy<policies::digits2<N> > >() * static_cast<T>(3) / static_cast<T>(4);
+}
+
+template <class T>
+template<int N>
+inline T constant_pi_pow_e<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pow(pi<T, policies::policy<policies::digits2<N> > >(), e<T, policies::policy<policies::digits2<N> > >()); //
+}
+
+template <class T>
+template<int N>
+inline T constant_pi_sqr<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pi<T, policies::policy<policies::digits2<N> > >()
+ * pi<T, policies::policy<policies::digits2<N> > >() ; //
+}
+
+template <class T>
+template<int N>
+inline T constant_pi_sqr_div_six<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pi<T, policies::policy<policies::digits2<N> > >()
+ * pi<T, policies::policy<policies::digits2<N> > >()
+ / static_cast<T>(6); //
+}
+
+
+template <class T>
+template<int N>
+inline T constant_pi_cubed<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pi<T, policies::policy<policies::digits2<N> > >()
+ * pi<T, policies::policy<policies::digits2<N> > >()
+ * pi<T, policies::policy<policies::digits2<N> > >()
+ ; //
+}
+
+template <class T>
+template<int N>
+inline T constant_cbrt_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pow(pi<T, policies::policy<policies::digits2<N> > >(), static_cast<T>(1)/ static_cast<T>(3));
+}
+
+template <class T>
+template<int N>
+inline T constant_one_div_cbrt_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return static_cast<T>(1)
+ / pow(pi<T, policies::policy<policies::digits2<N> > >(), static_cast<T>(1)/ static_cast<T>(3));
+}
+
+// Euler's e
+
+template <class T>
+template<int N>
+inline T constant_e_pow_pi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pow(e<T, policies::policy<policies::digits2<N> > >(), pi<T, policies::policy<policies::digits2<N> > >()); //
+}
+
+template <class T>
+template<int N>
+inline T constant_root_e<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sqrt(e<T, policies::policy<policies::digits2<N> > >());
+}
+
+template <class T>
+template<int N>
+inline T constant_log10_e<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return log10(e<T, policies::policy<policies::digits2<N> > >());
+}
+
+template <class T>
+template<int N>
+inline T constant_one_div_log10_e<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return static_cast<T>(1) /
+ log10(e<T, policies::policy<policies::digits2<N> > >());
+}
+
+// Trigonometric
+
+template <class T>
+template<int N>
+inline T constant_degree<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return pi<T, policies::policy<policies::digits2<N> > >()
+ / static_cast<T>(180)
+ ; //
+}
+
+template <class T>
+template<int N>
+inline T constant_radian<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return static_cast<T>(180)
+ / pi<T, policies::policy<policies::digits2<N> > >()
+ ; //
+}
+
+template <class T>
+template<int N>
+inline T constant_sin_one<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sin(static_cast<T>(1)) ; //
+}
+
+template <class T>
+template<int N>
+inline T constant_cos_one<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return cos(static_cast<T>(1)) ; //
+}
+
+template <class T>
+template<int N>
+inline T constant_sinh_one<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return sinh(static_cast<T>(1)) ; //
+}
+
+template <class T>
+template<int N>
+inline T constant_cosh_one<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return cosh(static_cast<T>(1)) ; //
+}
+
+template <class T>
+template<int N>
+inline T constant_phi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return (static_cast<T>(1) + sqrt(static_cast<T>(5)) )/static_cast<T>(2) ; //
+}
+
+template <class T>
+template<int N>
+inline T constant_ln_phi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ //return log(phi<T, policies::policy<policies::digits2<N> > >()); // ???
+ return log((static_cast<T>(1) + sqrt(static_cast<T>(5)) )/static_cast<T>(2) );
+}
+template <class T>
+template<int N>
+inline T constant_one_div_ln_phi<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+ return static_cast<T>(1) /
+ log((static_cast<T>(1) + sqrt(static_cast<T>(5)) )/static_cast<T>(2) );
+}
+
+// Zeta
+
+template <class T>
+template<int N>
+inline T constant_zeta_two<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ BOOST_MATH_STD_USING
+
+ return pi<T, policies::policy<policies::digits2<N> > >()
+ * pi<T, policies::policy<policies::digits2<N> > >()
+ /static_cast<T>(6);
+}
+
+template <class T>
+template<int N>
+inline T constant_zeta_three<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ // http://mathworld.wolfram.com/AperysConstant.html
+ // http://en.wikipedia.org/wiki/Mathematical_constant
+
+ // http://oeis.org/A002117/constant
+ //T zeta3("1.20205690315959428539973816151144999076"
+ // "4986292340498881792271555341838205786313"
+ // "09018645587360933525814619915");
+
+ //"1.202056903159594285399738161511449990, 76498629234049888179227155534183820578631309018645587360933525814619915" A002117
+ // 1.202056903159594285399738161511449990, 76498629234049888179227155534183820578631309018645587360933525814619915780, +00);
+ //"1.2020569031595942 double
+ // http://www.spaennare.se/SSPROG/ssnum.pdf // section 11, Algorithm for Apery's constant zeta(3).
+ // Programs to Calculate some Mathematical Constants to Large Precision, Document Version 1.50
+
+ // by Stefan Spannare September 19, 2007
+ // zeta(3) = 1/64 * sum
+ BOOST_MATH_STD_USING
+ T n_fact=static_cast<T>(1); // build n! for n = 0.
+ T sum = static_cast<double>(77); // Start with n = 0 case.
+ // for n = 0, (77/1) /64 = 1.203125
+ //double lim = std::numeric_limits<double>::epsilon();
+ T lim = N ? ldexp(T(1), 1 - (std::min)(N, tools::digits<T>())) : tools::epsilon<T>();
+ for(unsigned int n = 1; n < 40; ++n)
+ { // three to five decimal digits per term, so 40 should be plenty for 100 decimal digits.
+ //cout << "n = " << n << endl;
+ n_fact *= n; // n!
+ T n_fact_p10 = n_fact * n_fact * n_fact * n_fact * n_fact * n_fact * n_fact * n_fact * n_fact * n_fact; // (n!)^10
+ T num = ((205 * n * n) + (250 * n) + 77) * n_fact_p10; // 205n^2 + 250n + 77
+ // int nn = (2 * n + 1);
+ // T d = factorial(nn); // inline factorial.
+ T d = 1;
+ for(unsigned int i = 1; i <= (n+n + 1); ++i) // (2n + 1)
+ {
+ d *= i;
+ }
+ T den = d * d * d * d * d; // [(2n+1)!]^5
+ //cout << "den = " << den << endl;
+ T term = num/den;
+ if (n % 2 != 0)
+ { //term *= -1;
+ sum -= term;
+ }
+ else
+ {
+ sum += term;
+ }
+ //cout << "term = " << term << endl;
+ //cout << "sum/64 = " << sum/64 << endl;
+ if(abs(term) < lim)
+ {
+ break;
+ }
+ }
+ return sum / 64;
+}
+
+template <class T>
+template<int N>
+inline T constant_catalan<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{ // http://oeis.org/A006752/constant
+ //T c("0.915965594177219015054603514932384110774"
+ //"149374281672134266498119621763019776254769479356512926115106248574");
+
+ // 9.159655941772190150546035149323841107, 74149374281672134266498119621763019776254769479356512926115106248574422619, -01);
+
+ // This is equation (entry) 31 from
+ // http://www-2.cs.cmu.edu/~adamchik/articles/catalan/catalan.htm
+ // See also http://www.mpfr.org/algorithms.pdf
+ BOOST_MATH_STD_USING
+ T k_fact = 1;
+ T tk_fact = 1;
+ T sum = 1;
+ T term;
+ T lim = N ? ldexp(T(1), 1 - (std::min)(N, tools::digits<T>())) : tools::epsilon<T>();
+
+ for(unsigned k = 1;; ++k)
+ {
+ k_fact *= k;
+ tk_fact *= (2 * k) * (2 * k - 1);
+ term = k_fact * k_fact / (tk_fact * (2 * k + 1) * (2 * k + 1));
+ sum += term;
+ if(term < lim)
+ {
+ break;
+ }
+ }
+ return boost::math::constants::pi<T, boost::math::policies::policy<> >()
+ * log(2 + boost::math::constants::root_three<T, boost::math::policies::policy<> >())
+ / 8
+ + 3 * sum / 8;
+}
+
+namespace khinchin_detail{
+
+template <class T>
+T zeta_polynomial_series(T s, T sc, int digits)
+{
+ BOOST_MATH_STD_USING
+ //
+ // This is algorithm 3 from:
+ //
+ // "An Efficient Algorithm for the Riemann Zeta Function", P. Borwein,
+ // Canadian Mathematical Society, Conference Proceedings, 2000.
+ // See: http://www.cecm.sfu.ca/personal/pborwein/PAPERS/P155.pdf
+ //
+ BOOST_MATH_STD_USING
+ int n = (digits * 19) / 53;
+ T sum = 0;
+ T two_n = ldexp(T(1), n);
+ int ej_sign = 1;
+ for(int j = 0; j < n; ++j)
+ {
+ sum += ej_sign * -two_n / pow(T(j + 1), s);
+ ej_sign = -ej_sign;
+ }
+ T ej_sum = 1;
+ T ej_term = 1;
+ for(int j = n; j <= 2 * n - 1; ++j)
+ {
+ sum += ej_sign * (ej_sum - two_n) / pow(T(j + 1), s);
+ ej_sign = -ej_sign;
+ ej_term *= 2 * n - j;
+ ej_term /= j - n + 1;
+ ej_sum += ej_term;
+ }
+ return -sum / (two_n * (1 - pow(T(2), sc)));
+}
+
+template <class T>
+T khinchin(int digits)
+{
+ BOOST_MATH_STD_USING
+ T sum = 0;
+ T term;
+ T lim = ldexp(T(1), 1-digits);
+ T factor = 0;
+ unsigned last_k = 1;
+ T num = 1;
+ for(unsigned n = 1;; ++n)
+ {
+ for(unsigned k = last_k; k <= 2 * n - 1; ++k)
+ {
+ factor += num / k;
+ num = -num;
+ }
+ last_k = 2 * n;
+ term = (zeta_polynomial_series(T(2 * n), T(1 - T(2 * n)), digits) - 1) * factor / n;
+ sum += term;
+ if(term < lim)
+ break;
+ }
+ return exp(sum / boost::math::constants::ln_two<T, boost::math::policies::policy<> >());
+}
+
+}
+
+template <class T>
+template<int N>
+inline T constant_khinchin<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+ int n = N ? (std::min)(N, tools::digits<T>()) : tools::digits<T>();
+ return khinchin_detail::khinchin<T>(n);
+}
+
+template <class T>
+template<int N>
+inline T constant_extreme_value_skewness<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{ // from e_float constants.cpp
+ // Mathematica: N[12 Sqrt[6] Zeta[3]/Pi^3, 1101]
+ BOOST_MATH_STD_USING
+ T ev(12 * sqrt(static_cast<T>(6)) * zeta_three<T, policies::policy<policies::digits2<N> > >()
+ / pi_cubed<T, policies::policy<policies::digits2<N> > >() );
+
+//T ev(
+//"1.1395470994046486574927930193898461120875997958365518247216557100852480077060706857071875468869385150"
+//"1894272048688553376986765366075828644841024041679714157616857834895702411080704529137366329462558680"
+//"2015498788776135705587959418756809080074611906006528647805347822929577145038743873949415294942796280"
+//"0895597703063466053535550338267721294164578901640163603544404938283861127819804918174973533694090594"
+//"3094963822672055237678432023017824416203652657301470473548274848068762500300316769691474974950757965"
+//"8640779777748741897542093874605477776538884083378029488863880220988107155275203245233994097178778984"
+//"3488995668362387892097897322246698071290011857605809901090220903955815127463328974447572119951192970"
+//"3684453635456559086126406960279692862247058250100678008419431185138019869693206366891639436908462809"
+//"9756051372711251054914491837034685476095423926553367264355374652153595857163724698198860485357368964"
+//"3807049634423621246870868566707915720704996296083373077647528285782964567312903914752617978405994377"
+//"9064157147206717895272199736902453130842229559980076472936976287378945035706933650987259357729800315");
+
+ return ev;
+}
+
+namespace detail{
+//
+// Calculation of the Glaisher constant depends upon calculating the
+// derivative of the zeta function at 2, we can then use the relation:
+// zeta'(2) = 1/6 pi^2 [euler + ln(2pi)-12ln(A)]
+// To get the constant A.
+// See equation 45 at http://mathworld.wolfram.com/RiemannZetaFunction.html.
+//
+// The derivative of the zeta function is computed by direct differentiation
+// of the relation:
+// (1-2^(1-s))zeta(s) = SUM(n=0, INF){ (-n)^n / (n+1)^s }
+// Which gives us 2 slowly converging but alternating sums to compute,
+// for this we use Algorithm 1 from "Convergent Acceleration of Alternating Series",
+// Henri Cohen, Fernando Rodriguez Villegas and Don Zagier, Experimental Mathematics 9:1 (1999).
+// See http://www.math.utexas.edu/users/villegas/publications/conv-accel.pdf
+//
+template <class T>
+T zeta_series_derivative_2(unsigned digits)
+{
+ // Derivative of the series part, evaluated at 2:
+ BOOST_MATH_STD_USING
+ int n = digits * 301 * 13 / 10000;
+ boost::math::itrunc((std::numeric_limits<T>::digits10 + 1) * 1.3);
+ T d = pow(3 + sqrt(T(8)), n);
+ d = (d + 1 / d) / 2;
+ T b = -1;
+ T c = -d;
+ T s = 0;
+ for(int k = 0; k < n; ++k)
+ {
+ T a = -log(T(k+1)) / ((k+1) * (k+1));
+ c = b - c;
+ s = s + c * a;
+ b = (k + n) * (k - n) * b / ((k + T(0.5f)) * (k + 1));
+ }
+ return s / d;
+}
+
+template <class T>
+T zeta_series_2(unsigned digits)
+{
+ // Series part of zeta at 2:
+ BOOST_MATH_STD_USING
+ int n = digits * 301 * 13 / 10000;
+ T d = pow(3 + sqrt(T(8)), n);
+ d = (d + 1 / d) / 2;
+ T b = -1;
+ T c = -d;
+ T s = 0;
+ for(int k = 0; k < n; ++k)
+ {
+ T a = T(1) / ((k + 1) * (k + 1));
+ c = b - c;
+ s = s + c * a;
+ b = (k + n) * (k - n) * b / ((k + T(0.5f)) * (k + 1));
+ }
+ return s / d;
+}
+
+template <class T>
+inline T zeta_series_lead_2()
+{
+ // lead part at 2:
+ return 2;
+}
+
+template <class T>
+inline T zeta_series_derivative_lead_2()
+{
+ // derivative of lead part at 2:
+ return -2 * boost::math::constants::ln_two<T>();
+}
+
+template <class T>
+inline T zeta_derivative_2(unsigned n)
+{
+ // zeta derivative at 2:
+ return zeta_series_derivative_2<T>(n) * zeta_series_lead_2<T>()
+ + zeta_series_derivative_lead_2<T>() * zeta_series_2<T>(n);
+}
+
+} // namespace detail
+
+template <class T>
+template<int N>
+inline T constant_glaisher<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{
+
+ BOOST_MATH_STD_USING
+ typedef policies::policy<policies::digits2<N> > forwarding_policy;
+ int n = N ? (std::min)(N, tools::digits<T>()) : tools::digits<T>();
+ T v = detail::zeta_derivative_2<T>(n);
+ v *= 6;
+ v /= boost::math::constants::pi<T, forwarding_policy>() * boost::math::constants::pi<T, forwarding_policy>();
+ v -= boost::math::constants::euler<T, forwarding_policy>();
+ v -= log(2 * boost::math::constants::pi<T, forwarding_policy>());
+ v /= -12;
+ return exp(v);
+
+ /*
+ // from http://mpmath.googlecode.com/svn/data/glaisher.txt
+ // 20,000 digits of the Glaisher-Kinkelin constant A = exp(1/2 - zeta'(-1))
+ // Computed using A = exp((6 (-zeta'(2))/pi^2 + log 2 pi + gamma)/12)
+ // with Euler-Maclaurin summation for zeta'(2).
+ T g(
+ "1.282427129100622636875342568869791727767688927325001192063740021740406308858826"
+ "46112973649195820237439420646120399000748933157791362775280404159072573861727522"
+ "14334327143439787335067915257366856907876561146686449997784962754518174312394652"
+ "76128213808180219264516851546143919901083573730703504903888123418813674978133050"
+ "93770833682222494115874837348064399978830070125567001286994157705432053927585405"
+ "81731588155481762970384743250467775147374600031616023046613296342991558095879293"
+ "36343887288701988953460725233184702489001091776941712153569193674967261270398013"
+ "52652668868978218897401729375840750167472114895288815996668743164513890306962645"
+ "59870469543740253099606800842447417554061490189444139386196089129682173528798629"
+ "88434220366989900606980888785849587494085307347117090132667567503310523405221054"
+ "14176776156308191919997185237047761312315374135304725819814797451761027540834943"
+ "14384965234139453373065832325673954957601692256427736926358821692159870775858274"
+ "69575162841550648585890834128227556209547002918593263079373376942077522290940187");
+
+ return g;
+ */
+}
+
+template <class T>
+template<int N>
+inline T constant_rayleigh_skewness<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{ // From e_float
+ // 1100 digits of the Rayleigh distribution skewness
+ // Mathematica: N[2 Sqrt[Pi] (Pi - 3)/((4 - Pi)^(3/2)), 1100]
+
+ BOOST_MATH_STD_USING
+ T rs(2 * root_pi<T, policies::policy<policies::digits2<N> > >()
+ * pi_minus_three<T, policies::policy<policies::digits2<N> > >()
+ / pow(four_minus_pi<T, policies::policy<policies::digits2<N> > >(), static_cast<T>(3./2))
+ );
+ // 6.31110657818937138191899351544227779844042203134719497658094585692926819617473725459905027032537306794400047264,
+
+ //"0.6311106578189371381918993515442277798440422031347194976580945856929268196174737254599050270325373067"
+ //"9440004726436754739597525250317640394102954301685809920213808351450851396781817932734836994829371322"
+ //"5797376021347531983451654130317032832308462278373358624120822253764532674177325950686466133508511968"
+ //"2389168716630349407238090652663422922072397393006683401992961569208109477307776249225072042971818671"
+ //"4058887072693437217879039875871765635655476241624825389439481561152126886932506682176611183750503553"
+ //"1218982627032068396407180216351425758181396562859085306247387212297187006230007438534686340210168288"
+ //"8956816965453815849613622117088096547521391672977226658826566757207615552041767516828171274858145957"
+ //"6137539156656005855905288420585194082284972984285863898582313048515484073396332610565441264220790791"
+ //"0194897267890422924599776483890102027823328602965235306539844007677157873140562950510028206251529523"
+ //"7428049693650605954398446899724157486062545281504433364675815915402937209673727753199567661561209251"
+ //"4695589950526053470201635372590001578503476490223746511106018091907936826431407434894024396366284848"); ;
+ return rs;
+}
+
+template <class T>
+template<int N>
+inline T constant_rayleigh_kurtosis_excess<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{ // - (6 Pi^2 - 24 Pi + 16)/((Pi - 4)^2)
+ // Might provide and calculate this using pi_minus_four.
+ BOOST_MATH_STD_USING
+ return - (((static_cast<T>(6) * pi<T, policies::policy<policies::digits2<N> > >()
+ * pi<T, policies::policy<policies::digits2<N> > >())
+ - (static_cast<T>(24) * pi<T, policies::policy<policies::digits2<N> > >()) + static_cast<T>(16) )
+ /
+ ((pi<T, policies::policy<policies::digits2<N> > >() - static_cast<T>(4))
+ * (pi<T, policies::policy<policies::digits2<N> > >() - static_cast<T>(4)))
+ );
+}
+
+template <class T>
+template<int N>
+inline T constant_rayleigh_kurtosis<T>::compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))
+{ // 3 - (6 Pi^2 - 24 Pi + 16)/((Pi - 4)^2)
+ // Might provide and calculate this using pi_minus_four.
+ BOOST_MATH_STD_USING
+ return static_cast<T>(3) - (((static_cast<T>(6) * pi<T, policies::policy<policies::digits2<N> > >()
+ * pi<T, policies::policy<policies::digits2<N> > >())
+ - (static_cast<T>(24) * pi<T, policies::policy<policies::digits2<N> > >()) + static_cast<T>(16) )
+ /
+ ((pi<T, policies::policy<policies::digits2<N> > >() - static_cast<T>(4))
+ * (pi<T, policies::policy<policies::digits2<N> > >() - static_cast<T>(4)))
+ );
+}
+
+}}}} // namespaces
+
+#endif // BOOST_MATH_CALCULATE_CONSTANTS_CONSTANTS_INCLUDED
-// Copyright John Maddock 2005-2006.
-// Copyright Paul A. Bristow 2006-7.
+// Copyright John Maddock 2005-2006, 2011.
+// Copyright Paul A. Bristow 2006-2011.
// Use, modification and distribution are subject to 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)
#define BOOST_MATH_CONSTANTS_CONSTANTS_INCLUDED
#include <boost/math/tools/config.hpp>
+#include <boost/math/policies/policy.hpp>
+#include <boost/math/tools/precision.hpp>
#ifdef BOOST_MSVC
#pragma warning(push)
#pragma warning(disable: 4127 4701)
#endif
+#ifndef BOOST_MATH_NO_LEXICAL_CAST
#include <boost/lexical_cast.hpp>
+#endif
#ifdef BOOST_MSVC
#pragma warning(pop)
#endif
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+
namespace boost{ namespace math
{
namespace constants
{
- // To permit other calculations at about 100 decimal digits with NTL::RR type,
+ // To permit other calculations at about 100 decimal digits with some UDT,
// it is obviously necessary to define constants to this accuracy.
// However, some compilers do not accept decimal digits strings as long as this.
// (This is necessary because you can't use a numeric constant
// since even a long double might not have enough digits).
+ enum construction_method
+ {
+ construct_from_float = 1,
+ construct_from_double = 2,
+ construct_from_long_double = 3,
+ construct_from_string = 4,
+ construct_from_float128 = 5,
+ // Must be the largest value above:
+ construct_max = construct_from_float128
+ };
+
+ //
+ // Max number of binary digits in the string representations
+ // of our constants:
+ //
+ BOOST_STATIC_CONSTANT(int, max_string_digits = (101 * 1000L) / 301L);
+
+ template <class Real, class Policy>
+ struct construction_traits
+ {
+ private:
+ typedef typename policies::precision<Real, Policy>::type t1;
+ typedef typename policies::precision<float, Policy>::type t2;
+ typedef typename policies::precision<double, Policy>::type t3;
+ typedef typename policies::precision<long double, Policy>::type t4;
+#ifdef BOOST_MATH_USE_FLOAT128
+ typedef mpl::int_<113> t5;
+#endif
+ public:
+ typedef typename mpl::if_<
+ mpl::and_<boost::is_convertible<float, Real>, mpl::bool_< t1::value <= t2::value>, mpl::bool_<0 != t1::value> >,
+ mpl::int_<construct_from_float>,
+ typename mpl::if_<
+ mpl::and_<boost::is_convertible<double, Real>, mpl::bool_< t1::value <= t3::value>, mpl::bool_<0 != t1::value> >,
+ mpl::int_<construct_from_double>,
+ typename mpl::if_<
+ mpl::and_<boost::is_convertible<long double, Real>, mpl::bool_< t1::value <= t4::value>, mpl::bool_<0 != t1::value> >,
+ mpl::int_<construct_from_long_double>,
+#ifdef BOOST_MATH_USE_FLOAT128
+ typename mpl::if_<
+ mpl::and_<boost::is_convertible<__float128, Real>, mpl::bool_< t1::value <= t5::value>, mpl::bool_<0 != t1::value> >,
+ mpl::int_<construct_from_float128>,
+ typename mpl::if_<
+ mpl::and_<mpl::bool_< t1::value <= max_string_digits>, mpl::bool_<0 != t1::value> >,
+ mpl::int_<construct_from_string>,
+ mpl::int_<t1::value>
+ >::type
+ >::type
+#else
+ typename mpl::if_<
+ mpl::and_<mpl::bool_< t1::value <= max_string_digits>, mpl::bool_<0 != t1::value> >,
+ mpl::int_<construct_from_string>,
+ mpl::int_<t1::value>
+ >::type
+#endif
+ >::type
+ >::type
+ >::type type;
+ };
+
+#ifdef BOOST_HAS_THREADS
+#define BOOST_MATH_CONSTANT_THREAD_HELPER(name, prefix) \
+ boost::once_flag f = BOOST_ONCE_INIT;\
+ boost::call_once(f, &BOOST_JOIN(BOOST_JOIN(string_, get_), name)<T>);
+#else
+#define BOOST_MATH_CONSTANT_THREAD_HELPER(name, prefix)
+#endif
+
+ namespace detail{
+
+ template <class Real, class Policy = boost::math::policies::policy<> >
+ struct constant_return
+ {
+ typedef typename construction_traits<Real, Policy>::type construct_type;
+ typedef typename mpl::if_c<
+ (construct_type::value == construct_from_string) || (construct_type::value > construct_max),
+ const Real&, Real>::type type;
+ };
+
+ template <class Real>
+ Real convert_from_string(const char* p, const mpl::false_&)
+ {
+#ifdef BOOST_MATH_NO_LEXICAL_CAST
+ // This function should not compile, we don't have the necesary functionality to support it:
+ BOOST_STATIC_ASSERT(sizeof(Real) == 0);
+#else
+ return boost::lexical_cast<Real>(p);
+#endif
+ }
+ template <class Real>
+ const char* convert_from_string(const char* p, const mpl::true_&)
+ {
+ return p;
+ }
+
+ template <class T, const T& (*F)()>
+ struct constant_initializer
+ {
+ static void force_instantiate()
+ {
+ init.force_instantiate();
+ }
+ private:
+ struct initializer
+ {
+ initializer()
+ {
+ F();
+ }
+ void force_instantiate()const{}
+ };
+ static const initializer init;
+ };
+
+ template <class T, const T& (*F)()>
+ typename constant_initializer<T, F>::initializer const constant_initializer<T, F>::init;
+
+ template <class T, int N, const T& (*F)(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>) BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(T))>
+ struct constant_initializer2
+ {
+ static void force_instantiate()
+ {
+ init.force_instantiate();
+ }
+ private:
+ struct initializer
+ {
+ initializer()
+ {
+ F();
+ }
+ void force_instantiate()const{}
+ };
+ static const initializer init;
+ };
+
+ template <class T, int N, const T& (*F)(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>) BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(T))>
+ typename constant_initializer2<T, N, F>::initializer const constant_initializer2<T, N, F>::init;
- #define BOOST_DEFINE_MATH_CONSTANT(name, x, y, exp)\
- template <class T> inline T name(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(T))\
+ }
+
+#ifdef BOOST_MATH_USE_FLOAT128
+# define BOOST_MATH_FLOAT128_CONSTANT_OVERLOAD(x) \
+ static inline BOOST_CONSTEXPR T get(const mpl::int_<construct_from_float128>&)\
+ { return BOOST_JOIN(x, Q); }
+#else
+# define BOOST_MATH_FLOAT128_CONSTANT_OVERLOAD(x)
+#endif
+
+ #define BOOST_DEFINE_MATH_CONSTANT(name, x, y)\
+ namespace detail{\
+ template <class T> struct BOOST_JOIN(constant_, name){\
+ private:\
+ /* The default implementations come next: */ \
+ static inline const T& get_from_string()\
+ {\
+ static const T result = convert_from_string<T>(y, boost::is_convertible<const char*, T>());\
+ return result;\
+ }\
+ /* This one is for very high precision that is none the less known at compile time: */ \
+ template <int N> static T compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>));\
+ template <int N> static inline const T& get_from_compute(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(mpl::int_<N>))\
{\
- static const T result = ::boost::lexical_cast<T>(BOOST_STRINGIZE(BOOST_JOIN(BOOST_JOIN(x, y), BOOST_JOIN(e, exp))));\
+ static const T result = compute<N>();\
return result;\
}\
- template <> inline float name<float>(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(float))\
- { return BOOST_JOIN(BOOST_JOIN(x, BOOST_JOIN(e, exp)), F); }\
- template <> inline double name<double>(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(double))\
- { return BOOST_JOIN(x, BOOST_JOIN(e, exp)); }\
- template <> inline long double name<long double>(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(long double))\
- { return BOOST_JOIN(BOOST_JOIN(x, BOOST_JOIN(e, exp)), L); }
-
- BOOST_DEFINE_MATH_CONSTANT(pi, 3.141592653589793238462643383279502884197169399375105820974944, 59230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196, 0)
- BOOST_DEFINE_MATH_CONSTANT(root_pi, 1.7724538509055160272981674833411451827975, 0, 0)
- BOOST_DEFINE_MATH_CONSTANT(root_half_pi, 1.253314137315500251207882642405522626503, 0, 0)
- BOOST_DEFINE_MATH_CONSTANT(root_two_pi, 2.506628274631000502415765284811045253007, 0, 0)
- BOOST_DEFINE_MATH_CONSTANT(root_ln_four, 1.1774100225154746910115693264596996377473856893858205385225257565000, 2658854698492680841813836877081, 0)
- BOOST_DEFINE_MATH_CONSTANT(e, 2.7182818284590452353602874713526624977572470936999595749669676, 27724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011, 0)
- BOOST_DEFINE_MATH_CONSTANT(half, 0.5, 0, 0)
- BOOST_DEFINE_MATH_CONSTANT(euler, 0.577215664901532860606512090082402431042159335939923598805, 76723488486, 0)
- BOOST_DEFINE_MATH_CONSTANT(root_two, 1.414213562373095048801688724209698078569671875376948073, 17667973799073247846210703885038753432764157273501384623091229702492483605585073721264412149709993583141322266592750559275579995050115278206, 0)
- BOOST_DEFINE_MATH_CONSTANT(ln_two, 0.693147180559945309417232121458176568075500134360255254, 120680009493393621969694715605863326996418687, 0)
- BOOST_DEFINE_MATH_CONSTANT(ln_ln_two, -0.36651292058166432701243915823266946945426344783710526305367771367056, 16153193527385494558228566989083583025230453648347655663425171940646634, 0)
- BOOST_DEFINE_MATH_CONSTANT(third, 0.3333333333333333333333333333333333333333333333333333333333333333333333, 3333333333333333333333333333333333333333333333333333333333333333333333333, 0)
- BOOST_DEFINE_MATH_CONSTANT(twothirds, 0.66666666666666666666666666666666666666666666666666666666666666666666, 66666666666666666666666666666666666666666666666666666666666666666666667, 0)
- BOOST_DEFINE_MATH_CONSTANT(pi_minus_three, 0.141592653589793238462643383279502884197169399375105820974944, 59230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196, 0)
- BOOST_DEFINE_MATH_CONSTANT(four_minus_pi, 0.85840734641020676153735661672049711580283060062489417902505540769218359, 0, 0)
- BOOST_DEFINE_MATH_CONSTANT(pow23_four_minus_pi, 0.79531676737159754434839533505680658072763917332771320544530223438582161, 0, 0)
- BOOST_DEFINE_MATH_CONSTANT(exp_minus_half, 0.6065306597126334236037995349911804534419181354871869556828921587350565194137, 484239986476115079894560, 0)
-
-
- } // namespace constants
+ /* public getters come next */\
+ public:\
+ static inline const T& get(const mpl::int_<construct_from_string>&)\
+ {\
+ constant_initializer<T, & BOOST_JOIN(constant_, name)<T>::get_from_string >::force_instantiate();\
+ return get_from_string();\
+ }\
+ static inline BOOST_CONSTEXPR T get(const mpl::int_<construct_from_float>)\
+ { return BOOST_JOIN(x, F); }\
+ static inline BOOST_CONSTEXPR T get(const mpl::int_<construct_from_double>&)\
+ { return x; }\
+ static inline BOOST_CONSTEXPR T get(const mpl::int_<construct_from_long_double>&)\
+ { return BOOST_JOIN(x, L); }\
+ BOOST_MATH_FLOAT128_CONSTANT_OVERLOAD(x) \
+ template <int N> static inline const T& get(const mpl::int_<N>&)\
+ {\
+ constant_initializer2<T, N, & BOOST_JOIN(constant_, name)<T>::template get_from_compute<N> >::force_instantiate();\
+ return get_from_compute<N>(); \
+ }\
+ /* This one is for true arbitary precision, which may well vary at runtime: */ \
+ static inline T get(const mpl::int_<0>&)\
+ { return tools::digits<T>() > max_string_digits ? compute<0>() : get(mpl::int_<construct_from_string>()); }\
+ }; /* end of struct */\
+ } /* namespace detail */ \
+ \
+ \
+ /* The actual forwarding function: */ \
+ template <class T, class Policy> inline BOOST_CONSTEXPR typename detail::constant_return<T, Policy>::type name(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(T) BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(Policy))\
+ { return detail:: BOOST_JOIN(constant_, name)<T>::get(typename construction_traits<T, Policy>::type()); }\
+ template <class T> inline BOOST_CONSTEXPR typename detail::constant_return<T>::type name(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(T))\
+ { return name<T, boost::math::policies::policy<> >(); }\
+ \
+ \
+ /* Now the namespace specific versions: */ \
+ } namespace float_constants{ static const float name = BOOST_JOIN(x, F); }\
+ namespace double_constants{ static const double name = x; } \
+ namespace long_double_constants{ static const long double name = BOOST_JOIN(x, L); }\
+ namespace constants{
+
+ BOOST_DEFINE_MATH_CONSTANT(half, 5.000000000000000000000000000000000000e-01, "5.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01")
+ BOOST_DEFINE_MATH_CONSTANT(third, 3.333333333333333333333333333333333333e-01, "3.33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333e-01")
+ BOOST_DEFINE_MATH_CONSTANT(twothirds, 6.666666666666666666666666666666666666e-01, "6.66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-01")
+ BOOST_DEFINE_MATH_CONSTANT(two_thirds, 6.666666666666666666666666666666666666e-01, "6.66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-01")
+ BOOST_DEFINE_MATH_CONSTANT(three_quarters, 7.500000000000000000000000000000000000e-01, "7.50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01")
+ BOOST_DEFINE_MATH_CONSTANT(root_two, 1.414213562373095048801688724209698078e+00, "1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623e+00")
+ BOOST_DEFINE_MATH_CONSTANT(root_three, 1.732050807568877293527446341505872366e+00, "1.73205080756887729352744634150587236694280525381038062805580697945193301690880003708114618675724857567562614142e+00")
+ BOOST_DEFINE_MATH_CONSTANT(half_root_two, 7.071067811865475244008443621048490392e-01, "7.07106781186547524400844362104849039284835937688474036588339868995366239231053519425193767163820786367506923115e-01")
+ BOOST_DEFINE_MATH_CONSTANT(ln_two, 6.931471805599453094172321214581765680e-01, "6.93147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996418687542001481021e-01")
+ BOOST_DEFINE_MATH_CONSTANT(ln_ln_two, -3.665129205816643270124391582326694694e-01, "-3.66512920581664327012439158232669469454263447837105263053677713670561615319352738549455822856698908358302523045e-01")
+ BOOST_DEFINE_MATH_CONSTANT(root_ln_four, 1.177410022515474691011569326459699637e+00, "1.17741002251547469101156932645969963774738568938582053852252575650002658854698492680841813836877081106747157858e+00")
+ BOOST_DEFINE_MATH_CONSTANT(one_div_root_two, 7.071067811865475244008443621048490392e-01, "7.07106781186547524400844362104849039284835937688474036588339868995366239231053519425193767163820786367506923115e-01")
+ BOOST_DEFINE_MATH_CONSTANT(pi, 3.141592653589793238462643383279502884e+00, "3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651e+00")
+ BOOST_DEFINE_MATH_CONSTANT(half_pi, 1.570796326794896619231321691639751442e+00, "1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404326e+00")
+ BOOST_DEFINE_MATH_CONSTANT(third_pi, 1.047197551196597746154214461093167628e+00, "1.04719755119659774615421446109316762806572313312503527365831486410260546876206966620934494178070568932738269550e+00")
+ BOOST_DEFINE_MATH_CONSTANT(sixth_pi, 5.235987755982988730771072305465838140e-01, "5.23598775598298873077107230546583814032861566562517636829157432051302734381034833104672470890352844663691347752e-01")
+ BOOST_DEFINE_MATH_CONSTANT(two_pi, 6.283185307179586476925286766559005768e+00, "6.28318530717958647692528676655900576839433879875021164194988918461563281257241799725606965068423413596429617303e+00")
+ BOOST_DEFINE_MATH_CONSTANT(two_thirds_pi, 2.094395102393195492308428922186335256e+00, "2.09439510239319549230842892218633525613144626625007054731662972820521093752413933241868988356141137865476539101e+00")
+ BOOST_DEFINE_MATH_CONSTANT(three_quarters_pi, 2.356194490192344928846982537459627163e+00, "2.35619449019234492884698253745962716314787704953132936573120844423086230471465674897102611900658780098661106488e+00")
+ BOOST_DEFINE_MATH_CONSTANT(four_thirds_pi, 4.188790204786390984616857844372670512e+00, "4.18879020478639098461685784437267051226289253250014109463325945641042187504827866483737976712282275730953078202e+00")
+ BOOST_DEFINE_MATH_CONSTANT(one_div_two_pi, 1.591549430918953357688837633725143620e-01, "1.59154943091895335768883763372514362034459645740456448747667344058896797634226535090113802766253085956072842727e-01")
+ BOOST_DEFINE_MATH_CONSTANT(one_div_root_two_pi, 3.989422804014326779399460599343818684e-01, "3.98942280401432677939946059934381868475858631164934657665925829670657925899301838501252333907306936430302558863e-01")
+ BOOST_DEFINE_MATH_CONSTANT(root_pi, 1.772453850905516027298167483341145182e+00, "1.77245385090551602729816748334114518279754945612238712821380778985291128459103218137495065673854466541622682362e+00")
+ BOOST_DEFINE_MATH_CONSTANT(root_half_pi, 1.253314137315500251207882642405522626e+00, "1.25331413731550025120788264240552262650349337030496915831496178817114682730392098747329791918902863305800498633e+00")
+ BOOST_DEFINE_MATH_CONSTANT(root_two_pi, 2.506628274631000502415765284811045253e+00, "2.50662827463100050241576528481104525300698674060993831662992357634229365460784197494659583837805726611600997267e+00")
+ BOOST_DEFINE_MATH_CONSTANT(log_root_two_pi, 9.189385332046727417803297364056176398e-01, "9.18938533204672741780329736405617639861397473637783412817151540482765695927260397694743298635954197622005646625e-01")
+ BOOST_DEFINE_MATH_CONSTANT(one_div_root_pi, 5.641895835477562869480794515607725858e-01, "5.64189583547756286948079451560772585844050629328998856844085721710642468441493414486743660202107363443028347906e-01")
+ BOOST_DEFINE_MATH_CONSTANT(root_one_div_pi, 5.641895835477562869480794515607725858e-01, "5.64189583547756286948079451560772585844050629328998856844085721710642468441493414486743660202107363443028347906e-01")
+ BOOST_DEFINE_MATH_CONSTANT(pi_minus_three, 1.415926535897932384626433832795028841e-01, "1.41592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513e-01")
+ BOOST_DEFINE_MATH_CONSTANT(four_minus_pi, 8.584073464102067615373566167204971158e-01, "8.58407346410206761537356616720497115802830600624894179025055407692183593713791001371965174657882932017851913487e-01")
+ BOOST_DEFINE_MATH_CONSTANT(pow23_four_minus_pi, 7.953167673715975443483953350568065807e-01, "7.95316767371597544348395335056806580727639173327713205445302234388856268267518187590758006888600828436839800178e-01")
+ BOOST_DEFINE_MATH_CONSTANT(pi_pow_e, 2.245915771836104547342715220454373502e+01, "2.24591577183610454734271522045437350275893151339966922492030025540669260403991179123185197527271430315314500731e+01")
+ BOOST_DEFINE_MATH_CONSTANT(pi_sqr, 9.869604401089358618834490999876151135e+00, "9.86960440108935861883449099987615113531369940724079062641334937622004482241920524300177340371855223182402591377e+00")
+ BOOST_DEFINE_MATH_CONSTANT(pi_sqr_div_six, 1.644934066848226436472415166646025189e+00, "1.64493406684822643647241516664602518921894990120679843773555822937000747040320087383362890061975870530400431896e+00")
+ BOOST_DEFINE_MATH_CONSTANT(pi_cubed, 3.100627668029982017547631506710139520e+01, "3.10062766802998201754763150671013952022252885658851076941445381038063949174657060375667010326028861930301219616e+01")
+ BOOST_DEFINE_MATH_CONSTANT(cbrt_pi, 1.464591887561523263020142527263790391e+00, "1.46459188756152326302014252726379039173859685562793717435725593713839364979828626614568206782035382089750397002e+00")
+ BOOST_DEFINE_MATH_CONSTANT(one_div_cbrt_pi, 6.827840632552956814670208331581645981e-01, "6.82784063255295681467020833158164598108367515632448804042681583118899226433403918237673501922595519865685577274e-01")
+ BOOST_DEFINE_MATH_CONSTANT(e, 2.718281828459045235360287471352662497e+00, "2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516642742746639193e+00")
+ BOOST_DEFINE_MATH_CONSTANT(exp_minus_half, 6.065306597126334236037995349911804534e-01, "6.06530659712633423603799534991180453441918135487186955682892158735056519413748423998647611507989456026423789794e-01")
+ BOOST_DEFINE_MATH_CONSTANT(e_pow_pi, 2.314069263277926900572908636794854738e+01, "2.31406926327792690057290863679485473802661062426002119934450464095243423506904527835169719970675492196759527048e+01")
+ BOOST_DEFINE_MATH_CONSTANT(root_e, 1.648721270700128146848650787814163571e+00, "1.64872127070012814684865078781416357165377610071014801157507931164066102119421560863277652005636664300286663776e+00")
+ BOOST_DEFINE_MATH_CONSTANT(log10_e, 4.342944819032518276511289189166050822e-01, "4.34294481903251827651128918916605082294397005803666566114453783165864649208870774729224949338431748318706106745e-01")
+ BOOST_DEFINE_MATH_CONSTANT(one_div_log10_e, 2.302585092994045684017991454684364207e+00, "2.30258509299404568401799145468436420760110148862877297603332790096757260967735248023599720508959829834196778404e+00")
+ BOOST_DEFINE_MATH_CONSTANT(ln_ten, 2.302585092994045684017991454684364207e+00, "2.30258509299404568401799145468436420760110148862877297603332790096757260967735248023599720508959829834196778404e+00")
+ BOOST_DEFINE_MATH_CONSTANT(degree, 1.745329251994329576923690768488612713e-02, "1.74532925199432957692369076848861271344287188854172545609719144017100911460344944368224156963450948221230449251e-02")
+ BOOST_DEFINE_MATH_CONSTANT(radian, 5.729577951308232087679815481410517033e+01, "5.72957795130823208767981548141051703324054724665643215491602438612028471483215526324409689958511109441862233816e+01")
+ BOOST_DEFINE_MATH_CONSTANT(sin_one, 8.414709848078965066525023216302989996e-01, "8.41470984807896506652502321630298999622563060798371065672751709991910404391239668948639743543052695854349037908e-01")
+ BOOST_DEFINE_MATH_CONSTANT(cos_one, 5.403023058681397174009366074429766037e-01, "5.40302305868139717400936607442976603732310420617922227670097255381100394774471764517951856087183089343571731160e-01")
+ BOOST_DEFINE_MATH_CONSTANT(sinh_one, 1.175201193643801456882381850595600815e+00, "1.17520119364380145688238185059560081515571798133409587022956541301330756730432389560711745208962339184041953333e+00")
+ BOOST_DEFINE_MATH_CONSTANT(cosh_one, 1.543080634815243778477905620757061682e+00, "1.54308063481524377847790562075706168260152911236586370473740221471076906304922369896426472643554303558704685860e+00")
+ BOOST_DEFINE_MATH_CONSTANT(phi, 1.618033988749894848204586834365638117e+00, "1.61803398874989484820458683436563811772030917980576286213544862270526046281890244970720720418939113748475408808e+00")
+ BOOST_DEFINE_MATH_CONSTANT(ln_phi, 4.812118250596034474977589134243684231e-01, "4.81211825059603447497758913424368423135184334385660519661018168840163867608221774412009429122723474997231839958e-01")
+ BOOST_DEFINE_MATH_CONSTANT(one_div_ln_phi, 2.078086921235027537601322606117795767e+00, "2.07808692123502753760132260611779576774219226778328348027813992191974386928553540901445615414453604821933918634e+00")
+ BOOST_DEFINE_MATH_CONSTANT(euler, 5.772156649015328606065120900824024310e-01, "5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447250e-01")
+ BOOST_DEFINE_MATH_CONSTANT(one_div_euler, 1.732454714600633473583025315860829681e+00, "1.73245471460063347358302531586082968115577655226680502204843613287065531408655243008832840219409928068072365714e+00")
+ BOOST_DEFINE_MATH_CONSTANT(euler_sqr, 3.331779238077186743183761363552442266e-01, "3.33177923807718674318376136355244226659417140249629743150833338002265793695756669661263268631715977303039565603e-01")
+ BOOST_DEFINE_MATH_CONSTANT(zeta_two, 1.644934066848226436472415166646025189e+00, "1.64493406684822643647241516664602518921894990120679843773555822937000747040320087383362890061975870530400431896e+00")
+ BOOST_DEFINE_MATH_CONSTANT(zeta_three, 1.202056903159594285399738161511449990e+00, "1.20205690315959428539973816151144999076498629234049888179227155534183820578631309018645587360933525814619915780e+00")
+ BOOST_DEFINE_MATH_CONSTANT(catalan, 9.159655941772190150546035149323841107e-01, "9.15965594177219015054603514932384110774149374281672134266498119621763019776254769479356512926115106248574422619e-01")
+ BOOST_DEFINE_MATH_CONSTANT(glaisher, 1.282427129100622636875342568869791727e+00, "1.28242712910062263687534256886979172776768892732500119206374002174040630885882646112973649195820237439420646120e+00")
+ BOOST_DEFINE_MATH_CONSTANT(khinchin, 2.685452001065306445309714835481795693e+00, "2.68545200106530644530971483548179569382038229399446295305115234555721885953715200280114117493184769799515346591e+00")
+ BOOST_DEFINE_MATH_CONSTANT(extreme_value_skewness, 1.139547099404648657492793019389846112e+00, "1.13954709940464865749279301938984611208759979583655182472165571008524800770607068570718754688693851501894272049e+00")
+ BOOST_DEFINE_MATH_CONSTANT(rayleigh_skewness, 6.311106578189371381918993515442277798e-01, "6.31110657818937138191899351544227779844042203134719497658094585692926819617473725459905027032537306794400047264e-01")
+ BOOST_DEFINE_MATH_CONSTANT(rayleigh_kurtosis, 3.245089300687638062848660410619754415e+00, "3.24508930068763806284866041061975441541706673178920936177133764493367904540874159051490619368679348977426462633e+00")
+ BOOST_DEFINE_MATH_CONSTANT(rayleigh_kurtosis_excess, 2.450893006876380628486604106197544154e-01, "2.45089300687638062848660410619754415417066731789209361771337644933679045408741590514906193686793489774264626328e-01")
+
+ BOOST_DEFINE_MATH_CONSTANT(two_div_pi, 6.366197723675813430755350534900574481e-01, "6.36619772367581343075535053490057448137838582961825794990669376235587190536906140360455211065012343824291370907e-01")
+ BOOST_DEFINE_MATH_CONSTANT(root_two_div_pi, 7.978845608028653558798921198687637369e-01, "7.97884560802865355879892119868763736951717262329869315331851659341315851798603677002504667814613872860605117725e-01")
+
+
+} // namespace constants
} // namespace math
} // namespace boost
+//
+// We deliberately include this *after* all the declarations above,
+// that way the calculation routines can call on other constants above:
+//
+#include <boost/math/constants/calculate_constants.hpp>
+
#endif // BOOST_MATH_CONSTANTS_CONSTANTS_INCLUDED
+
+
//
// This code really defines our own tuple type.
-// It would be nice to reuse std::tr1::tuple
+// It would be nice to reuse boost::math::tuple
// while retaining our own type safety, but it's
// not clear if that's possible. In any case this
// code is *very* lightweight.
// Copyright John Maddock 2006, 2007.
-// Copyright Paul A. Bristow 2006, 2007.
+// Copyright Paul A. Bristow 2006, 2007, 2012.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0.
#include <boost/math/policies/error_handling.hpp>
#include <boost/math/special_functions/fpclassify.hpp>
// using boost::math::isfinite;
+// using boost::math::isnan;
namespace boost{ namespace math{ namespace detail
{
template <class RealType, class Policy>
inline bool check_df(const char* function, RealType const& df, RealType* result, const Policy& pol)
-{
+{ // df > 0 but NOT +infinity allowed.
if((df <= 0) || !(boost::math::isfinite)(df))
{
*result = policies::raise_domain_error<RealType>(
return true;
}
+template <class RealType, class Policy>
+inline bool check_df_gt0_to_inf(const char* function, RealType const& df, RealType* result, const Policy& pol)
+{ // df > 0 or +infinity are allowed.
+ if( (df <= 0) || (boost::math::isnan)(df) )
+ { // is bad df <= 0 or NaN or -infinity.
+ *result = policies::raise_domain_error<RealType>(
+ function,
+ "Degrees of freedom argument is %1%, but must be > 0 !", df, pol);
+ return false;
+ }
+ return true;
+} // check_df_gt0_to_inf
+
+
template <class RealType, class Policy>
inline bool check_scale(
const char* function,
RealType* result,
const Policy& pol)
{
+ // Note that this test catches both infinity and NaN.
+ // Some distributions permit x to be infinite, so these must be tested 1st and return,
+ // leaving this test to catch any NaNs.
+ // See Normal, Logistic and Cauchy for example.
if(!(boost::math::isfinite)(x))
{
*result = policies::raise_domain_error<RealType>(
return false;
}
return true;
+} // bool check_x
+
+template <class RealType, class Policy>
+inline bool check_x_gt0(
+ const char* function,
+ RealType x,
+ RealType* result,
+ const Policy& pol)
+{
+ if(x <= 0)
+ {
+ *result = policies::raise_domain_error<RealType>(
+ function,
+ "Random variate x is %1%, but must be > 0!", x, pol);
+ return false;
+ }
+
+ return true;
// Note that this test catches both infinity and NaN.
// Some special cases permit x to be infinite, so these must be tested 1st,
- // leaving this test to catch any NaNs. see Normal and cauchy for example.
-}
+ // leaving this test to catch any NaNs. See Normal and cauchy for example.
+} // bool check_x_gt0
template <class RealType, class Policy>
inline bool check_positive_x(
-// Copyright Paul A. Bristow 2007.
+// fwd.hpp Forward declarations of Boost.Math distributions.
+
+// Copyright Paul A. Bristow 2007, 2010, 2012.
// Copyright John Maddock 2007.
// Use, modification and distribution are subject to the
#ifndef BOOST_MATH_DISTRIBUTIONS_FWD_HPP
#define BOOST_MATH_DISTRIBUTIONS_FWD_HPP
+// 31 distributions at Boost 1.52
+
namespace boost{ namespace math{
template <class RealType, class Policy>
template <class RealType, class Policy>
class gamma_distribution;
+template <class RealType, class Policy>
+class geometric_distribution;
+
template <class RealType, class Policy>
class hypergeometric_distribution;
+template <class RealType, class Policy>
+class inverse_chi_squared_distribution;
+
+template <class RealType, class Policy>
+class inverse_gamma_distribution;
+
+template <class RealType, class Policy>
+class inverse_gaussian_distribution;
+
template <class RealType, class Policy>
class laplace_distribution;
class negative_binomial_distribution;
template <class RealType, class Policy>
-class non_central_chi_squared_distribution;
+class non_central_beta_distribution;
template <class RealType, class Policy>
-class non_central_beta_distribution;
+class non_central_chi_squared_distribution;
template <class RealType, class Policy>
class non_central_f_distribution;
template <class RealType, class Policy>
class rayleigh_distribution;
+template <class RealType, class Policy>
+class skew_normal_distribution;
+
template <class RealType, class Policy>
class students_t_distribution;
typedef boost::math::extreme_value_distribution<Type, Policy> extreme_value;\
typedef boost::math::fisher_f_distribution<Type, Policy> fisher_f;\
typedef boost::math::gamma_distribution<Type, Policy> gamma;\
+ typedef boost::math::geometric_distribution<Type, Policy> geometric;\
+ typedef boost::math::hypergeometric_distribution<Type, Policy> hypergeometric;\
+ typedef boost::math::inverse_chi_squared_distribution<Type, Policy> inverse_chi_squared;\
+ typedef boost::math::inverse_gaussian_distribution<Type, Policy> inverse_gaussian;\
+ typedef boost::math::inverse_gamma_distribution<Type, Policy> inverse_gamma;\
typedef boost::math::laplace_distribution<Type, Policy> laplace;\
typedef boost::math::logistic_distribution<Type, Policy> logistic;\
typedef boost::math::lognormal_distribution<Type, Policy> lognormal;\
typedef boost::math::negative_binomial_distribution<Type, Policy> negative_binomial;\
+ typedef boost::math::non_central_beta_distribution<Type, Policy> non_central_beta;\
+ typedef boost::math::non_central_chi_squared_distribution<Type, Policy> non_central_chi_squared;\
+ typedef boost::math::non_central_f_distribution<Type, Policy> non_central_f;\
+ typedef boost::math::non_central_t_distribution<Type, Policy> non_central_t;\
typedef boost::math::normal_distribution<Type, Policy> normal;\
typedef boost::math::pareto_distribution<Type, Policy> pareto;\
typedef boost::math::poisson_distribution<Type, Policy> poisson;\
typedef boost::math::rayleigh_distribution<Type, Policy> rayleigh;\
+ typedef boost::math::skew_normal_distribution<Type, Policy> skew_normal;\
typedef boost::math::students_t_distribution<Type, Policy> students_t;\
typedef boost::math::triangular_distribution<Type, Policy> triangular;\
typedef boost::math::uniform_distribution<Type, Policy> uniform;\
- typedef boost::math::weibull_distribution<Type, Policy> weibull;\
- typedef boost::math::non_central_chi_squared_distribution<Type, Policy> non_central_chi_squared;\
- typedef boost::math::non_central_beta_distribution<Type, Policy> non_central_beta;\
- typedef boost::math::non_central_f_distribution<Type, Policy> non_central_f;\
- typedef boost::math::non_central_t_distribution<Type, Policy> non_central_t;\
- typedef boost::math::hypergeometric_distribution<Type, Policy> hypergeometric;\
+ typedef boost::math::weibull_distribution<Type, Policy> weibull;
#endif // BOOST_MATH_DISTRIBUTIONS_FWD_HPP
typedef RealType value_type;
typedef Policy policy_type;
- normal_distribution(RealType mean = 0, RealType sd = 1)
- : m_mean(mean), m_sd(sd)
+ normal_distribution(RealType l_mean = 0, RealType sd = 1)
+ : m_mean(l_mean), m_sd(sd)
{ // Default is a 'standard' normal distribution N01.
static const char* function = "boost::math::normal_distribution<%1%>::normal_distribution";
RealType result;
detail::check_scale(function, sd, &result, Policy());
- detail::check_location(function, mean, &result, Policy());
+ detail::check_location(function, l_mean, &result, Policy());
}
RealType mean()const
template <class RealType, class Policy>
inline const std::pair<RealType, RealType> range(const normal_distribution<RealType, Policy>& /*dist*/)
{ // Range of permissible values for random variable x.
- using boost::math::tools::max_value;
- return std::pair<RealType, RealType>(-max_value<RealType>(), max_value<RealType>()); // - to + max value.
+ if (std::numeric_limits<RealType>::has_infinity)
+ {
+ return std::pair<RealType, RealType>(-std::numeric_limits<RealType>::infinity(), std::numeric_limits<RealType>::infinity()); // - to + infinity.
+ }
+ else
+ { // Can only use max_value.
+ using boost::math::tools::max_value;
+ return std::pair<RealType, RealType>(-max_value<RealType>(), max_value<RealType>()); // - to + max value.
+ }
}
template <class RealType, class Policy>
inline const std::pair<RealType, RealType> support(const normal_distribution<RealType, Policy>& /*dist*/)
{ // Range of supported values for random variable x.
// This is range where cdf rises from 0 to 1, and outside it, the pdf is zero.
-
+ if (std::numeric_limits<RealType>::has_infinity)
+ {
+ return std::pair<RealType, RealType>(-std::numeric_limits<RealType>::infinity(), std::numeric_limits<RealType>::infinity()); // - to + infinity.
+ }
+ else
+ { // Can only use max_value.
using boost::math::tools::max_value;
return std::pair<RealType, RealType>(-max_value<RealType>(), max_value<RealType>()); // - to + max value.
+ }
}
template <class RealType, class Policy>
RealType mean = dist.mean();
static const char* function = "boost::math::pdf(const normal_distribution<%1%>&, %1%)";
- if((boost::math::isinf)(x))
- {
- return 0; // pdf + and - infinity is zero.
- }
- // Below produces MSVC 4127 warnings, so the above used instead.
- //if(std::numeric_limits<RealType>::has_infinity && abs(x) == std::numeric_limits<RealType>::infinity())
- //{ // pdf + and - infinity is zero.
- // return 0;
- //}
- RealType result;
+ RealType result = 0;
if(false == detail::check_scale(function, sd, &result, Policy()))
{
return result;
{
return result;
}
+ if((boost::math::isinf)(x))
+ {
+ return 0; // pdf + and - infinity is zero.
+ }
+ // Below produces MSVC 4127 warnings, so the above used instead.
+ //if(std::numeric_limits<RealType>::has_infinity && abs(x) == std::numeric_limits<RealType>::infinity())
+ //{ // pdf + and - infinity is zero.
+ // return 0;
+ //}
if(false == detail::check_x(function, x, &result, Policy()))
{
return result;
RealType sd = dist.standard_deviation();
RealType mean = dist.mean();
static const char* function = "boost::math::cdf(const normal_distribution<%1%>&, %1%)";
- RealType result;
+ RealType result = 0;
if(false == detail::check_scale(function, sd, &result, Policy()))
{
return result;
RealType mean = dist.mean();
static const char* function = "boost::math::quantile(const normal_distribution<%1%>&, %1%)";
- RealType result;
+ RealType result = 0;
if(false == detail::check_scale(function, sd, &result, Policy()))
return result;
if(false == detail::check_location(function, mean, &result, Policy()))
RealType x = c.param;
static const char* function = "boost::math::cdf(const complement(normal_distribution<%1%>&), %1%)";
+ RealType result = 0;
+ if(false == detail::check_scale(function, sd, &result, Policy()))
+ return result;
+ if(false == detail::check_location(function, mean, &result, Policy()))
+ return result;
if((boost::math::isinf)(x))
{
if(x < 0) return 1; // cdf complement -infinity is unity.
//{ // cdf complement -infinity is unity.
// return 1;
//}
- RealType result;
- if(false == detail::check_scale(function, sd, &result, Policy()))
- return result;
- if(false == detail::check_location(function, mean, &result, Policy()))
- return result;
if(false == detail::check_x(function, x, &result, Policy()))
return result;
RealType sd = c.dist.standard_deviation();
RealType mean = c.dist.mean();
static const char* function = "boost::math::quantile(const complement(normal_distribution<%1%>&), %1%)";
- RealType result;
+ RealType result = 0;
if(false == detail::check_scale(function, sd, &result, Policy()))
return result;
if(false == detail::check_location(function, mean, &result, Policy()))
#include <iomanip>
#include <string>
#include <cerrno>
+#include <boost/config/no_tr1/complex.hpp>
#include <boost/config/no_tr1/cmath.hpp>
#include <stdexcept>
#include <boost/math/tools/config.hpp>
# pragma warning(disable: 4996) // _SCL_SECURE_NO_DEPRECATE
# pragma warning(disable: 4512) // assignment operator could not be generated.
// And warnings in error handling:
-# pragma warning(disable: 4702) // unreachable code
+# pragma warning(disable: 4702) // unreachable code.
// Note that this only occurs when the compiler can deduce code is unreachable,
// for example when policy macros are used to ignore errors rather than throw.
#endif
namespace policies{
//
-// Forward declarations of user error handlers,
+// Forward declarations of user error handlers,
// it's up to the user to provide the definition of these:
//
template <class T>
T user_denorm_error(const char* function, const char* message, const T& val);
template <class T>
T user_evaluation_error(const char* function, const char* message, const T& val);
-template <class T>
-T user_rounding_error(const char* function, const char* message, const T& val);
+template <class T, class TargetType>
+T user_rounding_error(const char* function, const char* message, const T& val, const TargetType& t);
template <class T>
T user_indeterminate_result_error(const char* function, const char* message, const T& val);
{
//
// Helper function to avoid binding rvalue to non-const-reference,
-// in other words a warning suppression mechansim:
+// in other words a warning suppression mechanism:
//
template <class Formatter, class Group>
inline std::string do_format(Formatter f, const Group& g)
template <class T>
inline T raise_domain_error(
- const char* function,
- const char* message,
- const T& val,
+ const char* function,
+ const char* message,
+ const T& val,
const ::boost::math::policies::domain_error< ::boost::math::policies::throw_on_error>&)
{
raise_error<std::domain_error, T>(function, message, val);
template <class T>
inline T raise_domain_error(
- const char* ,
- const char* ,
- const T& ,
+ const char* ,
+ const char* ,
+ const T& ,
const ::boost::math::policies::domain_error< ::boost::math::policies::ignore_error>&)
{
// This may or may not do the right thing, but the user asked for the error
template <class T>
inline T raise_domain_error(
- const char* ,
- const char* ,
- const T& ,
+ const char* ,
+ const char* ,
+ const T& ,
const ::boost::math::policies::domain_error< ::boost::math::policies::errno_on_error>&)
{
errno = EDOM;
template <class T>
inline T raise_domain_error(
- const char* function,
- const char* message,
- const T& val,
+ const char* function,
+ const char* message,
+ const T& val,
const ::boost::math::policies::domain_error< ::boost::math::policies::user_error>&)
{
return user_domain_error(function, message, val);
template <class T>
inline T raise_pole_error(
- const char* function,
- const char* message,
- const T& val,
+ const char* function,
+ const char* message,
+ const T& val,
const ::boost::math::policies::pole_error< ::boost::math::policies::throw_on_error>&)
{
return boost::math::policies::detail::raise_domain_error(function, message, val, ::boost::math::policies::domain_error< ::boost::math::policies::throw_on_error>());
template <class T>
inline T raise_pole_error(
- const char* function,
- const char* message,
- const T& val,
+ const char* function,
+ const char* message,
+ const T& val,
const ::boost::math::policies::pole_error< ::boost::math::policies::ignore_error>&)
{
return ::boost::math::policies::detail::raise_domain_error(function, message, val, ::boost::math::policies::domain_error< ::boost::math::policies::ignore_error>());
template <class T>
inline T raise_pole_error(
- const char* function,
- const char* message,
- const T& val,
+ const char* function,
+ const char* message,
+ const T& val,
const ::boost::math::policies::pole_error< ::boost::math::policies::errno_on_error>&)
{
return ::boost::math::policies::detail::raise_domain_error(function, message, val, ::boost::math::policies::domain_error< ::boost::math::policies::errno_on_error>());
template <class T>
inline T raise_pole_error(
- const char* function,
- const char* message,
- const T& val,
+ const char* function,
+ const char* message,
+ const T& val,
const ::boost::math::policies::pole_error< ::boost::math::policies::user_error>&)
{
return user_pole_error(function, message, val);
}
+
template <class T>
inline T raise_overflow_error(
- const char* function,
- const char* message,
+ const char* function,
+ const char* message,
const ::boost::math::policies::overflow_error< ::boost::math::policies::throw_on_error>&)
{
raise_error<std::overflow_error, T>(function, message ? message : "numeric overflow");
- // we never get here:
+ // We should never get here:
return std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : boost::math::tools::max_value<T>();
}
template <class T>
inline T raise_overflow_error(
- const char* ,
- const char* ,
+ const char* function,
+ const char* message,
+ const T& val,
+ const ::boost::math::policies::overflow_error< ::boost::math::policies::throw_on_error>&)
+{
+ raise_error<std::overflow_error, T>(function, message ? message : "numeric overflow", val);
+ // We should never get here:
+ return std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : boost::math::tools::max_value<T>();
+}
+
+template <class T>
+inline T raise_overflow_error(
+ const char* ,
+ const char* ,
const ::boost::math::policies::overflow_error< ::boost::math::policies::ignore_error>&)
{
// This may or may not do the right thing, but the user asked for the error
template <class T>
inline T raise_overflow_error(
- const char* ,
- const char* ,
+ const char* ,
+ const char* ,
const ::boost::math::policies::overflow_error< ::boost::math::policies::errno_on_error>&)
{
errno = ERANGE;
template <class T>
inline T raise_overflow_error(
- const char* function,
- const char* message,
+ const char* function,
+ const char* message,
const ::boost::math::policies::overflow_error< ::boost::math::policies::user_error>&)
{
return user_overflow_error(function, message, std::numeric_limits<T>::infinity());
}
+
template <class T>
inline T raise_underflow_error(
- const char* function,
- const char* message,
+ const char* function,
+ const char* message,
const ::boost::math::policies::underflow_error< ::boost::math::policies::throw_on_error>&)
{
raise_error<std::underflow_error, T>(function, message ? message : "numeric underflow");
- // we never get here:
+ // We should never get here:
return 0;
}
template <class T>
inline T raise_underflow_error(
- const char* ,
- const char* ,
+ const char* ,
+ const char* ,
const ::boost::math::policies::underflow_error< ::boost::math::policies::ignore_error>&)
{
// This may or may not do the right thing, but the user asked for the error
template <class T>
inline T raise_underflow_error(
- const char* /* function */,
- const char* /* message */,
+ const char* /* function */,
+ const char* /* message */,
const ::boost::math::policies::underflow_error< ::boost::math::policies::errno_on_error>&)
{
errno = ERANGE;
template <class T>
inline T raise_underflow_error(
- const char* function,
- const char* message,
+ const char* function,
+ const char* message,
const ::boost::math::policies::underflow_error< ::boost::math::policies::user_error>&)
{
return user_underflow_error(function, message, T(0));
template <class T>
inline T raise_denorm_error(
- const char* function,
- const char* message,
+ const char* function,
+ const char* message,
const T& /* val */,
const ::boost::math::policies::denorm_error< ::boost::math::policies::throw_on_error>&)
{
template <class T>
inline T raise_denorm_error(
- const char* ,
- const char* ,
+ const char* ,
+ const char* ,
const T& val,
const ::boost::math::policies::denorm_error< ::boost::math::policies::ignore_error>&)
{
template <class T>
inline T raise_denorm_error(
- const char* ,
- const char* ,
+ const char* ,
+ const char* ,
const T& val,
const ::boost::math::policies::denorm_error< ::boost::math::policies::errno_on_error>&)
{
template <class T>
inline T raise_denorm_error(
- const char* function,
- const char* message,
+ const char* function,
+ const char* message,
const T& val,
const ::boost::math::policies::denorm_error< ::boost::math::policies::user_error>&)
{
template <class T>
inline T raise_evaluation_error(
- const char* function,
- const char* message,
- const T& val,
+ const char* function,
+ const char* message,
+ const T& val,
const ::boost::math::policies::evaluation_error< ::boost::math::policies::throw_on_error>&)
{
raise_error<boost::math::evaluation_error, T>(function, message, val);
template <class T>
inline T raise_evaluation_error(
- const char* ,
- const char* ,
- const T& val,
+ const char* ,
+ const char* ,
+ const T& val,
const ::boost::math::policies::evaluation_error< ::boost::math::policies::ignore_error>&)
{
// This may or may not do the right thing, but the user asked for the error
template <class T>
inline T raise_evaluation_error(
- const char* ,
- const char* ,
- const T& val,
+ const char* ,
+ const char* ,
+ const T& val,
const ::boost::math::policies::evaluation_error< ::boost::math::policies::errno_on_error>&)
{
errno = EDOM;
template <class T>
inline T raise_evaluation_error(
- const char* function,
- const char* message,
- const T& val,
+ const char* function,
+ const char* message,
+ const T& val,
const ::boost::math::policies::evaluation_error< ::boost::math::policies::user_error>&)
{
return user_evaluation_error(function, message, val);
}
-template <class T>
-inline T raise_rounding_error(
- const char* function,
- const char* message,
- const T& val,
+template <class T, class TargetType>
+inline TargetType raise_rounding_error(
+ const char* function,
+ const char* message,
+ const T& val,
+ const TargetType&,
const ::boost::math::policies::rounding_error< ::boost::math::policies::throw_on_error>&)
{
raise_error<boost::math::rounding_error, T>(function, message, val);
// we never get here:
- return T(0);
+ return TargetType(0);
}
-template <class T>
-inline T raise_rounding_error(
- const char* ,
- const char* ,
- const T& val,
+template <class T, class TargetType>
+inline TargetType raise_rounding_error(
+ const char* ,
+ const char* ,
+ const T& val,
+ const TargetType&,
const ::boost::math::policies::rounding_error< ::boost::math::policies::ignore_error>&)
{
// This may or may not do the right thing, but the user asked for the error
// to be ignored so here we go anyway:
- return val;
+ BOOST_STATIC_ASSERT(std::numeric_limits<TargetType>::is_specialized);
+ return val > 0 ? (std::numeric_limits<TargetType>::max)() : (std::numeric_limits<TargetType>::is_integer ? (std::numeric_limits<TargetType>::min)() : -(std::numeric_limits<TargetType>::max)());
}
-template <class T>
-inline T raise_rounding_error(
- const char* ,
- const char* ,
- const T& val,
+template <class T, class TargetType>
+inline TargetType raise_rounding_error(
+ const char* ,
+ const char* ,
+ const T& val,
+ const TargetType&,
const ::boost::math::policies::rounding_error< ::boost::math::policies::errno_on_error>&)
{
errno = ERANGE;
// This may or may not do the right thing, but the user asked for the error
// to be silent so here we go anyway:
- return val;
+ BOOST_STATIC_ASSERT(std::numeric_limits<TargetType>::is_specialized);
+ return val > 0 ? (std::numeric_limits<TargetType>::max)() : (std::numeric_limits<TargetType>::is_integer ? (std::numeric_limits<TargetType>::min)() : -(std::numeric_limits<TargetType>::max)());
}
-template <class T>
-inline T raise_rounding_error(
- const char* function,
- const char* message,
- const T& val,
+template <class T, class TargetType>
+inline TargetType raise_rounding_error(
+ const char* function,
+ const char* message,
+ const T& val,
+ const TargetType& t,
const ::boost::math::policies::rounding_error< ::boost::math::policies::user_error>&)
{
- return user_rounding_error(function, message, val);
+ return user_rounding_error(function, message, val, t);
}
template <class T, class R>
inline T raise_indeterminate_result_error(
- const char* function,
- const char* message,
- const T& val,
+ const char* function,
+ const char* message,
+ const T& val,
const R& ,
const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::throw_on_error>&)
{
template <class T, class R>
inline T raise_indeterminate_result_error(
- const char* ,
- const char* ,
- const T& ,
- const R& result,
+ const char* ,
+ const char* ,
+ const T& ,
+ const R& result,
const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::ignore_error>&)
{
// This may or may not do the right thing, but the user asked for the error
template <class T, class R>
inline T raise_indeterminate_result_error(
- const char* ,
- const char* ,
- const T& ,
- const R& result,
+ const char* ,
+ const char* ,
+ const T& ,
+ const R& result,
const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::errno_on_error>&)
{
errno = EDOM;
template <class T, class R>
inline T raise_indeterminate_result_error(
- const char* function,
- const char* message,
- const T& val,
- const R& ,
+ const char* function,
+ const char* message,
+ const T& val,
+ const R& ,
const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::user_error>&)
{
return user_indeterminate_result_error(function, message, val);
{
typedef typename Policy::domain_error_type policy_type;
return detail::raise_domain_error(
- function, message ? message : "Domain Error evaluating function at %1%",
+ function, message ? message : "Domain Error evaluating function at %1%",
val, policy_type());
}
{
typedef typename Policy::pole_error_type policy_type;
return detail::raise_pole_error(
- function, message ? message : "Evaluation of function at pole %1%",
+ function, message ? message : "Evaluation of function at pole %1%",
val, policy_type());
}
{
typedef typename Policy::overflow_error_type policy_type;
return detail::raise_overflow_error<T>(
- function, message ? message : "Overflow Error",
+ function, message ? message : "Overflow Error",
policy_type());
}
+template <class T, class Policy>
+inline T raise_overflow_error(const char* function, const char* message, const T& val, const Policy&)
+{
+ typedef typename Policy::overflow_error_type policy_type;
+ return detail::raise_overflow_error(
+ function, message ? message : "Overflow evaluating function at %1%",
+ val, policy_type());
+}
+
template <class T, class Policy>
inline T raise_underflow_error(const char* function, const char* message, const Policy&)
{
typedef typename Policy::underflow_error_type policy_type;
return detail::raise_underflow_error<T>(
- function, message ? message : "Underflow Error",
+ function, message ? message : "Underflow Error",
policy_type());
}
{
typedef typename Policy::denorm_error_type policy_type;
return detail::raise_denorm_error<T>(
- function, message ? message : "Denorm Error",
+ function, message ? message : "Denorm Error",
val,
policy_type());
}
{
typedef typename Policy::evaluation_error_type policy_type;
return detail::raise_evaluation_error(
- function, message ? message : "Internal Evaluation Error, best value so far was %1%",
+ function, message ? message : "Internal Evaluation Error, best value so far was %1%",
val, policy_type());
}
-template <class T, class Policy>
-inline T raise_rounding_error(const char* function, const char* message, const T& val, const Policy&)
+template <class T, class TargetType, class Policy>
+inline TargetType raise_rounding_error(const char* function, const char* message, const T& val, const TargetType& t, const Policy&)
{
typedef typename Policy::rounding_error_type policy_type;
return detail::raise_rounding_error(
- function, message ? message : "Value %1% can not be represented in the target integer type.",
- val, policy_type());
+ function, message ? message : "Value %1% can not be represented in the target integer type.",
+ val, t, policy_type());
}
template <class T, class R, class Policy>
return false;
}
template <class R, class T, class Policy>
+inline bool check_overflow(std::complex<T> val, R* result, const char* function, const Policy& pol)
+{
+ typedef typename R::value_type r_type;
+ r_type re, im;
+ bool r = check_overflow<r_type>(val.real(), &re, function, pol);
+ r = check_overflow<r_type>(val.imag(), &im, function, pol) || r;
+ *result = R(re, im);
+ return r;
+}
+template <class R, class T, class Policy>
inline bool check_underflow(T val, R* result, const char* function, const Policy& pol)
{
if((val != 0) && (static_cast<R>(val) == 0))
return false;
}
template <class R, class T, class Policy>
+inline bool check_underflow(std::complex<T> val, R* result, const char* function, const Policy& pol)
+{
+ typedef typename R::value_type r_type;
+ r_type re, im;
+ bool r = check_underflow<r_type>(val.real(), &re, function, pol);
+ r = check_underflow<r_type>(val.imag(), &im, function, pol) || r;
+ *result = R(re, im);
+ return r;
+}
+template <class R, class T, class Policy>
inline bool check_denorm(T val, R* result, const char* function, const Policy& pol)
{
BOOST_MATH_STD_USING
}
return false;
}
+template <class R, class T, class Policy>
+inline bool check_denorm(std::complex<T> val, R* result, const char* function, const Policy& pol)
+{
+ typedef typename R::value_type r_type;
+ r_type re, im;
+ bool r = check_denorm<r_type>(val.real(), &re, function, pol);
+ r = check_denorm<r_type>(val.imag(), &im, function, pol) || r;
+ *result = R(re, im);
+ return r;
+}
// Default instantiations with ignore_error policy.
template <class R, class T>
inline bool check_overflow(T /* val */, R* /* result */, const char* /* function */, const overflow_error<ignore_error>&){ return false; }
template <class R, class T>
+inline bool check_overflow(std::complex<T> /* val */, R* /* result */, const char* /* function */, const overflow_error<ignore_error>&){ return false; }
+template <class R, class T>
inline bool check_underflow(T /* val */, R* /* result */, const char* /* function */, const underflow_error<ignore_error>&){ return false; }
template <class R, class T>
+inline bool check_underflow(std::complex<T> /* val */, R* /* result */, const char* /* function */, const underflow_error<ignore_error>&){ return false; }
+template <class R, class T>
inline bool check_denorm(T /* val */, R* /* result*/, const char* /* function */, const denorm_error<ignore_error>&){ return false; }
+template <class R, class T>
+inline bool check_denorm(std::complex<T> /* val */, R* /* result*/, const char* /* function */, const denorm_error<ignore_error>&){ return false; }
} // namespace detail
//
// Most of what follows will evaluate to a no-op:
//
- R result;
+ R result = 0;
if(detail::check_overflow<R>(val, &result, function, overflow_type()))
return result;
if(detail::check_underflow<R>(val, &result, function, underflow_type()))
return static_cast<R>(val);
}
-template <class Policy>
+template <class T, class Policy>
inline void check_series_iterations(const char* function, boost::uintmax_t max_iter, const Policy& pol)
{
if(max_iter >= policies::get_max_series_iterations<Policy>())
- raise_evaluation_error<boost::uintmax_t>(
+ raise_evaluation_error<T>(
function,
- "Series evaluation exceeded %1% iterations, giving up now.", max_iter, pol);
+ "Series evaluation exceeded %1% iterations, giving up now.", static_cast<T>(static_cast<double>(max_iter)), pol);
}
-template <class Policy>
+template <class T, class Policy>
inline void check_root_iterations(const char* function, boost::uintmax_t max_iter, const Policy& pol)
{
if(max_iter >= policies::get_max_root_iterations<Policy>())
- raise_evaluation_error<boost::uintmax_t>(
+ raise_evaluation_error<T>(
function,
- "Root finding evaluation exceeded %1% iterations, giving up now.", max_iter, pol);
+ "Root finding evaluation exceeded %1% iterations, giving up now.", static_cast<T>(static_cast<double>(max_iter)), pol);
}
} //namespace policies
//
// Mathematically undefined properties:
//
- typedef typename detail::find_arg<arg_list, is_assert_undefined<mpl::_1>, discrete_quantile<> >::type assert_undefined_type;
+ typedef typename detail::find_arg<arg_list, is_assert_undefined<mpl::_1>, assert_undefined<> >::type assert_undefined_type;
//
// Max iterations:
//
//
// Mathematically undefined properties:
//
- typedef typename detail::find_arg<arg_list, is_assert_undefined<mpl::_1>, discrete_quantile<> >::type assert_undefined_type;
+ typedef typename detail::find_arg<arg_list, is_assert_undefined<mpl::_1>, typename Policy::assert_undefined_type >::type assert_undefined_type;
//
// Max iterations:
//
- typedef typename detail::find_arg<arg_list, is_max_series_iterations<mpl::_1>, max_series_iterations<> >::type max_series_iterations_type;
- typedef typename detail::find_arg<arg_list, is_max_root_iterations<mpl::_1>, max_root_iterations<> >::type max_root_iterations_type;
+ typedef typename detail::find_arg<arg_list, is_max_series_iterations<mpl::_1>, typename Policy::max_series_iterations_type>::type max_series_iterations_type;
+ typedef typename detail::find_arg<arg_list, is_max_root_iterations<mpl::_1>, typename Policy::max_root_iterations_type>::type max_root_iterations_type;
//
// Define a typelist of the policies:
//
template <class Real, class Policy>
struct precision
{
+ BOOST_STATIC_ASSERT( ::std::numeric_limits<Real>::radix == 2);
typedef typename Policy::precision_type precision_type;
typedef basic_digits<Real> digits_t;
typedef typename mpl::if_<
template <class Real, class Policy>
struct precision
{
+ BOOST_STATIC_ASSERT((::std::numeric_limits<Real>::radix == 2) || ((::std::numeric_limits<Real>::is_specialized == 0) || (::std::numeric_limits<Real>::digits == 0)));
#ifndef __BORLANDC__
typedef typename Policy::precision_type precision_type;
typedef typename mpl::if_c<
#endif
+#ifdef BOOST_MATH_USE_FLOAT128
+
+template <class Policy>
+struct precision<__float128, Policy>
+{
+ typedef mpl::int_<113> type;
+};
+
+#endif
+
namespace detail{
template <class T, class Policy>
{
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
BOOST_STATIC_ASSERT( ::std::numeric_limits<T>::is_specialized);
+ BOOST_STATIC_ASSERT( ::std::numeric_limits<T>::radix == 2);
#else
BOOST_ASSERT(::std::numeric_limits<T>::is_specialized);
+ BOOST_ASSERT(::std::numeric_limits<T>::radix == 2);
#endif
typedef typename boost::math::policies::precision<T, Policy>::type p_t;
typedef mpl::bool_<p_t::value <= std::numeric_limits<boost::uintmax_t>::digits> is_small_int;
template <class T, class Policy>
inline T get_epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(T))
{
- typedef mpl::bool_< std::numeric_limits<T>::is_specialized > tag_type;
+ typedef mpl::bool_< (std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::radix == 2)) > tag_type;
return detail::get_epsilon_imp<T, Policy>(tag_type());
}
template <class P>
struct is_policy : public mpl::bool_< ::boost::math::policies::detail::is_policy_imp<P>::value> {};
+//
+// Helper traits class for distribution error handling:
+//
+template <class Policy>
+struct constructor_error_check
+{
+ typedef typename Policy::domain_error_type domain_error_type;
+ typedef typename mpl::if_c<
+ (domain_error_type::value == throw_on_error) || (domain_error_type::value == user_error),
+ mpl::true_,
+ mpl::false_>::type type;
+};
+
+template <class Policy>
+struct method_error_check
+{
+ typedef typename Policy::domain_error_type domain_error_type;
+ typedef typename mpl::if_c<
+ (domain_error_type::value == throw_on_error) && (domain_error_type::value != user_error),
+ mpl::false_,
+ mpl::true_>::type type;
+};
+
}}} // namespaces
#endif // BOOST_MATH_POLICY_HPP
--- /dev/null
+// Copyright John Maddock 2006, 2007, 2012.
+// Copyright Paul A. Bristow 2006, 2007, 2012
+
+// Use, modification and distribution are subject to 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)
+
+// This file includes *all* the special functions.
+// this may be useful if many are used
+// - to avoid including each function individually.
+
+#ifndef BOOST_MATH_SPECIAL_FUNCTIONS_HPP
+#define BOOST_MATH_SPECIAL_FUNCTIONS_HPP
+
+#include <boost/math/special_functions/airy.hpp>
+#include <boost/math/special_functions/acosh.hpp>
+#include <boost/math/special_functions/asinh.hpp>
+#include <boost/math/special_functions/atanh.hpp>
+#include <boost/math/special_functions/bessel.hpp>
+#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/binomial.hpp>
+#include <boost/math/special_functions/cbrt.hpp>
+#include <boost/math/special_functions/cos_pi.hpp>
+#include <boost/math/special_functions/digamma.hpp>
+#include <boost/math/special_functions/ellint_1.hpp>
+#include <boost/math/special_functions/ellint_2.hpp>
+#include <boost/math/special_functions/ellint_3.hpp>
+#include <boost/math/special_functions/ellint_rc.hpp>
+#include <boost/math/special_functions/ellint_rd.hpp>
+#include <boost/math/special_functions/ellint_rf.hpp>
+#include <boost/math/special_functions/ellint_rj.hpp>
+#include <boost/math/special_functions/erf.hpp>
+#include <boost/math/special_functions/expint.hpp>
+#include <boost/math/special_functions/expm1.hpp>
+#include <boost/math/special_functions/factorials.hpp>
+#include <boost/math/special_functions/fpclassify.hpp>
+#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/hermite.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+#include <boost/math/special_functions/jacobi_elliptic.hpp>
+#include <boost/math/special_functions/laguerre.hpp>
+#include <boost/math/special_functions/lanczos.hpp>
+#include <boost/math/special_functions/legendre.hpp>
+#include <boost/math/special_functions/log1p.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/special_functions/next.hpp>
+#include <boost/math/special_functions/owens_t.hpp>
+#include <boost/math/special_functions/powm1.hpp>
+#include <boost/math/special_functions/sign.hpp>
+#include <boost/math/special_functions/sin_pi.hpp>
+#include <boost/math/special_functions/sinc.hpp>
+#include <boost/math/special_functions/sinhc.hpp>
+#include <boost/math/special_functions/spherical_harmonic.hpp>
+#include <boost/math/special_functions/sqrt1pm1.hpp>
+#include <boost/math/special_functions/zeta.hpp>
+#include <boost/math/special_functions/modf.hpp>
+#include <boost/math/special_functions/round.hpp>
+#include <boost/math/special_functions/trunc.hpp>
+#include <boost/math/special_functions/pow.hpp>
+#include <boost/math/special_functions/next.hpp>
+#include <boost/math/special_functions/owens_t.hpp>
+#include <boost/math/special_functions/hankel.hpp>
+
+#endif // BOOST_MATH_SPECIAL_FUNCTIONS_HPP
--- /dev/null
+// boost asinh.hpp header file
+
+// (C) Copyright Eric Ford 2001 & Hubert Holin.
+// (C) Copyright John Maddock 2008.
+// 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)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_ACOSH_HPP
+#define BOOST_ACOSH_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/config.hpp>
+#include <boost/math/tools/precision.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/special_functions/log1p.hpp>
+#include <boost/math/constants/constants.hpp>
+
+// This is the inverse of the hyperbolic cosine function.
+
+namespace boost
+{
+ namespace math
+ {
+ namespace detail
+ {
+#if defined(__GNUC__) && (__GNUC__ < 3)
+ // gcc 2.x ignores function scope using declarations,
+ // put them in the scope of the enclosing namespace instead:
+
+ using ::std::abs;
+ using ::std::sqrt;
+ using ::std::log;
+
+ using ::std::numeric_limits;
+#endif
+
+ template<typename T, typename Policy>
+ inline T acosh_imp(const T x, const Policy& pol)
+ {
+ BOOST_MATH_STD_USING
+
+ if(x < 1)
+ {
+ return policies::raise_domain_error<T>(
+ "boost::math::acosh<%1%>(%1%)",
+ "acosh requires x >= 1, but got x = %1%.", x, pol);
+ }
+ else if ((x - 1) >= tools::root_epsilon<T>())
+ {
+ if (x > 1 / tools::root_epsilon<T>())
+ {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcCosh/06/01/06/01/0001/
+ // approximation by laurent series in 1/x at 0+ order from -1 to 0
+ return log(x) + constants::ln_two<T>();
+ }
+ else if(x < 1.5f)
+ {
+ // This is just a rearrangement of the standard form below
+ // devised to minimse loss of precision when x ~ 1:
+ T y = x - 1;
+ return boost::math::log1p(y + sqrt(y * y + 2 * y), pol);
+ }
+ else
+ {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcCosh/02/
+ return( log( x + sqrt(x * x - 1) ) );
+ }
+ }
+ else
+ {
+ // see http://functions.wolfram.com/ElementaryFunctions/ArcCosh/06/01/04/01/0001/
+ T y = x - 1;
+
+ // approximation by taylor series in y at 0 up to order 2
+ T result = sqrt(2 * y) * (1 - y /12 + 3 * y * y / 160);
+ return result;
+ }
+ }
+ }
+
+ template<typename T, typename Policy>
+ inline typename tools::promote_args<T>::type acosh(T x, const Policy&)
+ {
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::acosh_imp(static_cast<value_type>(x), forwarding_policy()),
+ "boost::math::acosh<%1%>(%1%)");
+ }
+ template<typename T>
+ inline typename tools::promote_args<T>::type acosh(T x)
+ {
+ return boost::math::acosh(x, policies::policy<>());
+ }
+
+ }
+}
+
+#endif /* BOOST_ACOSH_HPP */
+
+
--- /dev/null
+// Copyright John Maddock 2012.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_AIRY_HPP
+#define BOOST_MATH_AIRY_HPP
+
+#include <boost/math/special_functions/bessel.hpp>
+#include <boost/math/special_functions/cbrt.hpp>
+#include <boost/math/special_functions/detail/airy_ai_bi_zero.hpp>
+#include <boost/math/tools/roots.hpp>
+
+namespace boost{ namespace math{
+
+namespace detail{
+
+template <class T, class Policy>
+T airy_ai_imp(T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(x < 0)
+ {
+ T p = (-x * sqrt(-x) * 2) / 3;
+ T v = T(1) / 3;
+ T j1 = boost::math::cyl_bessel_j(v, p, pol);
+ T j2 = boost::math::cyl_bessel_j(-v, p, pol);
+ T ai = sqrt(-x) * (j1 + j2) / 3;
+ //T bi = sqrt(-x / 3) * (j2 - j1);
+ return ai;
+ }
+ else if(fabs(x * x * x) / 6 < tools::epsilon<T>())
+ {
+ T tg = boost::math::tgamma(constants::twothirds<T>(), pol);
+ T ai = 1 / (pow(T(3), constants::twothirds<T>()) * tg);
+ //T bi = 1 / (sqrt(boost::math::cbrt(T(3))) * tg);
+ return ai;
+ }
+ else
+ {
+ T p = 2 * x * sqrt(x) / 3;
+ T v = T(1) / 3;
+ //T j1 = boost::math::cyl_bessel_i(-v, p, pol);
+ //T j2 = boost::math::cyl_bessel_i(v, p, pol);
+ //
+ // Note that although we can calculate ai from j1 and j2, the accuracy is horrible
+ // as we're subtracting two very large values, so use the Bessel K relation instead:
+ //
+ T ai = cyl_bessel_k(v, p, pol) * sqrt(x / 3) / boost::math::constants::pi<T>(); //sqrt(x) * (j1 - j2) / 3;
+ //T bi = sqrt(x / 3) * (j1 + j2);
+ return ai;
+ }
+}
+
+template <class T, class Policy>
+T airy_bi_imp(T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(x < 0)
+ {
+ T p = (-x * sqrt(-x) * 2) / 3;
+ T v = T(1) / 3;
+ T j1 = boost::math::cyl_bessel_j(v, p, pol);
+ T j2 = boost::math::cyl_bessel_j(-v, p, pol);
+ //T ai = sqrt(-x) * (j1 + j2) / 3;
+ T bi = sqrt(-x / 3) * (j2 - j1);
+ return bi;
+ }
+ else if(fabs(x * x * x) / 6 < tools::epsilon<T>())
+ {
+ T tg = boost::math::tgamma(constants::twothirds<T>(), pol);
+ //T ai = 1 / (pow(T(3), constants::twothirds<T>()) * tg);
+ T bi = 1 / (sqrt(boost::math::cbrt(T(3))) * tg);
+ return bi;
+ }
+ else
+ {
+ T p = 2 * x * sqrt(x) / 3;
+ T v = T(1) / 3;
+ T j1 = boost::math::cyl_bessel_i(-v, p, pol);
+ T j2 = boost::math::cyl_bessel_i(v, p, pol);
+ T bi = sqrt(x / 3) * (j1 + j2);
+ return bi;
+ }
+}
+
+template <class T, class Policy>
+T airy_ai_prime_imp(T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(x < 0)
+ {
+ T p = (-x * sqrt(-x) * 2) / 3;
+ T v = T(2) / 3;
+ T j1 = boost::math::cyl_bessel_j(v, p, pol);
+ T j2 = boost::math::cyl_bessel_j(-v, p, pol);
+ T aip = -x * (j1 - j2) / 3;
+ return aip;
+ }
+ else if(fabs(x * x) / 2 < tools::epsilon<T>())
+ {
+ T tg = boost::math::tgamma(constants::third<T>(), pol);
+ T aip = 1 / (boost::math::cbrt(T(3)) * tg);
+ return -aip;
+ }
+ else
+ {
+ T p = 2 * x * sqrt(x) / 3;
+ T v = T(2) / 3;
+ //T j1 = boost::math::cyl_bessel_i(-v, p, pol);
+ //T j2 = boost::math::cyl_bessel_i(v, p, pol);
+ //
+ // Note that although we can calculate ai from j1 and j2, the accuracy is horrible
+ // as we're subtracting two very large values, so use the Bessel K relation instead:
+ //
+ T aip = -cyl_bessel_k(v, p, pol) * x / (boost::math::constants::root_three<T>() * boost::math::constants::pi<T>());
+ return aip;
+ }
+}
+
+template <class T, class Policy>
+T airy_bi_prime_imp(T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(x < 0)
+ {
+ T p = (-x * sqrt(-x) * 2) / 3;
+ T v = T(2) / 3;
+ T j1 = boost::math::cyl_bessel_j(v, p, pol);
+ T j2 = boost::math::cyl_bessel_j(-v, p, pol);
+ T aip = -x * (j1 + j2) / constants::root_three<T>();
+ return aip;
+ }
+ else if(fabs(x * x) / 2 < tools::epsilon<T>())
+ {
+ T tg = boost::math::tgamma(constants::third<T>(), pol);
+ T bip = sqrt(boost::math::cbrt(T(3))) / tg;
+ return bip;
+ }
+ else
+ {
+ T p = 2 * x * sqrt(x) / 3;
+ T v = T(2) / 3;
+ T j1 = boost::math::cyl_bessel_i(-v, p, pol);
+ T j2 = boost::math::cyl_bessel_i(v, p, pol);
+ T aip = x * (j1 + j2) / boost::math::constants::root_three<T>();
+ return aip;
+ }
+}
+
+template <class T, class Policy>
+T airy_ai_zero_imp(unsigned m, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names, needed for log, sqrt.
+
+ // Handle case when the zero'th zero is requested.
+ if(m == 0U)
+ {
+ return policies::raise_domain_error<T>("boost::math::airy_ai_zero<%1%>(%1%,%1%)",
+ "The requested rank of the zero is %1%, but must be 1 or more !", static_cast<T>(m), pol);
+ }
+
+ // Set up the initial guess for the upcoming root-finding.
+ const T guess_root = boost::math::detail::airy_zero::airy_ai_zero_detail::initial_guess<T>(m);
+
+ // Select the maximum allowed iterations, being at least 24.
+ boost::uintmax_t number_of_iterations = (std::max)(24, int(std::numeric_limits<T>::digits10));
+
+ // Select the desired number of binary digits of precision.
+ // Account for the radix of number representations having non-two radix!
+ const int my_digits2 = int(float(std::numeric_limits<T>::digits)
+ * ( log(float(std::numeric_limits<T>::radix))
+ / log(2.0F)));
+
+ // Use a dynamic tolerance because the roots get closer the higher m gets.
+ T tolerance;
+
+ if (m <= 10U) { tolerance = T(0.3F); }
+ else if(m <= 100U) { tolerance = T(0.1F); }
+ else if(m <= 1000U) { tolerance = T(0.05F); }
+ else { tolerance = T(1) / sqrt(T(m)); }
+
+ // Perform the root-finding using Newton-Raphson iteration from Boost.Math.
+ const T am =
+ boost::math::tools::newton_raphson_iterate(
+ boost::math::detail::airy_zero::airy_ai_zero_detail::function_object_ai_and_ai_prime<T, Policy>(pol),
+ guess_root,
+ T(guess_root - tolerance),
+ T(guess_root + tolerance),
+ my_digits2,
+ number_of_iterations);
+
+ static_cast<void>(number_of_iterations);
+
+ return am;
+}
+
+template <class T, class Policy>
+T airy_bi_zero_imp(unsigned m, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names, needed for log, sqrt.
+
+ // Handle case when the zero'th zero is requested.
+ if(m == 0U)
+ {
+ return policies::raise_domain_error<T>("boost::math::airy_bi_zero<%1%>(%1%,%1%)",
+ "The requested rank of the zero is %1%, but must be 1 or more !", static_cast<T>(m), pol);
+ }
+ // Set up the initial guess for the upcoming root-finding.
+ const T guess_root = boost::math::detail::airy_zero::airy_bi_zero_detail::initial_guess<T>(m);
+
+ // Select the maximum allowed iterations, being at least 24.
+ boost::uintmax_t number_of_iterations = (std::max)(24, int(std::numeric_limits<T>::digits10));
+
+ // Select the desired number of binary digits of precision.
+ // Account for the radix of number representations having non-two radix!
+ const int my_digits2 = int(float(std::numeric_limits<T>::digits)
+ * ( log(float(std::numeric_limits<T>::radix))
+ / log(2.0F)));
+
+ // Use a dynamic tolerance because the roots get closer the higher m gets.
+ T tolerance;
+
+ if (m <= 10U) { tolerance = T(0.3F); }
+ else if(m <= 100U) { tolerance = T(0.1F); }
+ else if(m <= 1000U) { tolerance = T(0.05F); }
+ else { tolerance = T(1) / sqrt(T(m)); }
+
+ // Perform the root-finding using Newton-Raphson iteration from Boost.Math.
+ const T bm =
+ boost::math::tools::newton_raphson_iterate(
+ boost::math::detail::airy_zero::airy_bi_zero_detail::function_object_bi_and_bi_prime<T, Policy>(pol),
+ guess_root,
+ T(guess_root - tolerance),
+ T(guess_root + tolerance),
+ my_digits2,
+ number_of_iterations);
+
+ static_cast<void>(number_of_iterations);
+
+ return bm;
+}
+
+} // namespace detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type airy_ai(T x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::airy_ai_imp<value_type>(static_cast<value_type>(x), forwarding_policy()), "boost::math::airy<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type airy_ai(T x)
+{
+ return airy_ai(x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type airy_bi(T x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::airy_bi_imp<value_type>(static_cast<value_type>(x), forwarding_policy()), "boost::math::airy<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type airy_bi(T x)
+{
+ return airy_bi(x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type airy_ai_prime(T x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::airy_ai_prime_imp<value_type>(static_cast<value_type>(x), forwarding_policy()), "boost::math::airy<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type airy_ai_prime(T x)
+{
+ return airy_ai_prime(x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type airy_bi_prime(T x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::airy_bi_prime_imp<value_type>(static_cast<value_type>(x), forwarding_policy()), "boost::math::airy<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type airy_bi_prime(T x)
+{
+ return airy_bi_prime(x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline T airy_ai_zero(unsigned m, const Policy& /*pol*/)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename policies::evaluation<T, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<T>::is_integer, "Airy return type must be a floating-point type.");
+ return policies::checked_narrowing_cast<T, Policy>(detail::airy_ai_zero_imp<value_type>(m, forwarding_policy()), "boost::math::airy_ai_zero<%1%>(unsigned)");
+}
+
+template <class T>
+inline T airy_ai_zero(unsigned m)
+{
+ return airy_ai_zero<T>(m, policies::policy<>());
+}
+
+template <class T, class OutputIterator, class Policy>
+inline OutputIterator airy_ai_zero(
+ unsigned start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it,
+ const Policy& pol)
+{
+ typedef T result_type;
+ BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<result_type>::is_integer, "Airy return type must be a floating-point type.");
+
+ for(unsigned i = 0; i < number_of_zeros; ++i)
+ {
+ *out_it = boost::math::airy_ai_zero<result_type>(start_index + i, pol);
+ ++out_it;
+ }
+ return out_it;
+}
+
+template <class T, class OutputIterator>
+inline OutputIterator airy_ai_zero(
+ unsigned start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it)
+{
+ return airy_ai_zero<T>(start_index, number_of_zeros, out_it, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline T airy_bi_zero(unsigned m, const Policy& /*pol*/)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename policies::evaluation<T, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<T>::is_integer, "Airy return type must be a floating-point type.");
+ return policies::checked_narrowing_cast<T, Policy>(detail::airy_bi_zero_imp<value_type>(m, forwarding_policy()), "boost::math::airy_bi_zero<%1%>(unsigned)");
+}
+
+template <typename T>
+inline T airy_bi_zero(unsigned m)
+{
+ return airy_bi_zero<T>(m, policies::policy<>());
+}
+
+template <class T, class OutputIterator, class Policy>
+inline OutputIterator airy_bi_zero(
+ unsigned start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it,
+ const Policy& pol)
+{
+ typedef T result_type;
+ BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<result_type>::is_integer, "Airy return type must be a floating-point type.");
+
+ for(unsigned i = 0; i < number_of_zeros; ++i)
+ {
+ *out_it = boost::math::airy_bi_zero<result_type>(start_index + i, pol);
+ ++out_it;
+ }
+ return out_it;
+}
+
+template <class T, class OutputIterator>
+inline OutputIterator airy_bi_zero(
+ unsigned start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it)
+{
+ return airy_bi_zero<T>(start_index, number_of_zeros, out_it, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_AIRY_HPP
--- /dev/null
+// boost asinh.hpp header file
+
+// (C) Copyright Eric Ford & Hubert Holin 2001.
+// (C) Copyright John Maddock 2008.
+// 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)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_ASINH_HPP
+#define BOOST_ASINH_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+
+#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/config.hpp>
+#include <boost/math/tools/precision.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/special_functions/sqrt1pm1.hpp>
+#include <boost/math/special_functions/log1p.hpp>
+#include <boost/math/constants/constants.hpp>
+
+// This is the inverse of the hyperbolic sine function.
+
+namespace boost
+{
+ namespace math
+ {
+ namespace detail{
+#if defined(__GNUC__) && (__GNUC__ < 3)
+ // gcc 2.x ignores function scope using declarations,
+ // put them in the scope of the enclosing namespace instead:
+
+ using ::std::abs;
+ using ::std::sqrt;
+ using ::std::log;
+
+ using ::std::numeric_limits;
+#endif
+
+ template<typename T, class Policy>
+ inline T asinh_imp(const T x, const Policy& pol)
+ {
+ BOOST_MATH_STD_USING
+
+ if (x >= tools::forth_root_epsilon<T>())
+ {
+ if (x > 1 / tools::root_epsilon<T>())
+ {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcSinh/06/01/06/01/0001/
+ // approximation by laurent series in 1/x at 0+ order from -1 to 1
+ return constants::ln_two<T>() + log(x) + 1/ (4 * x * x);
+ }
+ else if(x < 0.5f)
+ {
+ // As below, but rearranged to preserve digits:
+ return boost::math::log1p(x + boost::math::sqrt1pm1(x * x, pol), pol);
+ }
+ else
+ {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcSinh/02/
+ return( log( x + sqrt(x*x+1) ) );
+ }
+ }
+ else if (x <= -tools::forth_root_epsilon<T>())
+ {
+ return(-asinh(-x, pol));
+ }
+ else
+ {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcSinh/06/01/03/01/0001/
+ // approximation by taylor series in x at 0 up to order 2
+ T result = x;
+
+ if (abs(x) >= tools::root_epsilon<T>())
+ {
+ T x3 = x*x*x;
+
+ // approximation by taylor series in x at 0 up to order 4
+ result -= x3/static_cast<T>(6);
+ }
+
+ return(result);
+ }
+ }
+ }
+
+ template<typename T>
+ inline typename tools::promote_args<T>::type asinh(T x)
+ {
+ return boost::math::asinh(x, policies::policy<>());
+ }
+ template<typename T, typename Policy>
+ inline typename tools::promote_args<T>::type asinh(T x, const Policy&)
+ {
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::asinh_imp(static_cast<value_type>(x), forwarding_policy()),
+ "boost::math::asinh<%1%>(%1%)");
+ }
+
+ }
+}
+
+#endif /* BOOST_ASINH_HPP */
+
--- /dev/null
+// boost atanh.hpp header file
+
+// (C) Copyright Hubert Holin 2001.
+// (C) Copyright John Maddock 2008.
+// 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)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_ATANH_HPP
+#define BOOST_ATANH_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+
+#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/config.hpp>
+#include <boost/math/tools/precision.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/special_functions/log1p.hpp>
+
+// This is the inverse of the hyperbolic tangent function.
+
+namespace boost
+{
+ namespace math
+ {
+ namespace detail
+ {
+#if defined(__GNUC__) && (__GNUC__ < 3)
+ // gcc 2.x ignores function scope using declarations,
+ // put them in the scope of the enclosing namespace instead:
+
+ using ::std::abs;
+ using ::std::sqrt;
+ using ::std::log;
+
+ using ::std::numeric_limits;
+#endif
+
+ // This is the main fare
+
+ template<typename T, typename Policy>
+ inline T atanh_imp(const T x, const Policy& pol)
+ {
+ BOOST_MATH_STD_USING
+ static const char* function = "boost::math::atanh<%1%>(%1%)";
+
+ if(x < -1)
+ {
+ return policies::raise_domain_error<T>(
+ function,
+ "atanh requires x >= -1, but got x = %1%.", x, pol);
+ }
+ else if(x > 1)
+ {
+ return policies::raise_domain_error<T>(
+ function,
+ "atanh requires x <= 1, but got x = %1%.", x, pol);
+ }
+ else if(x < -1 + tools::epsilon<T>())
+ {
+ // -Infinity:
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ else if(x > 1 - tools::epsilon<T>())
+ {
+ // Infinity:
+ return policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ else if(abs(x) >= tools::forth_root_epsilon<T>())
+ {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcTanh/02/
+ if(abs(x) < 0.5f)
+ return (boost::math::log1p(x, pol) - boost::math::log1p(-x, pol)) / 2;
+ return(log( (1 + x) / (1 - x) ) / 2);
+ }
+ else
+ {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcTanh/06/01/03/01/
+ // approximation by taylor series in x at 0 up to order 2
+ T result = x;
+
+ if (abs(x) >= tools::root_epsilon<T>())
+ {
+ T x3 = x*x*x;
+
+ // approximation by taylor series in x at 0 up to order 4
+ result += x3/static_cast<T>(3);
+ }
+
+ return(result);
+ }
+ }
+ }
+
+ template<typename T, typename Policy>
+ inline typename tools::promote_args<T>::type atanh(T x, const Policy&)
+ {
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::atanh_imp(static_cast<value_type>(x), forwarding_policy()),
+ "boost::math::atanh<%1%>(%1%)");
+ }
+ template<typename T>
+ inline typename tools::promote_args<T>::type atanh(T x)
+ {
+ return boost::math::atanh(x, policies::policy<>());
+ }
+
+ }
+}
+
+#endif /* BOOST_ATANH_HPP */
+
+
+
--- /dev/null
+// Copyright (c) 2007, 2013 John Maddock
+// Copyright Christopher Kormanyos 2013.
+// Use, modification and distribution are subject to 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)
+//
+// This header just defines the function entry points, and adds dispatch
+// to the right implementation method. Most of the implementation details
+// are in separate headers and copyright Xiaogang Zhang.
+//
+#ifndef BOOST_MATH_BESSEL_HPP
+#define BOOST_MATH_BESSEL_HPP
+
+#ifdef _MSC_VER
+# pragma once
+#endif
+
+#include <boost/math/special_functions/detail/bessel_jy.hpp>
+#include <boost/math/special_functions/detail/bessel_jn.hpp>
+#include <boost/math/special_functions/detail/bessel_yn.hpp>
+#include <boost/math/special_functions/detail/bessel_jy_zero.hpp>
+#include <boost/math/special_functions/detail/bessel_ik.hpp>
+#include <boost/math/special_functions/detail/bessel_i0.hpp>
+#include <boost/math/special_functions/detail/bessel_i1.hpp>
+#include <boost/math/special_functions/detail/bessel_kn.hpp>
+#include <boost/math/special_functions/detail/iconv.hpp>
+#include <boost/math/special_functions/sin_pi.hpp>
+#include <boost/math/special_functions/cos_pi.hpp>
+#include <boost/math/special_functions/sinc.hpp>
+#include <boost/math/special_functions/trunc.hpp>
+#include <boost/math/special_functions/round.hpp>
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/promotion.hpp>
+#include <boost/math/tools/series.hpp>
+#include <boost/math/tools/roots.hpp>
+
+namespace boost{ namespace math{
+
+namespace detail{
+
+template <class T, class Policy>
+struct sph_bessel_j_small_z_series_term
+{
+ typedef T result_type;
+
+ sph_bessel_j_small_z_series_term(unsigned v_, T x)
+ : N(0), v(v_)
+ {
+ BOOST_MATH_STD_USING
+ mult = x / 2;
+ if(v + 3 > max_factorial<T>::value)
+ {
+ term = v * log(mult) - boost::math::lgamma(v+1+T(0.5f), Policy());
+ term = exp(term);
+ }
+ else
+ term = pow(mult, T(v)) / boost::math::tgamma(v+1+T(0.5f), Policy());
+ mult *= -mult;
+ }
+ T operator()()
+ {
+ T r = term;
+ ++N;
+ term *= mult / (N * T(N + v + 0.5f));
+ return r;
+ }
+private:
+ unsigned N;
+ unsigned v;
+ T mult;
+ T term;
+};
+
+template <class T, class Policy>
+inline T sph_bessel_j_small_z_series(unsigned v, T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names
+ sph_bessel_j_small_z_series_term<T, Policy> s(v, x);
+ boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+ T zero = 0;
+ T result = boost::math::tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter, zero);
+#else
+ T result = boost::math::tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter);
+#endif
+ policies::check_series_iterations<T>("boost::math::sph_bessel_j_small_z_series<%1%>(%1%,%1%)", max_iter, pol);
+ return result * sqrt(constants::pi<T>() / 4);
+}
+
+template <class T, class Policy>
+T cyl_bessel_j_imp(T v, T x, const bessel_no_int_tag& t, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ static const char* function = "boost::math::bessel_j<%1%>(%1%,%1%)";
+ if(x < 0)
+ {
+ // better have integer v:
+ if(floor(v) == v)
+ {
+ T r = cyl_bessel_j_imp(v, T(-x), t, pol);
+ if(iround(v, pol) & 1)
+ r = -r;
+ return r;
+ }
+ else
+ return policies::raise_domain_error<T>(
+ function,
+ "Got x = %1%, but we need x >= 0", x, pol);
+ }
+
+ T j, y;
+ bessel_jy(v, x, &j, &y, need_j, pol);
+ return j;
+}
+
+template <class T, class Policy>
+inline T cyl_bessel_j_imp(T v, T x, const bessel_maybe_int_tag&, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names.
+ int ival = detail::iconv(v, pol);
+ // If v is an integer, use the integer recursion
+ // method, both that and Steeds method are O(v):
+ if((0 == v - ival))
+ {
+ return bessel_jn(ival, x, pol);
+ }
+ return cyl_bessel_j_imp(v, x, bessel_no_int_tag(), pol);
+}
+
+template <class T, class Policy>
+inline T cyl_bessel_j_imp(int v, T x, const bessel_int_tag&, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ return bessel_jn(v, x, pol);
+}
+
+template <class T, class Policy>
+inline T sph_bessel_j_imp(unsigned n, T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names
+ if(x < 0)
+ return policies::raise_domain_error<T>(
+ "boost::math::sph_bessel_j<%1%>(%1%,%1%)",
+ "Got x = %1%, but function requires x > 0.", x, pol);
+ //
+ // Special case, n == 0 resolves down to the sinus cardinal of x:
+ //
+ if(n == 0)
+ return boost::math::sinc_pi(x, pol);
+ //
+ // Special case for x == 0:
+ //
+ if(x == 0)
+ return 0;
+ //
+ // When x is small we may end up with 0/0, use series evaluation
+ // instead, especially as it converges rapidly:
+ //
+ if(x < 1)
+ return sph_bessel_j_small_z_series(n, x, pol);
+ //
+ // Default case is just a naive evaluation of the definition:
+ //
+ return sqrt(constants::pi<T>() / (2 * x))
+ * cyl_bessel_j_imp(T(T(n)+T(0.5f)), x, bessel_no_int_tag(), pol);
+}
+
+template <class T, class Policy>
+T cyl_bessel_i_imp(T v, T x, const Policy& pol)
+{
+ //
+ // This handles all the bessel I functions, note that we don't optimise
+ // for integer v, other than the v = 0 or 1 special cases, as Millers
+ // algorithm is at least as inefficient as the general case (the general
+ // case has better error handling too).
+ //
+ BOOST_MATH_STD_USING
+ if(x < 0)
+ {
+ // better have integer v:
+ if(floor(v) == v)
+ {
+ T r = cyl_bessel_i_imp(v, T(-x), pol);
+ if(iround(v, pol) & 1)
+ r = -r;
+ return r;
+ }
+ else
+ return policies::raise_domain_error<T>(
+ "boost::math::cyl_bessel_i<%1%>(%1%,%1%)",
+ "Got x = %1%, but we need x >= 0", x, pol);
+ }
+ if(x == 0)
+ {
+ return (v == 0) ? 1 : 0;
+ }
+ if(v == 0.5f)
+ {
+ // common special case, note try and avoid overflow in exp(x):
+ if(x >= tools::log_max_value<T>())
+ {
+ T e = exp(x / 2);
+ return e * (e / sqrt(2 * x * constants::pi<T>()));
+ }
+ return sqrt(2 / (x * constants::pi<T>())) * sinh(x);
+ }
+ if(policies::digits<T, Policy>() <= 64)
+ {
+ if(v == 0)
+ {
+ return bessel_i0(x);
+ }
+ if(v == 1)
+ {
+ return bessel_i1(x);
+ }
+ }
+ if((v > 0) && (x / v < 0.25))
+ return bessel_i_small_z_series(v, x, pol);
+ T I, K;
+ bessel_ik(v, x, &I, &K, need_i, pol);
+ return I;
+}
+
+template <class T, class Policy>
+inline T cyl_bessel_k_imp(T v, T x, const bessel_no_int_tag& /* t */, const Policy& pol)
+{
+ static const char* function = "boost::math::cyl_bessel_k<%1%>(%1%,%1%)";
+ BOOST_MATH_STD_USING
+ if(x < 0)
+ {
+ return policies::raise_domain_error<T>(
+ function,
+ "Got x = %1%, but we need x > 0", x, pol);
+ }
+ if(x == 0)
+ {
+ return (v == 0) ? policies::raise_overflow_error<T>(function, 0, pol)
+ : policies::raise_domain_error<T>(
+ function,
+ "Got x = %1%, but we need x > 0", x, pol);
+ }
+ T I, K;
+ bessel_ik(v, x, &I, &K, need_k, pol);
+ return K;
+}
+
+template <class T, class Policy>
+inline T cyl_bessel_k_imp(T v, T x, const bessel_maybe_int_tag&, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ if((floor(v) == v))
+ {
+ return bessel_kn(itrunc(v), x, pol);
+ }
+ return cyl_bessel_k_imp(v, x, bessel_no_int_tag(), pol);
+}
+
+template <class T, class Policy>
+inline T cyl_bessel_k_imp(int v, T x, const bessel_int_tag&, const Policy& pol)
+{
+ return bessel_kn(v, x, pol);
+}
+
+template <class T, class Policy>
+inline T cyl_neumann_imp(T v, T x, const bessel_no_int_tag&, const Policy& pol)
+{
+ static const char* function = "boost::math::cyl_neumann<%1%>(%1%,%1%)";
+
+ BOOST_MATH_INSTRUMENT_VARIABLE(v);
+ BOOST_MATH_INSTRUMENT_VARIABLE(x);
+
+ if(x <= 0)
+ {
+ return (v == 0) && (x == 0) ?
+ policies::raise_overflow_error<T>(function, 0, pol)
+ : policies::raise_domain_error<T>(
+ function,
+ "Got x = %1%, but result is complex for x <= 0", x, pol);
+ }
+ T j, y;
+ bessel_jy(v, x, &j, &y, need_y, pol);
+ //
+ // Post evaluation check for internal overflow during evaluation,
+ // can occur when x is small and v is large, in which case the result
+ // is -INF:
+ //
+ if(!(boost::math::isfinite)(y))
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+ return y;
+}
+
+template <class T, class Policy>
+inline T cyl_neumann_imp(T v, T x, const bessel_maybe_int_tag&, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ BOOST_MATH_INSTRUMENT_VARIABLE(v);
+ BOOST_MATH_INSTRUMENT_VARIABLE(x);
+
+ if(floor(v) == v)
+ {
+ if(asymptotic_bessel_large_x_limit(v, x))
+ {
+ T r = asymptotic_bessel_y_large_x_2(static_cast<T>(abs(v)), x);
+ if((v < 0) && (itrunc(v, pol) & 1))
+ r = -r;
+ BOOST_MATH_INSTRUMENT_VARIABLE(r);
+ return r;
+ }
+ else
+ {
+ T r = bessel_yn(itrunc(v, pol), x, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(r);
+ return r;
+ }
+ }
+ T r = cyl_neumann_imp<T>(v, x, bessel_no_int_tag(), pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(r);
+ return r;
+}
+
+template <class T, class Policy>
+inline T cyl_neumann_imp(int v, T x, const bessel_int_tag&, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ BOOST_MATH_INSTRUMENT_VARIABLE(v);
+ BOOST_MATH_INSTRUMENT_VARIABLE(x);
+
+ if(asymptotic_bessel_large_x_limit(T(v), x))
+ {
+ T r = asymptotic_bessel_y_large_x_2(static_cast<T>(abs(v)), x);
+ if((v < 0) && (v & 1))
+ r = -r;
+ return r;
+ }
+ else
+ return bessel_yn(v, x, pol);
+}
+
+template <class T, class Policy>
+inline T sph_neumann_imp(unsigned v, T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names
+ static const char* function = "boost::math::sph_neumann<%1%>(%1%,%1%)";
+ //
+ // Nothing much to do here but check for errors, and
+ // evaluate the function's definition directly:
+ //
+ if(x < 0)
+ return policies::raise_domain_error<T>(
+ function,
+ "Got x = %1%, but function requires x > 0.", x, pol);
+
+ if(x < 2 * tools::min_value<T>())
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+
+ T result = cyl_neumann_imp(T(T(v)+0.5f), x, bessel_no_int_tag(), pol);
+ T tx = sqrt(constants::pi<T>() / (2 * x));
+
+ if((tx > 1) && (tools::max_value<T>() / tx < result))
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+
+ return result * tx;
+}
+
+template <class T, class Policy>
+inline T cyl_bessel_j_zero_imp(T v, int m, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names, needed for floor.
+
+ static const char* function = "boost::math::cyl_bessel_j_zero<%1%>(%1%, int)";
+
+ const T half_epsilon(boost::math::tools::epsilon<T>() / 2U);
+
+ // Handle non-finite order.
+ if (!(boost::math::isfinite)(v) )
+ {
+ return policies::raise_domain_error<T>(function, "Order argument is %1%, but must be finite >= 0 !", v, pol);
+ }
+
+ // Handle negative rank.
+ if(m < 0)
+ {
+ // Zeros of Jv(x) with negative rank are not defined and requesting one raises a domain error.
+ return policies::raise_domain_error<T>(function, "Requested the %1%'th zero, but the rank must be positive !", m, pol);
+ }
+
+ // Get the absolute value of the order.
+ const bool order_is_negative = (v < 0);
+ const T vv((!order_is_negative) ? v : T(-v));
+
+ // Check if the order is very close to zero or very close to an integer.
+ const bool order_is_zero = (vv < half_epsilon);
+ const bool order_is_integer = ((vv - floor(vv)) < half_epsilon);
+
+ if(m == 0)
+ {
+ if(order_is_zero)
+ {
+ // The zero'th zero of J0(x) is not defined and requesting it raises a domain error.
+ return policies::raise_domain_error<T>(function, "Requested the %1%'th zero of J0, but the rank must be > 0 !", m, pol);
+ }
+
+ // The zero'th zero of Jv(x) for v < 0 is not defined
+ // unless the order is a negative integer.
+ if(order_is_negative && (!order_is_integer))
+ {
+ // For non-integer, negative order, requesting the zero'th zero raises a domain error.
+ return policies::raise_domain_error<T>(function, "Requested the %1%'th zero of Jv for negative, non-integer order, but the rank must be > 0 !", m, pol);
+ }
+
+ // The zero'th zero does exist and its value is zero.
+ return T(0);
+ }
+
+ // Set up the initial guess for the upcoming root-finding.
+ // If the order is a negative integer, then use the corresponding
+ // positive integer for the order.
+ const T guess_root = boost::math::detail::bessel_zero::cyl_bessel_j_zero_detail::initial_guess<T, Policy>((order_is_integer ? vv : v), m, pol);
+
+ // Select the maximum allowed iterations from the policy.
+ boost::uintmax_t number_of_iterations = policies::get_max_root_iterations<Policy>();
+
+ // Select the desired number of binary digits of precision.
+ // Account for the radix of number representations having non-two radix!
+ const int my_digits2 = policies::digits<T, Policy>();
+
+ const T delta_lo = ((guess_root > 0.2F) ? T(0.2) : T(guess_root / 2U));
+
+ // Perform the root-finding using Newton-Raphson iteration from Boost.Math.
+ const T jvm =
+ boost::math::tools::newton_raphson_iterate(
+ boost::math::detail::bessel_zero::cyl_bessel_j_zero_detail::function_object_jv_and_jv_prime<T, Policy>((order_is_integer ? vv : v), order_is_zero, pol),
+ guess_root,
+ T(guess_root - delta_lo),
+ T(guess_root + 0.2F),
+ my_digits2,
+ number_of_iterations);
+
+ if(number_of_iterations >= policies::get_max_root_iterations<Policy>())
+ {
+ policies::raise_evaluation_error<T>(function, "Unable to locate root in a reasonable time:"
+ " Current best guess is %1%", jvm, Policy());
+ }
+
+ return jvm;
+}
+
+template <class T, class Policy>
+inline T cyl_neumann_zero_imp(T v, int m, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names, needed for floor.
+
+ static const char* function = "boost::math::cyl_neumann_zero<%1%>(%1%, int)";
+
+ // Handle non-finite order.
+ if (!(boost::math::isfinite)(v) )
+ {
+ return policies::raise_domain_error<T>(function, "Order argument is %1%, but must be finite >= 0 !", v, pol);
+ }
+
+ // Handle negative rank.
+ if(m < 0)
+ {
+ return policies::raise_domain_error<T>(function, "Requested the %1%'th zero, but the rank must be positive !", m, pol);
+ }
+
+ const T half_epsilon(boost::math::tools::epsilon<T>() / 2U);
+
+ // Get the absolute value of the order.
+ const bool order_is_negative = (v < 0);
+ const T vv((!order_is_negative) ? v : T(-v));
+
+ const bool order_is_integer = ((vv - floor(vv)) < half_epsilon);
+
+ // For negative integers, use reflection to positive integer order.
+ if(order_is_negative && order_is_integer)
+ return boost::math::detail::cyl_neumann_zero_imp(vv, m, pol);
+
+ // Check if the order is very close to a negative half-integer.
+ const T delta_half_integer(vv - (floor(vv) + 0.5F));
+
+ const bool order_is_negative_half_integer =
+ (order_is_negative && ((delta_half_integer > -half_epsilon) && (delta_half_integer < +half_epsilon)));
+
+ // The zero'th zero of Yv(x) for v < 0 is not defined
+ // unless the order is a negative integer.
+ if((m == 0) && (!order_is_negative_half_integer))
+ {
+ // For non-integer, negative order, requesting the zero'th zero raises a domain error.
+ return policies::raise_domain_error<T>(function, "Requested the %1%'th zero of Yv for negative, non-half-integer order, but the rank must be > 0 !", m, pol);
+ }
+
+ // For negative half-integers, use the corresponding
+ // spherical Bessel function of positive half-integer order.
+ if(order_is_negative_half_integer)
+ return boost::math::detail::cyl_bessel_j_zero_imp(vv, m, pol);
+
+ // Set up the initial guess for the upcoming root-finding.
+ // If the order is a negative integer, then use the corresponding
+ // positive integer for the order.
+ const T guess_root = boost::math::detail::bessel_zero::cyl_neumann_zero_detail::initial_guess<T, Policy>(v, m, pol);
+
+ // Select the maximum allowed iterations from the policy.
+ boost::uintmax_t number_of_iterations = policies::get_max_root_iterations<Policy>();
+
+ // Select the desired number of binary digits of precision.
+ // Account for the radix of number representations having non-two radix!
+ const int my_digits2 = policies::digits<T, Policy>();
+
+ const T delta_lo = ((guess_root > 0.2F) ? T(0.2) : T(guess_root / 2U));
+
+ // Perform the root-finding using Newton-Raphson iteration from Boost.Math.
+ const T yvm =
+ boost::math::tools::newton_raphson_iterate(
+ boost::math::detail::bessel_zero::cyl_neumann_zero_detail::function_object_yv_and_yv_prime<T, Policy>(v, pol),
+ guess_root,
+ T(guess_root - delta_lo),
+ T(guess_root + 0.2F),
+ my_digits2,
+ number_of_iterations);
+
+ if(number_of_iterations >= policies::get_max_root_iterations<Policy>())
+ {
+ policies::raise_evaluation_error<T>(function, "Unable to locate root in a reasonable time:"
+ " Current best guess is %1%", yvm, Policy());
+ }
+
+ return yvm;
+}
+
+} // namespace detail
+
+template <class T1, class T2, class Policy>
+inline typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_j(T1 v, T2 x, const Policy& /* pol */)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename detail::bessel_traits<T1, T2, Policy>::optimisation_tag tag_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::cyl_bessel_j_imp<value_type>(v, static_cast<value_type>(x), tag_type(), forwarding_policy()), "boost::math::cyl_bessel_j<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_j(T1 v, T2 x)
+{
+ return cyl_bessel_j(v, x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename detail::bessel_traits<T, T, Policy>::result_type sph_bessel(unsigned v, T x, const Policy& /* pol */)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T, T, Policy>::result_type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::sph_bessel_j_imp<value_type>(v, static_cast<value_type>(x), forwarding_policy()), "boost::math::sph_bessel<%1%>(%1%,%1%)");
+}
+
+template <class T>
+inline typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_bessel(unsigned v, T x)
+{
+ return sph_bessel(v, x, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_i(T1 v, T2 x, const Policy& /* pol */)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::cyl_bessel_i_imp<value_type>(v, static_cast<value_type>(x), forwarding_policy()), "boost::math::cyl_bessel_i<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_i(T1 v, T2 x)
+{
+ return cyl_bessel_i(v, x, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_k(T1 v, T2 x, const Policy& /* pol */)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename detail::bessel_traits<T1, T2, Policy>::optimisation_tag tag_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::cyl_bessel_k_imp<value_type>(v, static_cast<value_type>(x), tag_type(), forwarding_policy()), "boost::math::cyl_bessel_k<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_k(T1 v, T2 x)
+{
+ return cyl_bessel_k(v, x, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_neumann(T1 v, T2 x, const Policy& /* pol */)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename detail::bessel_traits<T1, T2, Policy>::optimisation_tag tag_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::cyl_neumann_imp<value_type>(v, static_cast<value_type>(x), tag_type(), forwarding_policy()), "boost::math::cyl_neumann<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_neumann(T1 v, T2 x)
+{
+ return cyl_neumann(v, x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename detail::bessel_traits<T, T, Policy>::result_type sph_neumann(unsigned v, T x, const Policy& /* pol */)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T, T, Policy>::result_type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::sph_neumann_imp<value_type>(v, static_cast<value_type>(x), forwarding_policy()), "boost::math::sph_neumann<%1%>(%1%,%1%)");
+}
+
+template <class T>
+inline typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann(unsigned v, T x)
+{
+ return sph_neumann(v, x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename detail::bessel_traits<T, T, Policy>::result_type cyl_bessel_j_zero(T v, int m, const Policy& /* pol */)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T, T, Policy>::result_type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<value_type>::is_integer, "Order must be a floating-point type.");
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::cyl_bessel_j_zero_imp<value_type>(v, m, forwarding_policy()), "boost::math::cyl_bessel_j_zero<%1%>(%1%,%1%)");
+}
+
+template <class T>
+inline typename detail::bessel_traits<T, T, policies::policy<> >::result_type cyl_bessel_j_zero(T v, int m)
+{
+ BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<T>::is_integer, "Order must be a floating-point type.");
+ return cyl_bessel_j_zero<T, policies::policy<> >(v, m, policies::policy<>());
+}
+
+template <class T, class OutputIterator, class Policy>
+inline OutputIterator cyl_bessel_j_zero(T v,
+ int start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it,
+ const Policy& pol)
+{
+ BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<T>::is_integer, "Order must be a floating-point type.");
+ for(unsigned i = 0; i < number_of_zeros; ++i)
+ {
+ *out_it = boost::math::cyl_bessel_j_zero(v, start_index + i, pol);
+ ++out_it;
+ }
+ return out_it;
+}
+
+template <class T, class OutputIterator>
+inline OutputIterator cyl_bessel_j_zero(T v,
+ int start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it)
+{
+ return cyl_bessel_j_zero(v, start_index, number_of_zeros, out_it, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename detail::bessel_traits<T, T, Policy>::result_type cyl_neumann_zero(T v, int m, const Policy& /* pol */)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T, T, Policy>::result_type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<value_type>::is_integer, "Order must be a floating-point type.");
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::cyl_neumann_zero_imp<value_type>(v, m, forwarding_policy()), "boost::math::cyl_neumann_zero<%1%>(%1%,%1%)");
+}
+
+template <class T>
+inline typename detail::bessel_traits<T, T, policies::policy<> >::result_type cyl_neumann_zero(T v, int m)
+{
+ BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<T>::is_integer, "Order must be a floating-point type.");
+ return cyl_neumann_zero<T, policies::policy<> >(v, m, policies::policy<>());
+}
+
+template <class T, class OutputIterator, class Policy>
+inline OutputIterator cyl_neumann_zero(T v,
+ int start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it,
+ const Policy& pol)
+{
+ BOOST_STATIC_ASSERT_MSG(false == std::numeric_limits<T>::is_integer, "Order must be a floating-point type.");
+ for(unsigned i = 0; i < number_of_zeros; ++i)
+ {
+ *out_it = boost::math::cyl_neumann_zero(v, start_index + i, pol);
+ ++out_it;
+ }
+ return out_it;
+}
+
+template <class T, class OutputIterator>
+inline OutputIterator cyl_neumann_zero(T v,
+ int start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it)
+{
+ return cyl_neumann_zero(v, start_index, number_of_zeros, out_it, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+
+#endif // BOOST_MATH_BESSEL_HPP
+
+
--- /dev/null
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SPECIAL_BETA_HPP
+#define BOOST_MATH_SPECIAL_BETA_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/tools/config.hpp>
+#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/factorials.hpp>
+#include <boost/math/special_functions/erf.hpp>
+#include <boost/math/special_functions/log1p.hpp>
+#include <boost/math/special_functions/expm1.hpp>
+#include <boost/math/special_functions/trunc.hpp>
+#include <boost/math/tools/roots.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/config/no_tr1/cmath.hpp>
+
+namespace boost{ namespace math{
+
+namespace detail{
+
+//
+// Implementation of Beta(a,b) using the Lanczos approximation:
+//
+template <class T, class Lanczos, class Policy>
+T beta_imp(T a, T b, const Lanczos&, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // for ADL of std names
+
+ if(a <= 0)
+ policies::raise_domain_error<T>("boost::math::beta<%1%>(%1%,%1%)", "The arguments to the beta function must be greater than zero (got a=%1%).", a, pol);
+ if(b <= 0)
+ policies::raise_domain_error<T>("boost::math::beta<%1%>(%1%,%1%)", "The arguments to the beta function must be greater than zero (got b=%1%).", b, pol);
+
+ T result;
+
+ T prefix = 1;
+ T c = a + b;
+
+ // Special cases:
+ if((c == a) && (b < tools::epsilon<T>()))
+ return boost::math::tgamma(b, pol);
+ else if((c == b) && (a < tools::epsilon<T>()))
+ return boost::math::tgamma(a, pol);
+ if(b == 1)
+ return 1/a;
+ else if(a == 1)
+ return 1/b;
+
+ /*
+ //
+ // This code appears to be no longer necessary: it was
+ // used to offset errors introduced from the Lanczos
+ // approximation, but the current Lanczos approximations
+ // are sufficiently accurate for all z that we can ditch
+ // this. It remains in the file for future reference...
+ //
+ // If a or b are less than 1, shift to greater than 1:
+ if(a < 1)
+ {
+ prefix *= c / a;
+ c += 1;
+ a += 1;
+ }
+ if(b < 1)
+ {
+ prefix *= c / b;
+ c += 1;
+ b += 1;
+ }
+ */
+
+ if(a < b)
+ std::swap(a, b);
+
+ // Lanczos calculation:
+ T agh = a + Lanczos::g() - T(0.5);
+ T bgh = b + Lanczos::g() - T(0.5);
+ T cgh = c + Lanczos::g() - T(0.5);
+ result = Lanczos::lanczos_sum_expG_scaled(a) * Lanczos::lanczos_sum_expG_scaled(b) / Lanczos::lanczos_sum_expG_scaled(c);
+ T ambh = a - T(0.5) - b;
+ if((fabs(b * ambh) < (cgh * 100)) && (a > 100))
+ {
+ // Special case where the base of the power term is close to 1
+ // compute (1+x)^y instead:
+ result *= exp(ambh * boost::math::log1p(-b / cgh, pol));
+ }
+ else
+ {
+ result *= pow(agh / cgh, a - T(0.5) - b);
+ }
+ if(cgh > 1e10f)
+ // this avoids possible overflow, but appears to be marginally less accurate:
+ result *= pow((agh / cgh) * (bgh / cgh), b);
+ else
+ result *= pow((agh * bgh) / (cgh * cgh), b);
+ result *= sqrt(boost::math::constants::e<T>() / bgh);
+
+ // If a and b were originally less than 1 we need to scale the result:
+ result *= prefix;
+
+ return result;
+} // template <class T, class Lanczos> beta_imp(T a, T b, const Lanczos&)
+
+//
+// Generic implementation of Beta(a,b) without Lanczos approximation support
+// (Caution this is slow!!!):
+//
+template <class T, class Policy>
+T beta_imp(T a, T b, const lanczos::undefined_lanczos& /* l */, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(a <= 0)
+ policies::raise_domain_error<T>("boost::math::beta<%1%>(%1%,%1%)", "The arguments to the beta function must be greater than zero (got a=%1%).", a, pol);
+ if(b <= 0)
+ policies::raise_domain_error<T>("boost::math::beta<%1%>(%1%,%1%)", "The arguments to the beta function must be greater than zero (got b=%1%).", b, pol);
+
+ T result;
+
+ T prefix = 1;
+ T c = a + b;
+
+ // special cases:
+ if((c == a) && (b < tools::epsilon<T>()))
+ return boost::math::tgamma(b, pol);
+ else if((c == b) && (a < tools::epsilon<T>()))
+ return boost::math::tgamma(a, pol);
+ if(b == 1)
+ return 1/a;
+ else if(a == 1)
+ return 1/b;
+
+ // shift to a and b > 1 if required:
+ if(a < 1)
+ {
+ prefix *= c / a;
+ c += 1;
+ a += 1;
+ }
+ if(b < 1)
+ {
+ prefix *= c / b;
+ c += 1;
+ b += 1;
+ }
+ if(a < b)
+ std::swap(a, b);
+
+ // set integration limits:
+ T la = (std::max)(T(10), a);
+ T lb = (std::max)(T(10), b);
+ T lc = (std::max)(T(10), T(a+b));
+
+ // calculate the fraction parts:
+ T sa = detail::lower_gamma_series(a, la, pol) / a;
+ sa += detail::upper_gamma_fraction(a, la, ::boost::math::policies::get_epsilon<T, Policy>());
+ T sb = detail::lower_gamma_series(b, lb, pol) / b;
+ sb += detail::upper_gamma_fraction(b, lb, ::boost::math::policies::get_epsilon<T, Policy>());
+ T sc = detail::lower_gamma_series(c, lc, pol) / c;
+ sc += detail::upper_gamma_fraction(c, lc, ::boost::math::policies::get_epsilon<T, Policy>());
+
+ // and the exponent part:
+ result = exp(lc - la - lb) * pow(la/lc, a) * pow(lb/lc, b);
+
+ // and combine:
+ result *= sa * sb / sc;
+
+ // if a and b were originally less than 1 we need to scale the result:
+ result *= prefix;
+
+ return result;
+} // template <class T>T beta_imp(T a, T b, const lanczos::undefined_lanczos& l)
+
+
+//
+// Compute the leading power terms in the incomplete Beta:
+//
+// (x^a)(y^b)/Beta(a,b) when normalised, and
+// (x^a)(y^b) otherwise.
+//
+// Almost all of the error in the incomplete beta comes from this
+// function: particularly when a and b are large. Computing large
+// powers are *hard* though, and using logarithms just leads to
+// horrendous cancellation errors.
+//
+template <class T, class Lanczos, class Policy>
+T ibeta_power_terms(T a,
+ T b,
+ T x,
+ T y,
+ const Lanczos&,
+ bool normalised,
+ const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(!normalised)
+ {
+ // can we do better here?
+ return pow(x, a) * pow(y, b);
+ }
+
+ T result;
+
+ T prefix = 1;
+ T c = a + b;
+
+ // combine power terms with Lanczos approximation:
+ T agh = a + Lanczos::g() - T(0.5);
+ T bgh = b + Lanczos::g() - T(0.5);
+ T cgh = c + Lanczos::g() - T(0.5);
+ result = Lanczos::lanczos_sum_expG_scaled(c) / (Lanczos::lanczos_sum_expG_scaled(a) * Lanczos::lanczos_sum_expG_scaled(b));
+
+ // l1 and l2 are the base of the exponents minus one:
+ T l1 = (x * b - y * agh) / agh;
+ T l2 = (y * a - x * bgh) / bgh;
+ if(((std::min)(fabs(l1), fabs(l2)) < 0.2))
+ {
+ // when the base of the exponent is very near 1 we get really
+ // gross errors unless extra care is taken:
+ if((l1 * l2 > 0) || ((std::min)(a, b) < 1))
+ {
+ //
+ // This first branch handles the simple cases where either:
+ //
+ // * The two power terms both go in the same direction
+ // (towards zero or towards infinity). In this case if either
+ // term overflows or underflows, then the product of the two must
+ // do so also.
+ // *Alternatively if one exponent is less than one, then we
+ // can't productively use it to eliminate overflow or underflow
+ // from the other term. Problems with spurious overflow/underflow
+ // can't be ruled out in this case, but it is *very* unlikely
+ // since one of the power terms will evaluate to a number close to 1.
+ //
+ if(fabs(l1) < 0.1)
+ {
+ result *= exp(a * boost::math::log1p(l1, pol));
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ else
+ {
+ result *= pow((x * cgh) / agh, a);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ if(fabs(l2) < 0.1)
+ {
+ result *= exp(b * boost::math::log1p(l2, pol));
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ else
+ {
+ result *= pow((y * cgh) / bgh, b);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ }
+ else if((std::max)(fabs(l1), fabs(l2)) < 0.5)
+ {
+ //
+ // Both exponents are near one and both the exponents are
+ // greater than one and further these two
+ // power terms tend in opposite directions (one towards zero,
+ // the other towards infinity), so we have to combine the terms
+ // to avoid any risk of overflow or underflow.
+ //
+ // We do this by moving one power term inside the other, we have:
+ //
+ // (1 + l1)^a * (1 + l2)^b
+ // = ((1 + l1)*(1 + l2)^(b/a))^a
+ // = (1 + l1 + l3 + l1*l3)^a ; l3 = (1 + l2)^(b/a) - 1
+ // = exp((b/a) * log(1 + l2)) - 1
+ //
+ // The tricky bit is deciding which term to move inside :-)
+ // By preference we move the larger term inside, so that the
+ // size of the largest exponent is reduced. However, that can
+ // only be done as long as l3 (see above) is also small.
+ //
+ bool small_a = a < b;
+ T ratio = b / a;
+ if((small_a && (ratio * l2 < 0.1)) || (!small_a && (l1 / ratio > 0.1)))
+ {
+ T l3 = boost::math::expm1(ratio * boost::math::log1p(l2, pol), pol);
+ l3 = l1 + l3 + l3 * l1;
+ l3 = a * boost::math::log1p(l3, pol);
+ result *= exp(l3);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ else
+ {
+ T l3 = boost::math::expm1(boost::math::log1p(l1, pol) / ratio, pol);
+ l3 = l2 + l3 + l3 * l2;
+ l3 = b * boost::math::log1p(l3, pol);
+ result *= exp(l3);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ }
+ else if(fabs(l1) < fabs(l2))
+ {
+ // First base near 1 only:
+ T l = a * boost::math::log1p(l1, pol)
+ + b * log((y * cgh) / bgh);
+ result *= exp(l);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ else
+ {
+ // Second base near 1 only:
+ T l = b * boost::math::log1p(l2, pol)
+ + a * log((x * cgh) / agh);
+ result *= exp(l);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ }
+ else
+ {
+ // general case:
+ T b1 = (x * cgh) / agh;
+ T b2 = (y * cgh) / bgh;
+ l1 = a * log(b1);
+ l2 = b * log(b2);
+ BOOST_MATH_INSTRUMENT_VARIABLE(b1);
+ BOOST_MATH_INSTRUMENT_VARIABLE(b2);
+ BOOST_MATH_INSTRUMENT_VARIABLE(l1);
+ BOOST_MATH_INSTRUMENT_VARIABLE(l2);
+ if((l1 >= tools::log_max_value<T>())
+ || (l1 <= tools::log_min_value<T>())
+ || (l2 >= tools::log_max_value<T>())
+ || (l2 <= tools::log_min_value<T>())
+ )
+ {
+ // Oops, overflow, sidestep:
+ if(a < b)
+ result *= pow(pow(b2, b/a) * b1, a);
+ else
+ result *= pow(pow(b1, a/b) * b2, b);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ else
+ {
+ // finally the normal case:
+ result *= pow(b1, a) * pow(b2, b);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ }
+ // combine with the leftover terms from the Lanczos approximation:
+ result *= sqrt(bgh / boost::math::constants::e<T>());
+ result *= sqrt(agh / cgh);
+ result *= prefix;
+
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+
+ return result;
+}
+//
+// Compute the leading power terms in the incomplete Beta:
+//
+// (x^a)(y^b)/Beta(a,b) when normalised, and
+// (x^a)(y^b) otherwise.
+//
+// Almost all of the error in the incomplete beta comes from this
+// function: particularly when a and b are large. Computing large
+// powers are *hard* though, and using logarithms just leads to
+// horrendous cancellation errors.
+//
+// This version is generic, slow, and does not use the Lanczos approximation.
+//
+template <class T, class Policy>
+T ibeta_power_terms(T a,
+ T b,
+ T x,
+ T y,
+ const boost::math::lanczos::undefined_lanczos&,
+ bool normalised,
+ const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(!normalised)
+ {
+ return pow(x, a) * pow(y, b);
+ }
+
+ T result= 0; // assignment here silences warnings later
+
+ T c = a + b;
+
+ // integration limits for the gamma functions:
+ //T la = (std::max)(T(10), a);
+ //T lb = (std::max)(T(10), b);
+ //T lc = (std::max)(T(10), a+b);
+ T la = a + 5;
+ T lb = b + 5;
+ T lc = a + b + 5;
+ // gamma function partials:
+ T sa = detail::lower_gamma_series(a, la, pol) / a;
+ sa += detail::upper_gamma_fraction(a, la, ::boost::math::policies::get_epsilon<T, Policy>());
+ T sb = detail::lower_gamma_series(b, lb, pol) / b;
+ sb += detail::upper_gamma_fraction(b, lb, ::boost::math::policies::get_epsilon<T, Policy>());
+ T sc = detail::lower_gamma_series(c, lc, pol) / c;
+ sc += detail::upper_gamma_fraction(c, lc, ::boost::math::policies::get_epsilon<T, Policy>());
+ // gamma function powers combined with incomplete beta powers:
+
+ T b1 = (x * lc) / la;
+ T b2 = (y * lc) / lb;
+ T e1 = lc - la - lb;
+ T lb1 = a * log(b1);
+ T lb2 = b * log(b2);
+
+ if((lb1 >= tools::log_max_value<T>())
+ || (lb1 <= tools::log_min_value<T>())
+ || (lb2 >= tools::log_max_value<T>())
+ || (lb2 <= tools::log_min_value<T>())
+ || (e1 >= tools::log_max_value<T>())
+ || (e1 <= tools::log_min_value<T>())
+ )
+ {
+ result = exp(lb1 + lb2 - e1);
+ }
+ else
+ {
+ T p1, p2;
+ if((fabs(b1 - 1) * a < 10) && (a > 1))
+ p1 = exp(a * boost::math::log1p((x * b - y * la) / la, pol));
+ else
+ p1 = pow(b1, a);
+ if((fabs(b2 - 1) * b < 10) && (b > 1))
+ p2 = exp(b * boost::math::log1p((y * a - x * lb) / lb, pol));
+ else
+ p2 = pow(b2, b);
+ T p3 = exp(e1);
+ result = p1 * p2 / p3;
+ }
+ // and combine with the remaining gamma function components:
+ result /= sa * sb / sc;
+
+ return result;
+}
+//
+// Series approximation to the incomplete beta:
+//
+template <class T>
+struct ibeta_series_t
+{
+ typedef T result_type;
+ ibeta_series_t(T a_, T b_, T x_, T mult) : result(mult), x(x_), apn(a_), poch(1-b_), n(1) {}
+ T operator()()
+ {
+ T r = result / apn;
+ apn += 1;
+ result *= poch * x / n;
+ ++n;
+ poch += 1;
+ return r;
+ }
+private:
+ T result, x, apn, poch;
+ int n;
+};
+
+template <class T, class Lanczos, class Policy>
+T ibeta_series(T a, T b, T x, T s0, const Lanczos&, bool normalised, T* p_derivative, T y, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ T result;
+
+ BOOST_ASSERT((p_derivative == 0) || normalised);
+
+ if(normalised)
+ {
+ T c = a + b;
+
+ // incomplete beta power term, combined with the Lanczos approximation:
+ T agh = a + Lanczos::g() - T(0.5);
+ T bgh = b + Lanczos::g() - T(0.5);
+ T cgh = c + Lanczos::g() - T(0.5);
+ result = Lanczos::lanczos_sum_expG_scaled(c) / (Lanczos::lanczos_sum_expG_scaled(a) * Lanczos::lanczos_sum_expG_scaled(b));
+ if(a * b < bgh * 10)
+ result *= exp((b - 0.5f) * boost::math::log1p(a / bgh, pol));
+ else
+ result *= pow(cgh / bgh, b - 0.5f);
+ result *= pow(x * cgh / agh, a);
+ result *= sqrt(agh / boost::math::constants::e<T>());
+
+ if(p_derivative)
+ {
+ *p_derivative = result * pow(y, b);
+ BOOST_ASSERT(*p_derivative >= 0);
+ }
+ }
+ else
+ {
+ // Non-normalised, just compute the power:
+ result = pow(x, a);
+ }
+ if(result < tools::min_value<T>())
+ return s0; // Safeguard: series can't cope with denorms.
+ ibeta_series_t<T> s(a, b, x, result);
+ boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
+ result = boost::math::tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter, s0);
+ policies::check_series_iterations<T>("boost::math::ibeta<%1%>(%1%, %1%, %1%) in ibeta_series (with lanczos)", max_iter, pol);
+ return result;
+}
+//
+// Incomplete Beta series again, this time without Lanczos support:
+//
+template <class T, class Policy>
+T ibeta_series(T a, T b, T x, T s0, const boost::math::lanczos::undefined_lanczos&, bool normalised, T* p_derivative, T y, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ T result;
+ BOOST_ASSERT((p_derivative == 0) || normalised);
+
+ if(normalised)
+ {
+ T c = a + b;
+
+ // figure out integration limits for the gamma function:
+ //T la = (std::max)(T(10), a);
+ //T lb = (std::max)(T(10), b);
+ //T lc = (std::max)(T(10), a+b);
+ T la = a + 5;
+ T lb = b + 5;
+ T lc = a + b + 5;
+
+ // calculate the gamma parts:
+ T sa = detail::lower_gamma_series(a, la, pol) / a;
+ sa += detail::upper_gamma_fraction(a, la, ::boost::math::policies::get_epsilon<T, Policy>());
+ T sb = detail::lower_gamma_series(b, lb, pol) / b;
+ sb += detail::upper_gamma_fraction(b, lb, ::boost::math::policies::get_epsilon<T, Policy>());
+ T sc = detail::lower_gamma_series(c, lc, pol) / c;
+ sc += detail::upper_gamma_fraction(c, lc, ::boost::math::policies::get_epsilon<T, Policy>());
+
+ // and their combined power-terms:
+ T b1 = (x * lc) / la;
+ T b2 = lc/lb;
+ T e1 = lc - la - lb;
+ T lb1 = a * log(b1);
+ T lb2 = b * log(b2);
+
+ if((lb1 >= tools::log_max_value<T>())
+ || (lb1 <= tools::log_min_value<T>())
+ || (lb2 >= tools::log_max_value<T>())
+ || (lb2 <= tools::log_min_value<T>())
+ || (e1 >= tools::log_max_value<T>())
+ || (e1 <= tools::log_min_value<T>()) )
+ {
+ T p = lb1 + lb2 - e1;
+ result = exp(p);
+ }
+ else
+ {
+ result = pow(b1, a);
+ if(a * b < lb * 10)
+ result *= exp(b * boost::math::log1p(a / lb, pol));
+ else
+ result *= pow(b2, b);
+ result /= exp(e1);
+ }
+ // and combine the results:
+ result /= sa * sb / sc;
+
+ if(p_derivative)
+ {
+ *p_derivative = result * pow(y, b);
+ BOOST_ASSERT(*p_derivative >= 0);
+ }
+ }
+ else
+ {
+ // Non-normalised, just compute the power:
+ result = pow(x, a);
+ }
+ if(result < tools::min_value<T>())
+ return s0; // Safeguard: series can't cope with denorms.
+ ibeta_series_t<T> s(a, b, x, result);
+ boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
+ result = boost::math::tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter, s0);
+ policies::check_series_iterations<T>("boost::math::ibeta<%1%>(%1%, %1%, %1%) in ibeta_series (without lanczos)", max_iter, pol);
+ return result;
+}
+
+//
+// Continued fraction for the incomplete beta:
+//
+template <class T>
+struct ibeta_fraction2_t
+{
+ typedef std::pair<T, T> result_type;
+
+ ibeta_fraction2_t(T a_, T b_, T x_, T y_) : a(a_), b(b_), x(x_), y(y_), m(0) {}
+
+ result_type operator()()
+ {
+ T aN = (a + m - 1) * (a + b + m - 1) * m * (b - m) * x * x;
+ T denom = (a + 2 * m - 1);
+ aN /= denom * denom;
+
+ T bN = m;
+ bN += (m * (b - m) * x) / (a + 2*m - 1);
+ bN += ((a + m) * (a * y - b * x + 1 + m *(2 - x))) / (a + 2*m + 1);
+
+ ++m;
+
+ return std::make_pair(aN, bN);
+ }
+
+private:
+ T a, b, x, y;
+ int m;
+};
+//
+// Evaluate the incomplete beta via the continued fraction representation:
+//
+template <class T, class Policy>
+inline T ibeta_fraction2(T a, T b, T x, T y, const Policy& pol, bool normalised, T* p_derivative)
+{
+ typedef typename lanczos::lanczos<T, Policy>::type lanczos_type;
+ BOOST_MATH_STD_USING
+ T result = ibeta_power_terms(a, b, x, y, lanczos_type(), normalised, pol);
+ if(p_derivative)
+ {
+ *p_derivative = result;
+ BOOST_ASSERT(*p_derivative >= 0);
+ }
+ if(result == 0)
+ return result;
+
+ ibeta_fraction2_t<T> f(a, b, x, y);
+ T fract = boost::math::tools::continued_fraction_b(f, boost::math::policies::get_epsilon<T, Policy>());
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ return result / fract;
+}
+//
+// Computes the difference between ibeta(a,b,x) and ibeta(a+k,b,x):
+//
+template <class T, class Policy>
+T ibeta_a_step(T a, T b, T x, T y, int k, const Policy& pol, bool normalised, T* p_derivative)
+{
+ typedef typename lanczos::lanczos<T, Policy>::type lanczos_type;
+
+ BOOST_MATH_INSTRUMENT_VARIABLE(k);
+
+ T prefix = ibeta_power_terms(a, b, x, y, lanczos_type(), normalised, pol);
+ if(p_derivative)
+ {
+ *p_derivative = prefix;
+ BOOST_ASSERT(*p_derivative >= 0);
+ }
+ prefix /= a;
+ if(prefix == 0)
+ return prefix;
+ T sum = 1;
+ T term = 1;
+ // series summation from 0 to k-1:
+ for(int i = 0; i < k-1; ++i)
+ {
+ term *= (a+b+i) * x / (a+i+1);
+ sum += term;
+ }
+ prefix *= sum;
+
+ return prefix;
+}
+//
+// This function is only needed for the non-regular incomplete beta,
+// it computes the delta in:
+// beta(a,b,x) = prefix + delta * beta(a+k,b,x)
+// it is currently only called for small k.
+//
+template <class T>
+inline T rising_factorial_ratio(T a, T b, int k)
+{
+ // calculate:
+ // (a)(a+1)(a+2)...(a+k-1)
+ // _______________________
+ // (b)(b+1)(b+2)...(b+k-1)
+
+ // This is only called with small k, for large k
+ // it is grossly inefficient, do not use outside it's
+ // intended purpose!!!
+ BOOST_MATH_INSTRUMENT_VARIABLE(k);
+ if(k == 0)
+ return 1;
+ T result = 1;
+ for(int i = 0; i < k; ++i)
+ result *= (a+i) / (b+i);
+ return result;
+}
+//
+// Routine for a > 15, b < 1
+//
+// Begin by figuring out how large our table of Pn's should be,
+// quoted accuracies are "guestimates" based on empiracal observation.
+// Note that the table size should never exceed the size of our
+// tables of factorials.
+//
+template <class T>
+struct Pn_size
+{
+ // This is likely to be enough for ~35-50 digit accuracy
+ // but it's hard to quantify exactly:
+ BOOST_STATIC_CONSTANT(unsigned, value = 50);
+ BOOST_STATIC_ASSERT(::boost::math::max_factorial<T>::value >= 100);
+};
+template <>
+struct Pn_size<float>
+{
+ BOOST_STATIC_CONSTANT(unsigned, value = 15); // ~8-15 digit accuracy
+ BOOST_STATIC_ASSERT(::boost::math::max_factorial<float>::value >= 30);
+};
+template <>
+struct Pn_size<double>
+{
+ BOOST_STATIC_CONSTANT(unsigned, value = 30); // 16-20 digit accuracy
+ BOOST_STATIC_ASSERT(::boost::math::max_factorial<double>::value >= 60);
+};
+template <>
+struct Pn_size<long double>
+{
+ BOOST_STATIC_CONSTANT(unsigned, value = 50); // ~35-50 digit accuracy
+ BOOST_STATIC_ASSERT(::boost::math::max_factorial<long double>::value >= 100);
+};
+
+template <class T, class Policy>
+T beta_small_b_large_a_series(T a, T b, T x, T y, T s0, T mult, const Policy& pol, bool normalised)
+{
+ typedef typename lanczos::lanczos<T, Policy>::type lanczos_type;
+ BOOST_MATH_STD_USING
+ //
+ // This is DiDonato and Morris's BGRAT routine, see Eq's 9 through 9.6.
+ //
+ // Some values we'll need later, these are Eq 9.1:
+ //
+ T bm1 = b - 1;
+ T t = a + bm1 / 2;
+ T lx, u;
+ if(y < 0.35)
+ lx = boost::math::log1p(-y, pol);
+ else
+ lx = log(x);
+ u = -t * lx;
+ // and from from 9.2:
+ T prefix;
+ T h = regularised_gamma_prefix(b, u, pol, lanczos_type());
+ if(h <= tools::min_value<T>())
+ return s0;
+ if(normalised)
+ {
+ prefix = h / boost::math::tgamma_delta_ratio(a, b, pol);
+ prefix /= pow(t, b);
+ }
+ else
+ {
+ prefix = full_igamma_prefix(b, u, pol) / pow(t, b);
+ }
+ prefix *= mult;
+ //
+ // now we need the quantity Pn, unfortunatately this is computed
+ // recursively, and requires a full history of all the previous values
+ // so no choice but to declare a big table and hope it's big enough...
+ //
+ T p[ ::boost::math::detail::Pn_size<T>::value ] = { 1 }; // see 9.3.
+ //
+ // Now an initial value for J, see 9.6:
+ //
+ T j = boost::math::gamma_q(b, u, pol) / h;
+ //
+ // Now we can start to pull things together and evaluate the sum in Eq 9:
+ //
+ T sum = s0 + prefix * j; // Value at N = 0
+ // some variables we'll need:
+ unsigned tnp1 = 1; // 2*N+1
+ T lx2 = lx / 2;
+ lx2 *= lx2;
+ T lxp = 1;
+ T t4 = 4 * t * t;
+ T b2n = b;
+
+ for(unsigned n = 1; n < sizeof(p)/sizeof(p[0]); ++n)
+ {
+ /*
+ // debugging code, enable this if you want to determine whether
+ // the table of Pn's is large enough...
+ //
+ static int max_count = 2;
+ if(n > max_count)
+ {
+ max_count = n;
+ std::cerr << "Max iterations in BGRAT was " << n << std::endl;
+ }
+ */
+ //
+ // begin by evaluating the next Pn from Eq 9.4:
+ //
+ tnp1 += 2;
+ p[n] = 0;
+ T mbn = b - n;
+ unsigned tmp1 = 3;
+ for(unsigned m = 1; m < n; ++m)
+ {
+ mbn = m * b - n;
+ p[n] += mbn * p[n-m] / boost::math::unchecked_factorial<T>(tmp1);
+ tmp1 += 2;
+ }
+ p[n] /= n;
+ p[n] += bm1 / boost::math::unchecked_factorial<T>(tnp1);
+ //
+ // Now we want Jn from Jn-1 using Eq 9.6:
+ //
+ j = (b2n * (b2n + 1) * j + (u + b2n + 1) * lxp) / t4;
+ lxp *= lx2;
+ b2n += 2;
+ //
+ // pull it together with Eq 9:
+ //
+ T r = prefix * p[n] * j;
+ sum += r;
+ if(r > 1)
+ {
+ if(fabs(r) < fabs(tools::epsilon<T>() * sum))
+ break;
+ }
+ else
+ {
+ if(fabs(r / tools::epsilon<T>()) < fabs(sum))
+ break;
+ }
+ }
+ return sum;
+} // template <class T, class Lanczos>T beta_small_b_large_a_series(T a, T b, T x, T y, T s0, T mult, const Lanczos& l, bool normalised)
+
+//
+// For integer arguments we can relate the incomplete beta to the
+// complement of the binomial distribution cdf and use this finite sum.
+//
+template <class T>
+inline T binomial_ccdf(T n, T k, T x, T y)
+{
+ BOOST_MATH_STD_USING // ADL of std names
+ T result = pow(x, n);
+ T term = result;
+ for(unsigned i = itrunc(T(n - 1)); i > k; --i)
+ {
+ term *= ((i + 1) * y) / ((n - i) * x) ;
+ result += term;
+ }
+
+ return result;
+}
+
+
+//
+// The incomplete beta function implementation:
+// This is just a big bunch of spagetti code to divide up the
+// input range and select the right implementation method for
+// each domain:
+//
+template <class T, class Policy>
+T ibeta_imp(T a, T b, T x, const Policy& pol, bool inv, bool normalised, T* p_derivative)
+{
+ static const char* function = "boost::math::ibeta<%1%>(%1%, %1%, %1%)";
+ typedef typename lanczos::lanczos<T, Policy>::type lanczos_type;
+ BOOST_MATH_STD_USING // for ADL of std math functions.
+
+ BOOST_MATH_INSTRUMENT_VARIABLE(a);
+ BOOST_MATH_INSTRUMENT_VARIABLE(b);
+ BOOST_MATH_INSTRUMENT_VARIABLE(x);
+ BOOST_MATH_INSTRUMENT_VARIABLE(inv);
+ BOOST_MATH_INSTRUMENT_VARIABLE(normalised);
+
+ bool invert = inv;
+ T fract;
+ T y = 1 - x;
+
+ BOOST_ASSERT((p_derivative == 0) || normalised);
+
+ if(p_derivative)
+ *p_derivative = -1; // value not set.
+
+ if((x < 0) || (x > 1))
+ policies::raise_domain_error<T>(function, "Parameter x outside the range [0,1] in the incomplete beta function (got x=%1%).", x, pol);
+
+ if(normalised)
+ {
+ if(a < 0)
+ policies::raise_domain_error<T>(function, "The argument a to the incomplete beta function must be >= zero (got a=%1%).", a, pol);
+ if(b < 0)
+ policies::raise_domain_error<T>(function, "The argument b to the incomplete beta function must be >= zero (got b=%1%).", b, pol);
+ // extend to a few very special cases:
+ if(a == 0)
+ {
+ if(b == 0)
+ policies::raise_domain_error<T>(function, "The arguments a and b to the incomplete beta function cannot both be zero, with x=%1%.", x, pol);
+ if(b > 0)
+ return inv ? 0 : 1;
+ }
+ else if(b == 0)
+ {
+ if(a > 0)
+ return inv ? 1 : 0;
+ }
+ }
+ else
+ {
+ if(a <= 0)
+ policies::raise_domain_error<T>(function, "The argument a to the incomplete beta function must be greater than zero (got a=%1%).", a, pol);
+ if(b <= 0)
+ policies::raise_domain_error<T>(function, "The argument b to the incomplete beta function must be greater than zero (got b=%1%).", b, pol);
+ }
+
+ if(x == 0)
+ {
+ if(p_derivative)
+ {
+ *p_derivative = (a == 1) ? (T)1 : (a < 1) ? T(tools::max_value<T>() / 2) : T(tools::min_value<T>() * 2);
+ }
+ return (invert ? (normalised ? T(1) : boost::math::beta(a, b, pol)) : T(0));
+ }
+ if(x == 1)
+ {
+ if(p_derivative)
+ {
+ *p_derivative = (b == 1) ? T(1) : (b < 1) ? T(tools::max_value<T>() / 2) : T(tools::min_value<T>() * 2);
+ }
+ return (invert == 0 ? (normalised ? 1 : boost::math::beta(a, b, pol)) : 0);
+ }
+ if((a == 0.5f) && (b == 0.5f))
+ {
+ // We have an arcsine distribution:
+ if(p_derivative)
+ {
+ *p_derivative = (invert ? -1 : 1) / constants::pi<T>() * sqrt(y * x);
+ }
+ T p = invert ? asin(sqrt(y)) / constants::half_pi<T>() : asin(sqrt(x)) / constants::half_pi<T>();
+ if(!normalised)
+ p *= constants::pi<T>();
+ return p;
+ }
+ if(a == 1)
+ {
+ std::swap(a, b);
+ std::swap(x, y);
+ invert = !invert;
+ }
+ if(b == 1)
+ {
+ //
+ // Special case see: http://functions.wolfram.com/GammaBetaErf/BetaRegularized/03/01/01/
+ //
+ if(a == 1)
+ {
+ if(p_derivative)
+ *p_derivative = invert ? -1 : 1;
+ return invert ? y : x;
+ }
+
+ if(p_derivative)
+ {
+ *p_derivative = (invert ? -1 : 1) * a * pow(x, a - 1);
+ }
+ T p;
+ if(y < 0.5)
+ p = invert ? T(-expm1(a * log1p(-y))) : T(exp(a * log1p(-y)));
+ else
+ p = invert ? T(-powm1(x, a)) : T(pow(x, a));
+ if(!normalised)
+ p /= a;
+ return p;
+ }
+
+ if((std::min)(a, b) <= 1)
+ {
+ if(x > 0.5)
+ {
+ std::swap(a, b);
+ std::swap(x, y);
+ invert = !invert;
+ BOOST_MATH_INSTRUMENT_VARIABLE(invert);
+ }
+ if((std::max)(a, b) <= 1)
+ {
+ // Both a,b < 1:
+ if((a >= (std::min)(T(0.2), b)) || (pow(x, a) <= 0.9))
+ {
+ if(!invert)
+ {
+ fract = ibeta_series(a, b, x, T(0), lanczos_type(), normalised, p_derivative, y, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else
+ {
+ fract = -(normalised ? 1 : boost::math::beta(a, b, pol));
+ invert = false;
+ fract = -ibeta_series(a, b, x, fract, lanczos_type(), normalised, p_derivative, y, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ }
+ else
+ {
+ std::swap(a, b);
+ std::swap(x, y);
+ invert = !invert;
+ if(y >= 0.3)
+ {
+ if(!invert)
+ {
+ fract = ibeta_series(a, b, x, T(0), lanczos_type(), normalised, p_derivative, y, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else
+ {
+ fract = -(normalised ? 1 : boost::math::beta(a, b, pol));
+ invert = false;
+ fract = -ibeta_series(a, b, x, fract, lanczos_type(), normalised, p_derivative, y, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ }
+ else
+ {
+ // Sidestep on a, and then use the series representation:
+ T prefix;
+ if(!normalised)
+ {
+ prefix = rising_factorial_ratio(T(a+b), a, 20);
+ }
+ else
+ {
+ prefix = 1;
+ }
+ fract = ibeta_a_step(a, b, x, y, 20, pol, normalised, p_derivative);
+ if(!invert)
+ {
+ fract = beta_small_b_large_a_series(T(a + 20), b, x, y, fract, prefix, pol, normalised);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else
+ {
+ fract -= (normalised ? 1 : boost::math::beta(a, b, pol));
+ invert = false;
+ fract = -beta_small_b_large_a_series(T(a + 20), b, x, y, fract, prefix, pol, normalised);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ }
+ }
+ }
+ else
+ {
+ // One of a, b < 1 only:
+ if((b <= 1) || ((x < 0.1) && (pow(b * x, a) <= 0.7)))
+ {
+ if(!invert)
+ {
+ fract = ibeta_series(a, b, x, T(0), lanczos_type(), normalised, p_derivative, y, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else
+ {
+ fract = -(normalised ? 1 : boost::math::beta(a, b, pol));
+ invert = false;
+ fract = -ibeta_series(a, b, x, fract, lanczos_type(), normalised, p_derivative, y, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ }
+ else
+ {
+ std::swap(a, b);
+ std::swap(x, y);
+ invert = !invert;
+
+ if(y >= 0.3)
+ {
+ if(!invert)
+ {
+ fract = ibeta_series(a, b, x, T(0), lanczos_type(), normalised, p_derivative, y, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else
+ {
+ fract = -(normalised ? 1 : boost::math::beta(a, b, pol));
+ invert = false;
+ fract = -ibeta_series(a, b, x, fract, lanczos_type(), normalised, p_derivative, y, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ }
+ else if(a >= 15)
+ {
+ if(!invert)
+ {
+ fract = beta_small_b_large_a_series(a, b, x, y, T(0), T(1), pol, normalised);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else
+ {
+ fract = -(normalised ? 1 : boost::math::beta(a, b, pol));
+ invert = false;
+ fract = -beta_small_b_large_a_series(a, b, x, y, fract, T(1), pol, normalised);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ }
+ else
+ {
+ // Sidestep to improve errors:
+ T prefix;
+ if(!normalised)
+ {
+ prefix = rising_factorial_ratio(T(a+b), a, 20);
+ }
+ else
+ {
+ prefix = 1;
+ }
+ fract = ibeta_a_step(a, b, x, y, 20, pol, normalised, p_derivative);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ if(!invert)
+ {
+ fract = beta_small_b_large_a_series(T(a + 20), b, x, y, fract, prefix, pol, normalised);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else
+ {
+ fract -= (normalised ? 1 : boost::math::beta(a, b, pol));
+ invert = false;
+ fract = -beta_small_b_large_a_series(T(a + 20), b, x, y, fract, prefix, pol, normalised);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ // Both a,b >= 1:
+ T lambda;
+ if(a < b)
+ {
+ lambda = a - (a + b) * x;
+ }
+ else
+ {
+ lambda = (a + b) * y - b;
+ }
+ if(lambda < 0)
+ {
+ std::swap(a, b);
+ std::swap(x, y);
+ invert = !invert;
+ BOOST_MATH_INSTRUMENT_VARIABLE(invert);
+ }
+
+ if(b < 40)
+ {
+ if((floor(a) == a) && (floor(b) == b) && (a < (std::numeric_limits<int>::max)() - 100))
+ {
+ // relate to the binomial distribution and use a finite sum:
+ T k = a - 1;
+ T n = b + k;
+ fract = binomial_ccdf(n, k, x, y);
+ if(!normalised)
+ fract *= boost::math::beta(a, b, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else if(b * x <= 0.7)
+ {
+ if(!invert)
+ {
+ fract = ibeta_series(a, b, x, T(0), lanczos_type(), normalised, p_derivative, y, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else
+ {
+ fract = -(normalised ? 1 : boost::math::beta(a, b, pol));
+ invert = false;
+ fract = -ibeta_series(a, b, x, fract, lanczos_type(), normalised, p_derivative, y, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ }
+ else if(a > 15)
+ {
+ // sidestep so we can use the series representation:
+ int n = itrunc(T(floor(b)), pol);
+ if(n == b)
+ --n;
+ T bbar = b - n;
+ T prefix;
+ if(!normalised)
+ {
+ prefix = rising_factorial_ratio(T(a+bbar), bbar, n);
+ }
+ else
+ {
+ prefix = 1;
+ }
+ fract = ibeta_a_step(bbar, a, y, x, n, pol, normalised, static_cast<T*>(0));
+ fract = beta_small_b_large_a_series(a, bbar, x, y, fract, T(1), pol, normalised);
+ fract /= prefix;
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else if(normalised)
+ {
+ // the formula here for the non-normalised case is tricky to figure
+ // out (for me!!), and requires two pochhammer calculations rather
+ // than one, so leave it for now....
+ int n = itrunc(T(floor(b)), pol);
+ T bbar = b - n;
+ if(bbar <= 0)
+ {
+ --n;
+ bbar += 1;
+ }
+ fract = ibeta_a_step(bbar, a, y, x, n, pol, normalised, static_cast<T*>(0));
+ fract += ibeta_a_step(a, bbar, x, y, 20, pol, normalised, static_cast<T*>(0));
+ if(invert)
+ fract -= (normalised ? 1 : boost::math::beta(a, b, pol));
+ //fract = ibeta_series(a+20, bbar, x, fract, l, normalised, p_derivative, y);
+ fract = beta_small_b_large_a_series(T(a+20), bbar, x, y, fract, T(1), pol, normalised);
+ if(invert)
+ {
+ fract = -fract;
+ invert = false;
+ }
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ else
+ {
+ fract = ibeta_fraction2(a, b, x, y, pol, normalised, p_derivative);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ }
+ else
+ {
+ fract = ibeta_fraction2(a, b, x, y, pol, normalised, p_derivative);
+ BOOST_MATH_INSTRUMENT_VARIABLE(fract);
+ }
+ }
+ if(p_derivative)
+ {
+ if(*p_derivative < 0)
+ {
+ *p_derivative = ibeta_power_terms(a, b, x, y, lanczos_type(), true, pol);
+ }
+ T div = y * x;
+
+ if(*p_derivative != 0)
+ {
+ if((tools::max_value<T>() * div < *p_derivative))
+ {
+ // overflow, return an arbitarily large value:
+ *p_derivative = tools::max_value<T>() / 2;
+ }
+ else
+ {
+ *p_derivative /= div;
+ }
+ }
+ }
+ return invert ? (normalised ? 1 : boost::math::beta(a, b, pol)) - fract : fract;
+} // template <class T, class Lanczos>T ibeta_imp(T a, T b, T x, const Lanczos& l, bool inv, bool normalised)
+
+template <class T, class Policy>
+inline T ibeta_imp(T a, T b, T x, const Policy& pol, bool inv, bool normalised)
+{
+ return ibeta_imp(a, b, x, pol, inv, normalised, static_cast<T*>(0));
+}
+
+template <class T, class Policy>
+T ibeta_derivative_imp(T a, T b, T x, const Policy& pol)
+{
+ static const char* function = "ibeta_derivative<%1%>(%1%,%1%,%1%)";
+ //
+ // start with the usual error checks:
+ //
+ if(a <= 0)
+ policies::raise_domain_error<T>(function, "The argument a to the incomplete beta function must be greater than zero (got a=%1%).", a, pol);
+ if(b <= 0)
+ policies::raise_domain_error<T>(function, "The argument b to the incomplete beta function must be greater than zero (got b=%1%).", b, pol);
+ if((x < 0) || (x > 1))
+ policies::raise_domain_error<T>(function, "Parameter x outside the range [0,1] in the incomplete beta function (got x=%1%).", x, pol);
+ //
+ // Now the corner cases:
+ //
+ if(x == 0)
+ {
+ return (a > 1) ? 0 :
+ (a == 1) ? 1 / boost::math::beta(a, b, pol) : policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ else if(x == 1)
+ {
+ return (b > 1) ? 0 :
+ (b == 1) ? 1 / boost::math::beta(a, b, pol) : policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ //
+ // Now the regular cases:
+ //
+ typedef typename lanczos::lanczos<T, Policy>::type lanczos_type;
+ T f1 = ibeta_power_terms<T>(a, b, x, 1 - x, lanczos_type(), true, pol);
+ T y = (1 - x) * x;
+
+ if(f1 == 0)
+ return 0;
+
+ if((tools::max_value<T>() * y < f1))
+ {
+ // overflow:
+ return policies::raise_overflow_error<T>(function, 0, pol);
+ }
+
+ f1 /= y;
+
+ return f1;
+}
+//
+// Some forwarding functions that dis-ambiguate the third argument type:
+//
+template <class RT1, class RT2, class Policy>
+inline typename tools::promote_args<RT1, RT2>::type
+ beta(RT1 a, RT2 b, const Policy&, const mpl::true_*)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<RT1, RT2>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::beta_imp(static_cast<value_type>(a), static_cast<value_type>(b), evaluation_type(), forwarding_policy()), "boost::math::beta<%1%>(%1%,%1%)");
+}
+template <class RT1, class RT2, class RT3>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ beta(RT1 a, RT2 b, RT3 x, const mpl::false_*)
+{
+ return boost::math::beta(a, b, x, policies::policy<>());
+}
+} // namespace detail
+
+//
+// The actual function entry-points now follow, these just figure out
+// which Lanczos approximation to use
+// and forward to the implementation functions:
+//
+template <class RT1, class RT2, class A>
+inline typename tools::promote_args<RT1, RT2, A>::type
+ beta(RT1 a, RT2 b, A arg)
+{
+ typedef typename policies::is_policy<A>::type tag;
+ return boost::math::detail::beta(a, b, arg, static_cast<tag*>(0));
+}
+
+template <class RT1, class RT2>
+inline typename tools::promote_args<RT1, RT2>::type
+ beta(RT1 a, RT2 b)
+{
+ return boost::math::beta(a, b, policies::policy<>());
+}
+
+template <class RT1, class RT2, class RT3, class Policy>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ beta(RT1 a, RT2 b, RT3 x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::ibeta_imp(static_cast<value_type>(a), static_cast<value_type>(b), static_cast<value_type>(x), forwarding_policy(), false, false), "boost::math::beta<%1%>(%1%,%1%,%1%)");
+}
+
+template <class RT1, class RT2, class RT3, class Policy>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ betac(RT1 a, RT2 b, RT3 x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::ibeta_imp(static_cast<value_type>(a), static_cast<value_type>(b), static_cast<value_type>(x), forwarding_policy(), true, false), "boost::math::betac<%1%>(%1%,%1%,%1%)");
+}
+template <class RT1, class RT2, class RT3>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ betac(RT1 a, RT2 b, RT3 x)
+{
+ return boost::math::betac(a, b, x, policies::policy<>());
+}
+
+template <class RT1, class RT2, class RT3, class Policy>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibeta(RT1 a, RT2 b, RT3 x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::ibeta_imp(static_cast<value_type>(a), static_cast<value_type>(b), static_cast<value_type>(x), forwarding_policy(), false, true), "boost::math::ibeta<%1%>(%1%,%1%,%1%)");
+}
+template <class RT1, class RT2, class RT3>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibeta(RT1 a, RT2 b, RT3 x)
+{
+ return boost::math::ibeta(a, b, x, policies::policy<>());
+}
+
+template <class RT1, class RT2, class RT3, class Policy>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibetac(RT1 a, RT2 b, RT3 x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::ibeta_imp(static_cast<value_type>(a), static_cast<value_type>(b), static_cast<value_type>(x), forwarding_policy(), true, true), "boost::math::ibetac<%1%>(%1%,%1%,%1%)");
+}
+template <class RT1, class RT2, class RT3>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibetac(RT1 a, RT2 b, RT3 x)
+{
+ return boost::math::ibetac(a, b, x, policies::policy<>());
+}
+
+template <class RT1, class RT2, class RT3, class Policy>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::ibeta_derivative_imp(static_cast<value_type>(a), static_cast<value_type>(b), static_cast<value_type>(x), forwarding_policy()), "boost::math::ibeta_derivative<%1%>(%1%,%1%,%1%)");
+}
+template <class RT1, class RT2, class RT3>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibeta_derivative(RT1 a, RT2 b, RT3 x)
+{
+ return boost::math::ibeta_derivative(a, b, x, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+
+#include <boost/math/special_functions/detail/ibeta_inverse.hpp>
+#include <boost/math/special_functions/detail/ibeta_inv_ab.hpp>
+
+#endif // BOOST_MATH_SPECIAL_BETA_HPP
+
+
+
+
+
--- /dev/null
+// Copyright John Maddock 2006.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SF_BINOMIAL_HPP
+#define BOOST_MATH_SF_BINOMIAL_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/factorials.hpp>
+#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/policies/error_handling.hpp>
+
+namespace boost{ namespace math{
+
+template <class T, class Policy>
+T binomial_coefficient(unsigned n, unsigned k, const Policy& pol)
+{
+ BOOST_STATIC_ASSERT(!boost::is_integral<T>::value);
+ BOOST_MATH_STD_USING
+ static const char* function = "boost::math::binomial_coefficient<%1%>(unsigned, unsigned)";
+ if(k > n)
+ return policies::raise_domain_error<T>(
+ function,
+ "The binomial coefficient is undefined for k > n, but got k = %1%.",
+ k, pol);
+ T result;
+ if((k == 0) || (k == n))
+ return 1;
+ if((k == 1) || (k == n-1))
+ return n;
+
+ if(n <= max_factorial<T>::value)
+ {
+ // Use fast table lookup:
+ result = unchecked_factorial<T>(n);
+ result /= unchecked_factorial<T>(n-k);
+ result /= unchecked_factorial<T>(k);
+ }
+ else
+ {
+ // Use the beta function:
+ if(k < n - k)
+ result = k * beta(static_cast<T>(k), static_cast<T>(n-k+1), pol);
+ else
+ result = (n - k) * beta(static_cast<T>(k+1), static_cast<T>(n-k), pol);
+ if(result == 0)
+ return policies::raise_overflow_error<T>(function, 0, pol);
+ result = 1 / result;
+ }
+ // convert to nearest integer:
+ return ceil(result - 0.5f);
+}
+//
+// Type float can only store the first 35 factorials, in order to
+// increase the chance that we can use a table driven implementation
+// we'll promote to double:
+//
+template <>
+inline float binomial_coefficient<float, policies::policy<> >(unsigned n, unsigned k, const policies::policy<>& pol)
+{
+ return policies::checked_narrowing_cast<float, policies::policy<> >(binomial_coefficient<double>(n, k, pol), "boost::math::binomial_coefficient<%1%>(unsigned,unsigned)");
+}
+
+template <class T>
+inline T binomial_coefficient(unsigned n, unsigned k)
+{
+ return binomial_coefficient<T>(n, k, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+
+
+#endif // BOOST_MATH_SF_BINOMIAL_HPP
+
+
+
--- /dev/null
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SF_CBRT_HPP
+#define BOOST_MATH_SF_CBRT_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/special_functions/fpclassify.hpp>
+#include <boost/mpl/divides.hpp>
+#include <boost/mpl/plus.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+
+namespace boost{ namespace math{
+
+namespace detail
+{
+
+struct big_int_type
+{
+ operator boost::uintmax_t()const;
+};
+
+template <class T>
+struct largest_cbrt_int_type
+{
+ typedef typename mpl::if_<
+ boost::is_convertible<big_int_type, T>,
+ boost::uintmax_t,
+ unsigned int
+ >::type type;
+};
+
+template <class T, class Policy>
+T cbrt_imp(T z, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ //
+ // cbrt approximation for z in the range [0.5,1]
+ // It's hard to say what number of terms gives the optimum
+ // trade off between precision and performance, this seems
+ // to be about the best for double precision.
+ //
+ // Maximum Deviation Found: 1.231e-006
+ // Expected Error Term: -1.231e-006
+ // Maximum Relative Change in Control Points: 5.982e-004
+ //
+ static const T P[] = {
+ static_cast<T>(0.37568269008611818),
+ static_cast<T>(1.3304968705558024),
+ static_cast<T>(-1.4897101632445036),
+ static_cast<T>(1.2875573098219835),
+ static_cast<T>(-0.6398703759826468),
+ static_cast<T>(0.13584489959258635),
+ };
+ static const T correction[] = {
+ static_cast<T>(0.62996052494743658238360530363911), // 2^-2/3
+ static_cast<T>(0.79370052598409973737585281963615), // 2^-1/3
+ static_cast<T>(1),
+ static_cast<T>(1.2599210498948731647672106072782), // 2^1/3
+ static_cast<T>(1.5874010519681994747517056392723), // 2^2/3
+ };
+
+ if(!(boost::math::isfinite)(z))
+ {
+ return policies::raise_domain_error("boost::math::cbrt<%1%>(%1%)", "Argument to function must be finite but got %1%.", z, pol);
+ }
+
+ int i_exp, sign(1);
+ if(z < 0)
+ {
+ z = -z;
+ sign = -sign;
+ }
+ if(z == 0)
+ return 0;
+
+ T guess = frexp(z, &i_exp);
+ int original_i_exp = i_exp; // save for later
+ guess = tools::evaluate_polynomial(P, guess);
+ int i_exp3 = i_exp / 3;
+
+ typedef typename largest_cbrt_int_type<T>::type shift_type;
+
+ BOOST_STATIC_ASSERT( ::std::numeric_limits<shift_type>::radix == 2);
+
+ if(abs(i_exp3) < std::numeric_limits<shift_type>::digits)
+ {
+ if(i_exp3 > 0)
+ guess *= shift_type(1u) << i_exp3;
+ else
+ guess /= shift_type(1u) << -i_exp3;
+ }
+ else
+ {
+ guess = ldexp(guess, i_exp3);
+ }
+ i_exp %= 3;
+ guess *= correction[i_exp + 2];
+ //
+ // Now inline Halley iteration.
+ // We do this here rather than calling tools::halley_iterate since we can
+ // simplify the expressions algebraically, and don't need most of the error
+ // checking of the boilerplate version as we know in advance that the function
+ // is well behaved...
+ //
+ typedef typename policies::precision<T, Policy>::type prec;
+ typedef typename mpl::divides<prec, mpl::int_<3> >::type prec3;
+ typedef typename mpl::plus<prec3, mpl::int_<3> >::type new_prec;
+ typedef typename policies::normalise<Policy, policies::digits2<new_prec::value> >::type new_policy;
+ //
+ // Epsilon calculation uses compile time arithmetic when it's available for type T,
+ // otherwise uses ldexp to calculate at runtime:
+ //
+ T eps = (new_prec::value > 3) ? policies::get_epsilon<T, new_policy>() : ldexp(T(1), -2 - tools::digits<T>() / 3);
+ T diff;
+
+ if(original_i_exp < std::numeric_limits<T>::max_exponent - 3)
+ {
+ //
+ // Safe from overflow, use the fast method:
+ //
+ do
+ {
+ T g3 = guess * guess * guess;
+ diff = (g3 + z + z) / (g3 + g3 + z);
+ guess *= diff;
+ }
+ while(fabs(1 - diff) > eps);
+ }
+ else
+ {
+ //
+ // Either we're ready to overflow, or we can't tell because numeric_limits isn't
+ // available for type T:
+ //
+ do
+ {
+ T g2 = guess * guess;
+ diff = (g2 - z / guess) / (2 * guess + z / g2);
+ guess -= diff;
+ }
+ while((guess * eps) < fabs(diff));
+ }
+
+ return sign * guess;
+}
+
+} // namespace detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type cbrt(T z, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return static_cast<result_type>(detail::cbrt_imp(value_type(z), pol));
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type cbrt(T z)
+{
+ return cbrt(z, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+
+#endif // BOOST_MATH_SF_CBRT_HPP
+
+
+
+
--- /dev/null
+// Copyright (c) 2007 John Maddock
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_COS_PI_HPP
+#define BOOST_MATH_COS_PI_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/math/tools/config.hpp>
+#include <boost/math/special_functions/trunc.hpp>
+#include <boost/math/tools/promotion.hpp>
+#include <boost/math/constants/constants.hpp>
+
+namespace boost{ namespace math{ namespace detail{
+
+template <class T, class Policy>
+T cos_pi_imp(T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names
+ // cos of pi*x:
+ bool invert = false;
+ if(fabs(x) < 0.5)
+ return cos(constants::pi<T>() * x);
+
+ if(x < 1)
+ {
+ x = -x;
+ }
+ T rem = floor(x);
+ if(itrunc(rem, pol) & 1)
+ invert = !invert;
+ rem = x - rem;
+ if(rem > 0.5f)
+ {
+ rem = 1 - rem;
+ invert = !invert;
+ }
+ if(rem == 0.5f)
+ return 0;
+
+ rem = cos(constants::pi<T>() * rem);
+ return invert ? T(-rem) : rem;
+}
+
+} // namespace detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type cos_pi(T x, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ return boost::math::detail::cos_pi_imp<result_type>(x, pol);
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type cos_pi(T x)
+{
+ return boost::math::cos_pi(x, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+#endif
+
--- /dev/null
+// Copyright (c) 2013 Christopher Kormanyos
+// Use, modification and distribution are subject to 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)
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+//
+// This header contains implementation details for estimating the zeros
+// of the Airy functions airy_ai and airy_bi on the negative real axis.
+//
+#ifndef _AIRY_AI_BI_ZERO_2013_01_20_HPP_
+ #define _AIRY_AI_BI_ZERO_2013_01_20_HPP_
+
+ #include <boost/math/constants/constants.hpp>
+ #include <boost/math/special_functions/cbrt.hpp>
+
+ namespace boost { namespace math {
+ namespace detail
+ {
+ // Forward declarations of the needed Airy function implementations.
+ template <class T, class Policy>
+ T airy_ai_imp(T x, const Policy& pol);
+ template <class T, class Policy>
+ T airy_bi_imp(T x, const Policy& pol);
+ template <class T, class Policy>
+ T airy_ai_prime_imp(T x, const Policy& pol);
+ template <class T, class Policy>
+ T airy_bi_prime_imp(T x, const Policy& pol);
+
+ namespace airy_zero
+ {
+ template<class T>
+ T equation_as_10_4_105(const T& z)
+ {
+ const T one_over_z (T(1) / z);
+ const T one_over_z_squared(one_over_z * one_over_z);
+
+ const T z_pow_third (boost::math::cbrt(z));
+ const T z_pow_two_thirds(z_pow_third * z_pow_third);
+
+ // Implement the top line of Eq. 10.4.105.
+ const T fz(z_pow_two_thirds * ((((( + (T(162375596875.0) / 334430208UL)
+ * one_over_z_squared - ( T(108056875.0) / 6967296UL))
+ * one_over_z_squared + ( T(77125UL) / 82944UL))
+ * one_over_z_squared - ( T(5U) / 36U))
+ * one_over_z_squared + ( T(5U) / 48U))
+ * one_over_z_squared + (1)));
+
+ return fz;
+ }
+
+ namespace airy_ai_zero_detail
+ {
+ template<class T>
+ T initial_guess(const unsigned m)
+ {
+ T guess;
+
+ switch(m)
+ {
+ case 0U: { guess = T(0); break; }
+ case 1U: { guess = T(-2.33810741045976703849); break; }
+ case 2U: { guess = T(-4.08794944413097061664); break; }
+ case 3U: { guess = T(-5.52055982809555105913); break; }
+ case 4U: { guess = T(-6.78670809007175899878); break; }
+ case 5U: { guess = T(-7.94413358712085312314); break; }
+ case 6U: { guess = T(-9.02265085334098038016); break; }
+ case 7U: { guess = T(-10.0401743415580859306); break; }
+ case 8U: { guess = T(-11.0085243037332628932); break; }
+ case 9U: { guess = T(-11.9360155632362625170); break; }
+ case 10U:{ guess = T(-12.8287767528657572004); break; }
+ default:
+ {
+ const T t(((boost::math::constants::pi<T>() * 3U) * ((T(m) * 4U) - 1)) / 8U);
+ guess = -boost::math::detail::airy_zero::equation_as_10_4_105(t);
+ break;
+ }
+ }
+
+ return guess;
+ }
+
+ template<class T, class Policy>
+ class function_object_ai_and_ai_prime
+ {
+ public:
+ function_object_ai_and_ai_prime(const Policy pol) : my_pol(pol) { }
+
+ boost::math::tuple<T, T> operator()(const T& x) const
+ {
+ // Return a tuple containing both Ai(x) and Ai'(x).
+ return boost::math::make_tuple(
+ boost::math::detail::airy_ai_imp (x, my_pol),
+ boost::math::detail::airy_ai_prime_imp(x, my_pol));
+ }
+
+ private:
+ const Policy& my_pol;
+ const function_object_ai_and_ai_prime& operator=(const function_object_ai_and_ai_prime&);
+ };
+ } // namespace airy_ai_zero_detail
+
+ namespace airy_bi_zero_detail
+ {
+ template<class T>
+ T initial_guess(const unsigned m)
+ {
+ T guess;
+
+ switch(m)
+ {
+ case 0U: { guess = T(0); break; }
+ case 1U: { guess = T(-1.17371322270912792492); break; }
+ case 2U: { guess = T(-3.27109330283635271568); break; }
+ case 3U: { guess = T(-4.83073784166201593267); break; }
+ case 4U: { guess = T(-6.16985212831025125983); break; }
+ case 5U: { guess = T(-7.37676207936776371360); break; }
+ case 6U: { guess = T(-8.49194884650938801345); break; }
+ case 7U: { guess = T(-9.53819437934623888663); break; }
+ case 8U: { guess = T(-10.5299135067053579244); break; }
+ case 9U: { guess = T(-11.4769535512787794379); break; }
+ case 10U:{ guess = T(-12.3864171385827387456); break; }
+ default:
+ {
+ const T t(((boost::math::constants::pi<T>() * 3U) * ((T(m) * 4U) - 3)) / 8U);
+ guess = -boost::math::detail::airy_zero::equation_as_10_4_105(t);
+ break;
+ }
+ }
+
+ return guess;
+ }
+
+ template<class T, class Policy>
+ class function_object_bi_and_bi_prime
+ {
+ public:
+ function_object_bi_and_bi_prime(const Policy pol) : my_pol(pol) { }
+
+ boost::math::tuple<T, T> operator()(const T& x) const
+ {
+ // Return a tuple containing both Bi(x) and Bi'(x).
+ return boost::math::make_tuple(
+ boost::math::detail::airy_bi_imp (x, my_pol),
+ boost::math::detail::airy_bi_prime_imp(x, my_pol));
+ }
+
+ private:
+ const Policy& my_pol;
+ const function_object_bi_and_bi_prime& operator=(const function_object_bi_and_bi_prime&);
+ };
+ } // namespace airy_bi_zero_detail
+ } // namespace airy_zero
+ } // namespace detail
+ } // namespace math
+ } // namespaces boost
+
+#endif // _AIRY_AI_BI_ZERO_2013_01_20_HPP_
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_I0_HPP
+#define BOOST_MATH_BESSEL_I0_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/big_constant.hpp>
+#include <boost/assert.hpp>
+
+// Modified Bessel function of the first kind of order zero
+// minimax rational approximations on intervals, see
+// Blair and Edwards, Chalk River Report AECL-4928, 1974
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T>
+T bessel_i0(T x);
+
+template <class T>
+struct bessel_i0_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init();
+ }
+ static void do_init()
+ {
+ bessel_i0(T(1));
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T>
+const typename bessel_i0_initializer<T>::init bessel_i0_initializer<T>::initializer;
+
+template <typename T>
+T bessel_i0(T x)
+{
+ bessel_i0_initializer<T>::force_instantiate();
+
+ static const T P1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.2335582639474375249e+15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.5050369673018427753e+14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.2940087627407749166e+13)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -8.4925101247114157499e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.1912746104985237192e+10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.0313066708737980747e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.9545626019847898221e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.4125195876041896775e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -7.0935347449210549190e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.5453977791786851041e-02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.5172644670688975051e-05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.0517226450451067446e-08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.6843448573468483278e-11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.5982226675653184646e-14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.2487866627945699800e-18)),
+ };
+ static const T Q1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.2335582639474375245e+15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.8858692566751002988e+12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.2207067397808979846e+10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0377081058062166144e+07)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -4.8527560179962773045e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T P2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.2210262233306573296e-04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.3067392038106924055e-02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -4.4700805721174453923e-01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.5674518371240761397e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.3517945679239481621e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.1611322818701131207e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -9.6090021968656180000e+00)),
+ };
+ static const T Q2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.5194330231005480228e-04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.2547697594819615062e-02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.1151759188741312645e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.3982595353892851542e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.0228002066743340583e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.5539563258012929600e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.1446690275135491500e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ T value, factor, r;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ if (x < 0)
+ {
+ x = -x; // even function
+ }
+ if (x == 0)
+ {
+ return static_cast<T>(1);
+ }
+ if (x <= 15) // x in (0, 15]
+ {
+ T y = x * x;
+ value = evaluate_polynomial(P1, y) / evaluate_polynomial(Q1, y);
+ }
+ else // x in (15, \infty)
+ {
+ T y = 1 / x - T(1) / 15;
+ r = evaluate_polynomial(P2, y) / evaluate_polynomial(Q2, y);
+ factor = exp(x) / sqrt(x);
+ value = factor * r;
+ }
+
+ return value;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_I0_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_I1_HPP
+#define BOOST_MATH_BESSEL_I1_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/big_constant.hpp>
+#include <boost/assert.hpp>
+
+// Modified Bessel function of the first kind of order one
+// minimax rational approximations on intervals, see
+// Blair and Edwards, Chalk River Report AECL-4928, 1974
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T>
+T bessel_i1(T x);
+
+template <class T>
+struct bessel_i1_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init();
+ }
+ static void do_init()
+ {
+ bessel_i1(T(1));
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T>
+const typename bessel_i1_initializer<T>::init bessel_i1_initializer<T>::initializer;
+
+template <typename T>
+T bessel_i1(T x)
+{
+
+ bessel_i1_initializer<T>::force_instantiate();
+
+ static const T P1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.4577180278143463643e+15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.7732037840791591320e+14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.9876779648010090070e+12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.3357437682275493024e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.4828267606612366099e+09)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.0588550724769347106e+07)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.1894091982308017540e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.8225946631657315931e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -4.7207090827310162436e-01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -9.1746443287817501309e-04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.3466829827635152875e-06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.4831904935994647675e-09)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.1928788903603238754e-12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.5245515583151902910e-16)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.9705291802535139930e-19)),
+ };
+ static const T Q1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.9154360556286927285e+15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.7887501377547640438e+12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.4386907088588283434e+10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1594225856856884006e+07)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.1326864679904189920e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T P2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.4582087408985668208e-05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -8.9359825138577646443e-04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.9204895411257790122e-02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.4198728018058047439e-01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.3960118277609544334e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.9746376087200685843e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.5591872901933459000e-01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.0437159056137599999e-02)),
+ };
+ static const T Q2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.7510433111922824643e-05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.2835624489492512649e-03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.4212010813186530069e-02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -8.5017476463217924408e-01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.2593714889036996297e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.8806586721556593450e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ T value, factor, r, w;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ w = abs(x);
+ if (x == 0)
+ {
+ return static_cast<T>(0);
+ }
+ if (w <= 15) // w in (0, 15]
+ {
+ T y = x * x;
+ r = evaluate_polynomial(P1, y) / evaluate_polynomial(Q1, y);
+ factor = w;
+ value = factor * r;
+ }
+ else // w in (15, \infty)
+ {
+ T y = 1 / w - T(1) / 15;
+ r = evaluate_polynomial(P2, y) / evaluate_polynomial(Q2, y);
+ factor = exp(w) / sqrt(w);
+ value = factor * r;
+ }
+
+ if (x < 0)
+ {
+ value *= -value; // odd function
+ }
+ return value;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_I1_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_IK_HPP
+#define BOOST_MATH_BESSEL_IK_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/round.hpp>
+#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/sin_pi.hpp>
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/tools/config.hpp>
+
+// Modified Bessel functions of the first and second kind of fractional order
+
+namespace boost { namespace math {
+
+namespace detail {
+
+template <class T, class Policy>
+struct cyl_bessel_i_small_z
+{
+ typedef T result_type;
+
+ cyl_bessel_i_small_z(T v_, T z_) : k(0), v(v_), mult(z_*z_/4)
+ {
+ BOOST_MATH_STD_USING
+ term = 1;
+ }
+
+ T operator()()
+ {
+ T result = term;
+ ++k;
+ term *= mult / k;
+ term /= k + v;
+ return result;
+ }
+private:
+ unsigned k;
+ T v;
+ T term;
+ T mult;
+};
+
+template <class T, class Policy>
+inline T bessel_i_small_z_series(T v, T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ T prefix;
+ if(v < max_factorial<T>::value)
+ {
+ prefix = pow(x / 2, v) / boost::math::tgamma(v + 1, pol);
+ }
+ else
+ {
+ prefix = v * log(x / 2) - boost::math::lgamma(v + 1, pol);
+ prefix = exp(prefix);
+ }
+ if(prefix == 0)
+ return prefix;
+
+ cyl_bessel_i_small_z<T, Policy> s(v, x);
+ boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+ T zero = 0;
+ T result = boost::math::tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter, zero);
+#else
+ T result = boost::math::tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter);
+#endif
+ policies::check_series_iterations<T>("boost::math::bessel_j_small_z_series<%1%>(%1%,%1%)", max_iter, pol);
+ return prefix * result;
+}
+
+// Calculate K(v, x) and K(v+1, x) by method analogous to
+// Temme, Journal of Computational Physics, vol 21, 343 (1976)
+template <typename T, typename Policy>
+int temme_ik(T v, T x, T* K, T* K1, const Policy& pol)
+{
+ T f, h, p, q, coef, sum, sum1, tolerance;
+ T a, b, c, d, sigma, gamma1, gamma2;
+ unsigned long k;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+
+ // |x| <= 2, Temme series converge rapidly
+ // |x| > 2, the larger the |x|, the slower the convergence
+ BOOST_ASSERT(abs(x) <= 2);
+ BOOST_ASSERT(abs(v) <= 0.5f);
+
+ T gp = boost::math::tgamma1pm1(v, pol);
+ T gm = boost::math::tgamma1pm1(-v, pol);
+
+ a = log(x / 2);
+ b = exp(v * a);
+ sigma = -a * v;
+ c = abs(v) < tools::epsilon<T>() ?
+ T(1) : T(boost::math::sin_pi(v) / (v * pi<T>()));
+ d = abs(sigma) < tools::epsilon<T>() ?
+ T(1) : T(sinh(sigma) / sigma);
+ gamma1 = abs(v) < tools::epsilon<T>() ?
+ T(-euler<T>()) : T((0.5f / v) * (gp - gm) * c);
+ gamma2 = (2 + gp + gm) * c / 2;
+
+ // initial values
+ p = (gp + 1) / (2 * b);
+ q = (1 + gm) * b / 2;
+ f = (cosh(sigma) * gamma1 + d * (-a) * gamma2) / c;
+ h = p;
+ coef = 1;
+ sum = coef * f;
+ sum1 = coef * h;
+
+ BOOST_MATH_INSTRUMENT_VARIABLE(p);
+ BOOST_MATH_INSTRUMENT_VARIABLE(q);
+ BOOST_MATH_INSTRUMENT_VARIABLE(f);
+ BOOST_MATH_INSTRUMENT_VARIABLE(sigma);
+ BOOST_MATH_INSTRUMENT_CODE(sinh(sigma));
+ BOOST_MATH_INSTRUMENT_VARIABLE(gamma1);
+ BOOST_MATH_INSTRUMENT_VARIABLE(gamma2);
+ BOOST_MATH_INSTRUMENT_VARIABLE(c);
+ BOOST_MATH_INSTRUMENT_VARIABLE(d);
+ BOOST_MATH_INSTRUMENT_VARIABLE(a);
+
+ // series summation
+ tolerance = tools::epsilon<T>();
+ for (k = 1; k < policies::get_max_series_iterations<Policy>(); k++)
+ {
+ f = (k * f + p + q) / (k*k - v*v);
+ p /= k - v;
+ q /= k + v;
+ h = p - k * f;
+ coef *= x * x / (4 * k);
+ sum += coef * f;
+ sum1 += coef * h;
+ if (abs(coef * f) < abs(sum) * tolerance)
+ {
+ break;
+ }
+ }
+ policies::check_series_iterations<T>("boost::math::bessel_ik<%1%>(%1%,%1%) in temme_ik", k, pol);
+
+ *K = sum;
+ *K1 = 2 * sum1 / x;
+
+ return 0;
+}
+
+// Evaluate continued fraction fv = I_(v+1) / I_v, derived from
+// Abramowitz and Stegun, Handbook of Mathematical Functions, 1972, 9.1.73
+template <typename T, typename Policy>
+int CF1_ik(T v, T x, T* fv, const Policy& pol)
+{
+ T C, D, f, a, b, delta, tiny, tolerance;
+ unsigned long k;
+
+ BOOST_MATH_STD_USING
+
+ // |x| <= |v|, CF1_ik converges rapidly
+ // |x| > |v|, CF1_ik needs O(|x|) iterations to converge
+
+ // modified Lentz's method, see
+ // Lentz, Applied Optics, vol 15, 668 (1976)
+ tolerance = 2 * tools::epsilon<T>();
+ BOOST_MATH_INSTRUMENT_VARIABLE(tolerance);
+ tiny = sqrt(tools::min_value<T>());
+ BOOST_MATH_INSTRUMENT_VARIABLE(tiny);
+ C = f = tiny; // b0 = 0, replace with tiny
+ D = 0;
+ for (k = 1; k < policies::get_max_series_iterations<Policy>(); k++)
+ {
+ a = 1;
+ b = 2 * (v + k) / x;
+ C = b + a / C;
+ D = b + a * D;
+ if (C == 0) { C = tiny; }
+ if (D == 0) { D = tiny; }
+ D = 1 / D;
+ delta = C * D;
+ f *= delta;
+ BOOST_MATH_INSTRUMENT_VARIABLE(delta-1);
+ if (abs(delta - 1) <= tolerance)
+ {
+ break;
+ }
+ }
+ BOOST_MATH_INSTRUMENT_VARIABLE(k);
+ policies::check_series_iterations<T>("boost::math::bessel_ik<%1%>(%1%,%1%) in CF1_ik", k, pol);
+
+ *fv = f;
+
+ return 0;
+}
+
+// Calculate K(v, x) and K(v+1, x) by evaluating continued fraction
+// z1 / z0 = U(v+1.5, 2v+1, 2x) / U(v+0.5, 2v+1, 2x), see
+// Thompson and Barnett, Computer Physics Communications, vol 47, 245 (1987)
+template <typename T, typename Policy>
+int CF2_ik(T v, T x, T* Kv, T* Kv1, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ using namespace boost::math::constants;
+
+ T S, C, Q, D, f, a, b, q, delta, tolerance, current, prev;
+ unsigned long k;
+
+ // |x| >= |v|, CF2_ik converges rapidly
+ // |x| -> 0, CF2_ik fails to converge
+
+ BOOST_ASSERT(abs(x) > 1);
+
+ // Steed's algorithm, see Thompson and Barnett,
+ // Journal of Computational Physics, vol 64, 490 (1986)
+ tolerance = tools::epsilon<T>();
+ a = v * v - 0.25f;
+ b = 2 * (x + 1); // b1
+ D = 1 / b; // D1 = 1 / b1
+ f = delta = D; // f1 = delta1 = D1, coincidence
+ prev = 0; // q0
+ current = 1; // q1
+ Q = C = -a; // Q1 = C1 because q1 = 1
+ S = 1 + Q * delta; // S1
+ BOOST_MATH_INSTRUMENT_VARIABLE(tolerance);
+ BOOST_MATH_INSTRUMENT_VARIABLE(a);
+ BOOST_MATH_INSTRUMENT_VARIABLE(b);
+ BOOST_MATH_INSTRUMENT_VARIABLE(D);
+ BOOST_MATH_INSTRUMENT_VARIABLE(f);
+
+ for (k = 2; k < policies::get_max_series_iterations<Policy>(); k++) // starting from 2
+ {
+ // continued fraction f = z1 / z0
+ a -= 2 * (k - 1);
+ b += 2;
+ D = 1 / (b + a * D);
+ delta *= b * D - 1;
+ f += delta;
+
+ // series summation S = 1 + \sum_{n=1}^{\infty} C_n * z_n / z_0
+ q = (prev - (b - 2) * current) / a;
+ prev = current;
+ current = q; // forward recurrence for q
+ C *= -a / k;
+ Q += C * q;
+ S += Q * delta;
+ //
+ // Under some circumstances q can grow very small and C very
+ // large, leading to under/overflow. This is particularly an
+ // issue for types which have many digits precision but a narrow
+ // exponent range. A typical example being a "double double" type.
+ // To avoid this situation we can normalise q (and related prev/current)
+ // and C. All other variables remain unchanged in value. A typical
+ // test case occurs when x is close to 2, for example cyl_bessel_k(9.125, 2.125).
+ //
+ if(q < tools::epsilon<T>())
+ {
+ C *= q;
+ prev /= q;
+ current /= q;
+ q = 1;
+ }
+
+ // S converges slower than f
+ BOOST_MATH_INSTRUMENT_VARIABLE(Q * delta);
+ BOOST_MATH_INSTRUMENT_VARIABLE(abs(S) * tolerance);
+ if (abs(Q * delta) < abs(S) * tolerance)
+ {
+ break;
+ }
+ }
+ policies::check_series_iterations<T>("boost::math::bessel_ik<%1%>(%1%,%1%) in CF2_ik", k, pol);
+
+ *Kv = sqrt(pi<T>() / (2 * x)) * exp(-x) / S;
+ *Kv1 = *Kv * (0.5f + v + x + (v * v - 0.25f) * f) / x;
+ BOOST_MATH_INSTRUMENT_VARIABLE(*Kv);
+ BOOST_MATH_INSTRUMENT_VARIABLE(*Kv1);
+
+ return 0;
+}
+
+enum{
+ need_i = 1,
+ need_k = 2
+};
+
+// Compute I(v, x) and K(v, x) simultaneously by Temme's method, see
+// Temme, Journal of Computational Physics, vol 19, 324 (1975)
+template <typename T, typename Policy>
+int bessel_ik(T v, T x, T* I, T* K, int kind, const Policy& pol)
+{
+ // Kv1 = K_(v+1), fv = I_(v+1) / I_v
+ // Ku1 = K_(u+1), fu = I_(u+1) / I_u
+ T u, Iv, Kv, Kv1, Ku, Ku1, fv;
+ T W, current, prev, next;
+ bool reflect = false;
+ unsigned n, k;
+ int org_kind = kind;
+ BOOST_MATH_INSTRUMENT_VARIABLE(v);
+ BOOST_MATH_INSTRUMENT_VARIABLE(x);
+ BOOST_MATH_INSTRUMENT_VARIABLE(kind);
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+ static const char* function = "boost::math::bessel_ik<%1%>(%1%,%1%)";
+
+ if (v < 0)
+ {
+ reflect = true;
+ v = -v; // v is non-negative from here
+ kind |= need_k;
+ }
+ n = iround(v, pol);
+ u = v - n; // -1/2 <= u < 1/2
+ BOOST_MATH_INSTRUMENT_VARIABLE(n);
+ BOOST_MATH_INSTRUMENT_VARIABLE(u);
+
+ if (x < 0)
+ {
+ *I = *K = policies::raise_domain_error<T>(function,
+ "Got x = %1% but real argument x must be non-negative, complex number result not supported.", x, pol);
+ return 1;
+ }
+ if (x == 0)
+ {
+ Iv = (v == 0) ? static_cast<T>(1) : static_cast<T>(0);
+ if(kind & need_k)
+ {
+ Kv = policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ else
+ {
+ Kv = std::numeric_limits<T>::quiet_NaN(); // any value will do
+ }
+
+ if(reflect && (kind & need_i))
+ {
+ T z = (u + n % 2);
+ Iv = boost::math::sin_pi(z, pol) == 0 ?
+ Iv :
+ policies::raise_overflow_error<T>(function, 0, pol); // reflection formula
+ }
+
+ *I = Iv;
+ *K = Kv;
+ return 0;
+ }
+
+ // x is positive until reflection
+ W = 1 / x; // Wronskian
+ if (x <= 2) // x in (0, 2]
+ {
+ temme_ik(u, x, &Ku, &Ku1, pol); // Temme series
+ }
+ else // x in (2, \infty)
+ {
+ CF2_ik(u, x, &Ku, &Ku1, pol); // continued fraction CF2_ik
+ }
+ BOOST_MATH_INSTRUMENT_VARIABLE(Ku);
+ BOOST_MATH_INSTRUMENT_VARIABLE(Ku1);
+ prev = Ku;
+ current = Ku1;
+ T scale = 1;
+ for (k = 1; k <= n; k++) // forward recurrence for K
+ {
+ T fact = 2 * (u + k) / x;
+ if((tools::max_value<T>() - fabs(prev)) / fact < fabs(current))
+ {
+ prev /= current;
+ scale /= current;
+ current = 1;
+ }
+ next = fact * current + prev;
+ prev = current;
+ current = next;
+ }
+ Kv = prev;
+ Kv1 = current;
+ BOOST_MATH_INSTRUMENT_VARIABLE(Kv);
+ BOOST_MATH_INSTRUMENT_VARIABLE(Kv1);
+ if(kind & need_i)
+ {
+ T lim = (4 * v * v + 10) / (8 * x);
+ lim *= lim;
+ lim *= lim;
+ lim /= 24;
+ if((lim < tools::epsilon<T>() * 10) && (x > 100))
+ {
+ // x is huge compared to v, CF1 may be very slow
+ // to converge so use asymptotic expansion for large
+ // x case instead. Note that the asymptotic expansion
+ // isn't very accurate - so it's deliberately very hard
+ // to get here - probably we're going to overflow:
+ Iv = asymptotic_bessel_i_large_x(v, x, pol);
+ }
+ else if((v > 0) && (x / v < 0.25))
+ {
+ Iv = bessel_i_small_z_series(v, x, pol);
+ }
+ else
+ {
+ CF1_ik(v, x, &fv, pol); // continued fraction CF1_ik
+ Iv = scale * W / (Kv * fv + Kv1); // Wronskian relation
+ }
+ }
+ else
+ Iv = std::numeric_limits<T>::quiet_NaN(); // any value will do
+
+ if (reflect)
+ {
+ T z = (u + n % 2);
+ T fact = (2 / pi<T>()) * (boost::math::sin_pi(z) * Kv);
+ if(fact == 0)
+ *I = Iv;
+ else if(tools::max_value<T>() * scale < fact)
+ *I = (org_kind & need_i) ? T(sign(fact) * sign(scale) * policies::raise_overflow_error<T>(function, 0, pol)) : T(0);
+ else
+ *I = Iv + fact / scale; // reflection formula
+ }
+ else
+ {
+ *I = Iv;
+ }
+ if(tools::max_value<T>() * scale < Kv)
+ *K = (org_kind & need_k) ? T(sign(Kv) * sign(scale) * policies::raise_overflow_error<T>(function, 0, pol)) : T(0);
+ else
+ *K = Kv / scale;
+ BOOST_MATH_INSTRUMENT_VARIABLE(*I);
+ BOOST_MATH_INSTRUMENT_VARIABLE(*K);
+ return 0;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_IK_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_J0_HPP
+#define BOOST_MATH_BESSEL_J0_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/big_constant.hpp>
+#include <boost/assert.hpp>
+
+// Bessel function of the first kind of order zero
+// x <= 8, minimax rational approximations on root-bracketing intervals
+// x > 8, Hankel asymptotic expansion in Hart, Computer Approximations, 1968
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T>
+T bessel_j0(T x);
+
+template <class T>
+struct bessel_j0_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init();
+ }
+ static void do_init()
+ {
+ bessel_j0(T(1));
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T>
+const typename bessel_j0_initializer<T>::init bessel_j0_initializer<T>::initializer;
+
+template <typename T>
+T bessel_j0(T x)
+{
+ bessel_j0_initializer<T>::force_instantiate();
+
+ static const T P1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -4.1298668500990866786e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.7282507878605942706e+10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.2140700423540120665e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.6302997904833794242e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.6629814655107086448e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0344222815443188943e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.2117036164593528341e-01))
+ };
+ static const T Q1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.3883787996332290397e+12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.6328198300859648632e+10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.3985097372263433271e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.5612696224219938200e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.3614022392337710626e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.0))
+ };
+ static const T P2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.8319397969392084011e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.2254078161378989535e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -7.2879702464464618998e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0341910641583726701e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1725046279757103576e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.4176707025325087628e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.4321196680624245801e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.8591703355916499363e+01))
+ };
+ static const T Q2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.5783478026152301072e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.4599102262586308984e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -8.4055062591169562211e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.8680990008359188352e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.9458766545509337327e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.3307310774649071172e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.5258076240801555057e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ static const T PC[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.2779090197304684302e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.1345386639580765797e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.1170523380864944322e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.4806486443249270347e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.5376201909008354296e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.8961548424210455236e-01))
+ };
+ static const T QC[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.2779090197304684318e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.1370412495510416640e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.1215350561880115730e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.5028735138235608207e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.5711159858080893649e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ static const T PS[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -8.9226600200800094098e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.8591953644342993800e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.1183429920482737611e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.2300261666214198472e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.2441026745835638459e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -8.8033303048680751817e-03))
+ };
+ static const T QS[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.7105024128512061905e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1951131543434613647e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.2642780169211018836e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.4887231232283756582e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.0593769594993125859e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ static const T x1 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.4048255576957727686e+00)),
+ x2 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.5200781102863106496e+00)),
+ x11 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.160e+02)),
+ x12 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.42444230422723137837e-03)),
+ x21 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.4130e+03)),
+ x22 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.46860286310649596604e-04));
+
+ T value, factor, r, rc, rs;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+ if (x < 0)
+ {
+ x = -x; // even function
+ }
+ if (x == 0)
+ {
+ return static_cast<T>(1);
+ }
+ if (x <= 4) // x in (0, 4]
+ {
+ T y = x * x;
+ BOOST_ASSERT(sizeof(P1) == sizeof(Q1));
+ r = evaluate_rational(P1, Q1, y);
+ factor = (x + x1) * ((x - x11/256) - x12);
+ value = factor * r;
+ }
+ else if (x <= 8.0) // x in (4, 8]
+ {
+ T y = 1 - (x * x)/64;
+ BOOST_ASSERT(sizeof(P2) == sizeof(Q2));
+ r = evaluate_rational(P2, Q2, y);
+ factor = (x + x2) * ((x - x21/256) - x22);
+ value = factor * r;
+ }
+ else // x in (8, \infty)
+ {
+ T y = 8 / x;
+ T y2 = y * y;
+ BOOST_ASSERT(sizeof(PC) == sizeof(QC));
+ BOOST_ASSERT(sizeof(PS) == sizeof(QS));
+ rc = evaluate_rational(PC, QC, y2);
+ rs = evaluate_rational(PS, QS, y2);
+ factor = constants::one_div_root_pi<T>() / sqrt(x);
+ //
+ // What follows is really just:
+ //
+ // T z = x - pi/4;
+ // value = factor * (rc * cos(z) - y * rs * sin(z));
+ //
+ // But using the addition formulae for sin and cos, plus
+ // the special values for sin/cos of pi/4.
+ //
+ T sx = sin(x);
+ T cx = cos(x);
+ value = factor * (rc * (cx + sx) - y * rs * (sx - cx));
+ }
+
+ return value;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_J0_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_J1_HPP
+#define BOOST_MATH_BESSEL_J1_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/big_constant.hpp>
+#include <boost/assert.hpp>
+
+// Bessel function of the first kind of order one
+// x <= 8, minimax rational approximations on root-bracketing intervals
+// x > 8, Hankel asymptotic expansion in Hart, Computer Approximations, 1968
+
+namespace boost { namespace math{ namespace detail{
+
+template <typename T>
+T bessel_j1(T x);
+
+template <class T>
+struct bessel_j1_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init();
+ }
+ static void do_init()
+ {
+ bessel_j1(T(1));
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T>
+const typename bessel_j1_initializer<T>::init bessel_j1_initializer<T>::initializer;
+
+template <typename T>
+T bessel_j1(T x)
+{
+ bessel_j1_initializer<T>::force_instantiate();
+
+ static const T P1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.4258509801366645672e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.6781041261492395835e+09)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.1548696764841276794e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.8062904098958257677e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -4.4615792982775076130e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0650724020080236441e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.0767857011487300348e-02))
+ };
+ static const T Q1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.1868604460820175290e+12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.2091902282580133541e+10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.0228375140097033958e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.9117614494174794095e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0742272239517380498e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.0))
+ };
+ static const T P2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.7527881995806511112e+16)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.6608531731299018674e+15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.6658018905416665164e+13)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.5580665670910619166e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.8113931269860667829e+09)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.0793266148011179143e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -7.5023342220781607561e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.6179191852758252278e+00))
+ };
+ static const T Q2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.7253905888447681194e+18)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.7128800897135812012e+16)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.4899346165481429307e+13)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.7622777286244082666e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.4872502899596389593e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1267125065029138050e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.3886978985861357615e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ static const T PC[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -4.4357578167941278571e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -9.9422465050776411957e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.6033732483649391093e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.5235293511811373833e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.0982405543459346727e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.6116166443246101165e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.0))
+ };
+ static const T QC[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -4.4357578167941278568e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -9.9341243899345856590e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.5853394797230870728e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.5118095066341608816e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.0726385991103820119e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.4550094401904961825e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ static const T PS[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.3220913409857223519e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.5145160675335701966e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.6178836581270835179e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.8494262873223866797e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.7063754290207680021e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.5265133846636032186e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.0))
+ };
+ static const T QS[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.0871281941028743574e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.8194580422439972989e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.4194606696037208929e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.0029443582266975117e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.7890229745772202641e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.6383677696049909675e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ static const T x1 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.8317059702075123156e+00)),
+ x2 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.0155866698156187535e+00)),
+ x11 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.810e+02)),
+ x12 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.2527979248768438556e-04)),
+ x21 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.7960e+03)),
+ x22 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.8330184381246462950e-05));
+
+ T value, factor, r, rc, rs, w;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+ w = abs(x);
+ if (x == 0)
+ {
+ return static_cast<T>(0);
+ }
+ if (w <= 4) // w in (0, 4]
+ {
+ T y = x * x;
+ BOOST_ASSERT(sizeof(P1) == sizeof(Q1));
+ r = evaluate_rational(P1, Q1, y);
+ factor = w * (w + x1) * ((w - x11/256) - x12);
+ value = factor * r;
+ }
+ else if (w <= 8) // w in (4, 8]
+ {
+ T y = x * x;
+ BOOST_ASSERT(sizeof(P2) == sizeof(Q2));
+ r = evaluate_rational(P2, Q2, y);
+ factor = w * (w + x2) * ((w - x21/256) - x22);
+ value = factor * r;
+ }
+ else // w in (8, \infty)
+ {
+ T y = 8 / w;
+ T y2 = y * y;
+ BOOST_ASSERT(sizeof(PC) == sizeof(QC));
+ BOOST_ASSERT(sizeof(PS) == sizeof(QS));
+ rc = evaluate_rational(PC, QC, y2);
+ rs = evaluate_rational(PS, QS, y2);
+ factor = 1 / (sqrt(w) * constants::root_pi<T>());
+ //
+ // What follows is really just:
+ //
+ // T z = w - 0.75f * pi<T>();
+ // value = factor * (rc * cos(z) - y * rs * sin(z));
+ //
+ // but using the sin/cos addition rules plus constants
+ // for the values of sin/cos of 3PI/4 which then cancel
+ // out with corresponding terms in "factor".
+ //
+ T sx = sin(x);
+ T cx = cos(x);
+ value = factor * (rc * (sx - cx) + y * rs * (sx + cx));
+ }
+
+ if (x < 0)
+ {
+ value *= -1; // odd function
+ }
+ return value;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_J1_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_JN_HPP
+#define BOOST_MATH_BESSEL_JN_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/detail/bessel_j0.hpp>
+#include <boost/math/special_functions/detail/bessel_j1.hpp>
+#include <boost/math/special_functions/detail/bessel_jy.hpp>
+#include <boost/math/special_functions/detail/bessel_jy_asym.hpp>
+#include <boost/math/special_functions/detail/bessel_jy_series.hpp>
+
+// Bessel function of the first kind of integer order
+// J_n(z) is the minimal solution
+// n < abs(z), forward recurrence stable and usable
+// n >= abs(z), forward recurrence unstable, use Miller's algorithm
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T bessel_jn(int n, T x, const Policy& pol)
+{
+ T value(0), factor, current, prev, next;
+
+ BOOST_MATH_STD_USING
+
+ //
+ // Reflection has to come first:
+ //
+ if (n < 0)
+ {
+ factor = (n & 0x1) ? -1 : 1; // J_{-n}(z) = (-1)^n J_n(z)
+ n = -n;
+ }
+ else
+ {
+ factor = 1;
+ }
+ if(x < 0)
+ {
+ factor *= (n & 0x1) ? -1 : 1; // J_{n}(-z) = (-1)^n J_n(z)
+ x = -x;
+ }
+ //
+ // Special cases:
+ //
+ if (n == 0)
+ {
+ return factor * bessel_j0(x);
+ }
+ if (n == 1)
+ {
+ return factor * bessel_j1(x);
+ }
+
+ if (x == 0) // n >= 2
+ {
+ return static_cast<T>(0);
+ }
+
+ if(asymptotic_bessel_large_x_limit(T(n), x))
+ return factor * asymptotic_bessel_j_large_x_2<T>(n, x);
+
+ BOOST_ASSERT(n > 1);
+ T scale = 1;
+ if (n < abs(x)) // forward recurrence
+ {
+ prev = bessel_j0(x);
+ current = bessel_j1(x);
+ policies::check_series_iterations<T>("boost::math::bessel_j_n<%1%>(%1%,%1%)", n, pol);
+ for (int k = 1; k < n; k++)
+ {
+ T fact = 2 * k / x;
+ //
+ // rescale if we would overflow or underflow:
+ //
+ if((fabs(fact) > 1) && ((tools::max_value<T>() - fabs(prev)) / fabs(fact) < fabs(current)))
+ {
+ scale /= current;
+ prev /= current;
+ current = 1;
+ }
+ value = fact * current - prev;
+ prev = current;
+ current = value;
+ }
+ }
+ else if((x < 1) || (n > x * x / 4) || (x < 5))
+ {
+ return factor * bessel_j_small_z_series(T(n), x, pol);
+ }
+ else // backward recurrence
+ {
+ T fn; int s; // fn = J_(n+1) / J_n
+ // |x| <= n, fast convergence for continued fraction CF1
+ boost::math::detail::CF1_jy(static_cast<T>(n), x, &fn, &s, pol);
+ prev = fn;
+ current = 1;
+ // Check recursion won't go on too far:
+ policies::check_series_iterations<T>("boost::math::bessel_j_n<%1%>(%1%,%1%)", n, pol);
+ for (int k = n; k > 0; k--)
+ {
+ T fact = 2 * k / x;
+ if((fabs(fact) > 1) && ((tools::max_value<T>() - fabs(prev)) / fabs(fact) < fabs(current)))
+ {
+ prev /= current;
+ scale /= current;
+ current = 1;
+ }
+ next = fact * current - prev;
+ prev = current;
+ current = next;
+ }
+ value = bessel_j0(x) / current; // normalization
+ scale = 1 / scale;
+ }
+ value *= factor;
+
+ if(tools::max_value<T>() * scale < fabs(value))
+ return policies::raise_overflow_error<T>("boost::math::bessel_jn<%1%>(%1%,%1%)", 0, pol);
+
+ return value / scale;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_JN_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_JY_HPP
+#define BOOST_MATH_BESSEL_JY_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/config.hpp>
+#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/sign.hpp>
+#include <boost/math/special_functions/hypot.hpp>
+#include <boost/math/special_functions/sin_pi.hpp>
+#include <boost/math/special_functions/cos_pi.hpp>
+#include <boost/math/special_functions/detail/bessel_jy_asym.hpp>
+#include <boost/math/special_functions/detail/bessel_jy_series.hpp>
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_floating_point.hpp>
+#include <complex>
+
+// Bessel functions of the first and second kind of fractional order
+
+namespace boost { namespace math {
+
+ namespace detail {
+
+ //
+ // Simultaneous calculation of A&S 9.2.9 and 9.2.10
+ // for use in A&S 9.2.5 and 9.2.6.
+ // This series is quick to evaluate, but divergent unless
+ // x is very large, in fact it's pretty hard to figure out
+ // with any degree of precision when this series actually
+ // *will* converge!! Consequently, we may just have to
+ // try it and see...
+ //
+ template <class T, class Policy>
+ bool hankel_PQ(T v, T x, T* p, T* q, const Policy& )
+ {
+ BOOST_MATH_STD_USING
+ T tolerance = 2 * policies::get_epsilon<T, Policy>();
+ *p = 1;
+ *q = 0;
+ T k = 1;
+ T z8 = 8 * x;
+ T sq = 1;
+ T mu = 4 * v * v;
+ T term = 1;
+ bool ok = true;
+ do
+ {
+ term *= (mu - sq * sq) / (k * z8);
+ *q += term;
+ k += 1;
+ sq += 2;
+ T mult = (sq * sq - mu) / (k * z8);
+ ok = fabs(mult) < 0.5f;
+ term *= mult;
+ *p += term;
+ k += 1;
+ sq += 2;
+ }
+ while((fabs(term) > tolerance * *p) && ok);
+ return ok;
+ }
+
+ // Calculate Y(v, x) and Y(v+1, x) by Temme's method, see
+ // Temme, Journal of Computational Physics, vol 21, 343 (1976)
+ template <typename T, typename Policy>
+ int temme_jy(T v, T x, T* Y, T* Y1, const Policy& pol)
+ {
+ T g, h, p, q, f, coef, sum, sum1, tolerance;
+ T a, d, e, sigma;
+ unsigned long k;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+ BOOST_ASSERT(fabs(v) <= 0.5f); // precondition for using this routine
+
+ T gp = boost::math::tgamma1pm1(v, pol);
+ T gm = boost::math::tgamma1pm1(-v, pol);
+ T spv = boost::math::sin_pi(v, pol);
+ T spv2 = boost::math::sin_pi(v/2, pol);
+ T xp = pow(x/2, v);
+
+ a = log(x / 2);
+ sigma = -a * v;
+ d = abs(sigma) < tools::epsilon<T>() ?
+ T(1) : sinh(sigma) / sigma;
+ e = abs(v) < tools::epsilon<T>() ? T(v*pi<T>()*pi<T>() / 2)
+ : T(2 * spv2 * spv2 / v);
+
+ T g1 = (v == 0) ? T(-euler<T>()) : T((gp - gm) / ((1 + gp) * (1 + gm) * 2 * v));
+ T g2 = (2 + gp + gm) / ((1 + gp) * (1 + gm) * 2);
+ T vspv = (fabs(v) < tools::epsilon<T>()) ? T(1/constants::pi<T>()) : T(v / spv);
+ f = (g1 * cosh(sigma) - g2 * a * d) * 2 * vspv;
+
+ p = vspv / (xp * (1 + gm));
+ q = vspv * xp / (1 + gp);
+
+ g = f + e * q;
+ h = p;
+ coef = 1;
+ sum = coef * g;
+ sum1 = coef * h;
+
+ T v2 = v * v;
+ T coef_mult = -x * x / 4;
+
+ // series summation
+ tolerance = policies::get_epsilon<T, Policy>();
+ for (k = 1; k < policies::get_max_series_iterations<Policy>(); k++)
+ {
+ f = (k * f + p + q) / (k*k - v2);
+ p /= k - v;
+ q /= k + v;
+ g = f + e * q;
+ h = p - k * g;
+ coef *= coef_mult / k;
+ sum += coef * g;
+ sum1 += coef * h;
+ if (abs(coef * g) < abs(sum) * tolerance)
+ {
+ break;
+ }
+ }
+ policies::check_series_iterations<T>("boost::math::bessel_jy<%1%>(%1%,%1%) in temme_jy", k, pol);
+ *Y = -sum;
+ *Y1 = -2 * sum1 / x;
+
+ return 0;
+ }
+
+ // Evaluate continued fraction fv = J_(v+1) / J_v, see
+ // Abramowitz and Stegun, Handbook of Mathematical Functions, 1972, 9.1.73
+ template <typename T, typename Policy>
+ int CF1_jy(T v, T x, T* fv, int* sign, const Policy& pol)
+ {
+ T C, D, f, a, b, delta, tiny, tolerance;
+ unsigned long k;
+ int s = 1;
+
+ BOOST_MATH_STD_USING
+
+ // |x| <= |v|, CF1_jy converges rapidly
+ // |x| > |v|, CF1_jy needs O(|x|) iterations to converge
+
+ // modified Lentz's method, see
+ // Lentz, Applied Optics, vol 15, 668 (1976)
+ tolerance = 2 * policies::get_epsilon<T, Policy>();;
+ tiny = sqrt(tools::min_value<T>());
+ C = f = tiny; // b0 = 0, replace with tiny
+ D = 0;
+ for (k = 1; k < policies::get_max_series_iterations<Policy>() * 100; k++)
+ {
+ a = -1;
+ b = 2 * (v + k) / x;
+ C = b + a / C;
+ D = b + a * D;
+ if (C == 0) { C = tiny; }
+ if (D == 0) { D = tiny; }
+ D = 1 / D;
+ delta = C * D;
+ f *= delta;
+ if (D < 0) { s = -s; }
+ if (abs(delta - 1) < tolerance)
+ { break; }
+ }
+ policies::check_series_iterations<T>("boost::math::bessel_jy<%1%>(%1%,%1%) in CF1_jy", k / 100, pol);
+ *fv = -f;
+ *sign = s; // sign of denominator
+
+ return 0;
+ }
+ //
+ // This algorithm was originally written by Xiaogang Zhang
+ // using std::complex to perform the complex arithmetic.
+ // However, that turns out to 10x or more slower than using
+ // all real-valued arithmetic, so it's been rewritten using
+ // real values only.
+ //
+ template <typename T, typename Policy>
+ int CF2_jy(T v, T x, T* p, T* q, const Policy& pol)
+ {
+ BOOST_MATH_STD_USING
+
+ T Cr, Ci, Dr, Di, fr, fi, a, br, bi, delta_r, delta_i, temp;
+ T tiny;
+ unsigned long k;
+
+ // |x| >= |v|, CF2_jy converges rapidly
+ // |x| -> 0, CF2_jy fails to converge
+ BOOST_ASSERT(fabs(x) > 1);
+
+ // modified Lentz's method, complex numbers involved, see
+ // Lentz, Applied Optics, vol 15, 668 (1976)
+ T tolerance = 2 * policies::get_epsilon<T, Policy>();
+ tiny = sqrt(tools::min_value<T>());
+ Cr = fr = -0.5f / x;
+ Ci = fi = 1;
+ //Dr = Di = 0;
+ T v2 = v * v;
+ a = (0.25f - v2) / x; // Note complex this one time only!
+ br = 2 * x;
+ bi = 2;
+ temp = Cr * Cr + 1;
+ Ci = bi + a * Cr / temp;
+ Cr = br + a / temp;
+ Dr = br;
+ Di = bi;
+ if (fabs(Cr) + fabs(Ci) < tiny) { Cr = tiny; }
+ if (fabs(Dr) + fabs(Di) < tiny) { Dr = tiny; }
+ temp = Dr * Dr + Di * Di;
+ Dr = Dr / temp;
+ Di = -Di / temp;
+ delta_r = Cr * Dr - Ci * Di;
+ delta_i = Ci * Dr + Cr * Di;
+ temp = fr;
+ fr = temp * delta_r - fi * delta_i;
+ fi = temp * delta_i + fi * delta_r;
+ for (k = 2; k < policies::get_max_series_iterations<Policy>(); k++)
+ {
+ a = k - 0.5f;
+ a *= a;
+ a -= v2;
+ bi += 2;
+ temp = Cr * Cr + Ci * Ci;
+ Cr = br + a * Cr / temp;
+ Ci = bi - a * Ci / temp;
+ Dr = br + a * Dr;
+ Di = bi + a * Di;
+ if (fabs(Cr) + fabs(Ci) < tiny) { Cr = tiny; }
+ if (fabs(Dr) + fabs(Di) < tiny) { Dr = tiny; }
+ temp = Dr * Dr + Di * Di;
+ Dr = Dr / temp;
+ Di = -Di / temp;
+ delta_r = Cr * Dr - Ci * Di;
+ delta_i = Ci * Dr + Cr * Di;
+ temp = fr;
+ fr = temp * delta_r - fi * delta_i;
+ fi = temp * delta_i + fi * delta_r;
+ if (fabs(delta_r - 1) + fabs(delta_i) < tolerance)
+ break;
+ }
+ policies::check_series_iterations<T>("boost::math::bessel_jy<%1%>(%1%,%1%) in CF2_jy", k, pol);
+ *p = fr;
+ *q = fi;
+
+ return 0;
+ }
+
+ static const int need_j = 1;
+ static const int need_y = 2;
+
+ // Compute J(v, x) and Y(v, x) simultaneously by Steed's method, see
+ // Barnett et al, Computer Physics Communications, vol 8, 377 (1974)
+ template <typename T, typename Policy>
+ int bessel_jy(T v, T x, T* J, T* Y, int kind, const Policy& pol)
+ {
+ BOOST_ASSERT(x >= 0);
+
+ T u, Jv, Ju, Yv, Yv1, Yu, Yu1(0), fv, fu;
+ T W, p, q, gamma, current, prev, next;
+ bool reflect = false;
+ unsigned n, k;
+ int s;
+ int org_kind = kind;
+ T cp = 0;
+ T sp = 0;
+
+ static const char* function = "boost::math::bessel_jy<%1%>(%1%,%1%)";
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+ if (v < 0)
+ {
+ reflect = true;
+ v = -v; // v is non-negative from here
+ }
+ if(v > static_cast<T>((std::numeric_limits<int>::max)()))
+ policies::raise_evaluation_error<T>(function, "Order of Bessel function is too large to evaluate: got %1%", v, pol);
+ n = iround(v, pol);
+ u = v - n; // -1/2 <= u < 1/2
+
+ if(reflect)
+ {
+ T z = (u + n % 2);
+ cp = boost::math::cos_pi(z, pol);
+ sp = boost::math::sin_pi(z, pol);
+ if(u != 0)
+ kind = need_j|need_y; // need both for reflection formula
+ }
+
+ if(x == 0)
+ {
+ if(v == 0)
+ *J = 1;
+ else if((u == 0) || !reflect)
+ *J = 0;
+ else if(kind & need_j)
+ *J = policies::raise_domain_error<T>(function, "Value of Bessel J_v(x) is complex-infinity at %1%", x, pol); // complex infinity
+ else
+ *J = std::numeric_limits<T>::quiet_NaN(); // any value will do, not using J.
+
+ if((kind & need_y) == 0)
+ *Y = std::numeric_limits<T>::quiet_NaN(); // any value will do, not using Y.
+ else if(v == 0)
+ *Y = -policies::raise_overflow_error<T>(function, 0, pol);
+ else
+ *Y = policies::raise_domain_error<T>(function, "Value of Bessel Y_v(x) is complex-infinity at %1%", x, pol); // complex infinity
+ return 1;
+ }
+
+ // x is positive until reflection
+ W = T(2) / (x * pi<T>()); // Wronskian
+ T Yv_scale = 1;
+ if(((kind & need_y) == 0) && ((x < 1) || (v > x * x / 4) || (x < 5)))
+ {
+ //
+ // This series will actually converge rapidly for all small
+ // x - say up to x < 20 - but the first few terms are large
+ // and divergent which leads to large errors :-(
+ //
+ Jv = bessel_j_small_z_series(v, x, pol);
+ Yv = std::numeric_limits<T>::quiet_NaN();
+ }
+ else if((x < 1) && (u != 0) && (log(policies::get_epsilon<T, Policy>() / 2) > v * log((x/2) * (x/2) / v)))
+ {
+ // Evaluate using series representations.
+ // This is particularly important for x << v as in this
+ // area temme_jy may be slow to converge, if it converges at all.
+ // Requires x is not an integer.
+ if(kind&need_j)
+ Jv = bessel_j_small_z_series(v, x, pol);
+ else
+ Jv = std::numeric_limits<T>::quiet_NaN();
+ if((org_kind&need_y && (!reflect || (cp != 0)))
+ || (org_kind & need_j && (reflect && (sp != 0))))
+ {
+ // Only calculate if we need it, and if the reflection formula will actually use it:
+ Yv = bessel_y_small_z_series(v, x, &Yv_scale, pol);
+ }
+ else
+ Yv = std::numeric_limits<T>::quiet_NaN();
+ }
+ else if((u == 0) && (x < policies::get_epsilon<T, Policy>()))
+ {
+ // Truncated series evaluation for small x and v an integer,
+ // much quicker in this area than temme_jy below.
+ if(kind&need_j)
+ Jv = bessel_j_small_z_series(v, x, pol);
+ else
+ Jv = std::numeric_limits<T>::quiet_NaN();
+ if((org_kind&need_y && (!reflect || (cp != 0)))
+ || (org_kind & need_j && (reflect && (sp != 0))))
+ {
+ // Only calculate if we need it, and if the reflection formula will actually use it:
+ Yv = bessel_yn_small_z(n, x, &Yv_scale, pol);
+ }
+ else
+ Yv = std::numeric_limits<T>::quiet_NaN();
+ }
+ else if(asymptotic_bessel_large_x_limit(v, x))
+ {
+ if(kind&need_y)
+ {
+ Yv = asymptotic_bessel_y_large_x_2(v, x);
+ }
+ else
+ Yv = std::numeric_limits<T>::quiet_NaN(); // any value will do, we're not using it.
+ if(kind&need_j)
+ {
+ Jv = asymptotic_bessel_j_large_x_2(v, x);
+ }
+ else
+ Jv = std::numeric_limits<T>::quiet_NaN(); // any value will do, we're not using it.
+ }
+ else if((x > 8) && hankel_PQ(v, x, &p, &q, pol))
+ {
+ //
+ // Hankel approximation: note that this method works best when x
+ // is large, but in that case we end up calculating sines and cosines
+ // of large values, with horrendous resulting accuracy. It is fast though
+ // when it works....
+ //
+ // Normally we calculate sin/cos(chi) where:
+ //
+ // chi = x - fmod(T(v / 2 + 0.25f), T(2)) * boost::math::constants::pi<T>();
+ //
+ // But this introduces large errors, so use sin/cos addition formulae to
+ // improve accuracy:
+ //
+ T mod_v = fmod(T(v / 2 + 0.25f), T(2));
+ T sx = sin(x);
+ T cx = cos(x);
+ T sv = sin_pi(mod_v);
+ T cv = cos_pi(mod_v);
+
+ T sc = sx * cv - sv * cx; // == sin(chi);
+ T cc = cx * cv + sx * sv; // == cos(chi);
+ T chi = boost::math::constants::root_two<T>() / (boost::math::constants::root_pi<T>() * sqrt(x)); //sqrt(2 / (boost::math::constants::pi<T>() * x));
+ Yv = chi * (p * sc + q * cc);
+ Jv = chi * (p * cc - q * sc);
+ }
+ else if (x <= 2) // x in (0, 2]
+ {
+ if(temme_jy(u, x, &Yu, &Yu1, pol)) // Temme series
+ {
+ // domain error:
+ *J = *Y = Yu;
+ return 1;
+ }
+ prev = Yu;
+ current = Yu1;
+ T scale = 1;
+ policies::check_series_iterations<T>(function, n, pol);
+ for (k = 1; k <= n; k++) // forward recurrence for Y
+ {
+ T fact = 2 * (u + k) / x;
+ if((tools::max_value<T>() - fabs(prev)) / fact < fabs(current))
+ {
+ scale /= current;
+ prev /= current;
+ current = 1;
+ }
+ next = fact * current - prev;
+ prev = current;
+ current = next;
+ }
+ Yv = prev;
+ Yv1 = current;
+ if(kind&need_j)
+ {
+ CF1_jy(v, x, &fv, &s, pol); // continued fraction CF1_jy
+ Jv = scale * W / (Yv * fv - Yv1); // Wronskian relation
+ }
+ else
+ Jv = std::numeric_limits<T>::quiet_NaN(); // any value will do, we're not using it.
+ Yv_scale = scale;
+ }
+ else // x in (2, \infty)
+ {
+ // Get Y(u, x):
+
+ T ratio;
+ CF1_jy(v, x, &fv, &s, pol);
+ // tiny initial value to prevent overflow
+ T init = sqrt(tools::min_value<T>());
+ prev = fv * s * init;
+ current = s * init;
+ if(v < max_factorial<T>::value)
+ {
+ policies::check_series_iterations<T>(function, n, pol);
+ for (k = n; k > 0; k--) // backward recurrence for J
+ {
+ next = 2 * (u + k) * current / x - prev;
+ prev = current;
+ current = next;
+ }
+ ratio = (s * init) / current; // scaling ratio
+ // can also call CF1_jy() to get fu, not much difference in precision
+ fu = prev / current;
+ }
+ else
+ {
+ //
+ // When v is large we may get overflow in this calculation
+ // leading to NaN's and other nasty surprises:
+ //
+ policies::check_series_iterations<T>(function, n, pol);
+ bool over = false;
+ for (k = n; k > 0; k--) // backward recurrence for J
+ {
+ T t = 2 * (u + k) / x;
+ if((t > 1) && (tools::max_value<T>() / t < current))
+ {
+ over = true;
+ break;
+ }
+ next = t * current - prev;
+ prev = current;
+ current = next;
+ }
+ if(!over)
+ {
+ ratio = (s * init) / current; // scaling ratio
+ // can also call CF1_jy() to get fu, not much difference in precision
+ fu = prev / current;
+ }
+ else
+ {
+ ratio = 0;
+ fu = 1;
+ }
+ }
+ CF2_jy(u, x, &p, &q, pol); // continued fraction CF2_jy
+ T t = u / x - fu; // t = J'/J
+ gamma = (p - t) / q;
+ //
+ // We can't allow gamma to cancel out to zero competely as it messes up
+ // the subsequent logic. So pretend that one bit didn't cancel out
+ // and set to a suitably small value. The only test case we've been able to
+ // find for this, is when v = 8.5 and x = 4*PI.
+ //
+ if(gamma == 0)
+ {
+ gamma = u * tools::epsilon<T>() / x;
+ }
+ Ju = sign(current) * sqrt(W / (q + gamma * (p - t)));
+
+ Jv = Ju * ratio; // normalization
+
+ Yu = gamma * Ju;
+ Yu1 = Yu * (u/x - p - q/gamma);
+
+ if(kind&need_y)
+ {
+ // compute Y:
+ prev = Yu;
+ current = Yu1;
+ policies::check_series_iterations<T>(function, n, pol);
+ for (k = 1; k <= n; k++) // forward recurrence for Y
+ {
+ T fact = 2 * (u + k) / x;
+ if((tools::max_value<T>() - fabs(prev)) / fact < fabs(current))
+ {
+ prev /= current;
+ Yv_scale /= current;
+ current = 1;
+ }
+ next = fact * current - prev;
+ prev = current;
+ current = next;
+ }
+ Yv = prev;
+ }
+ else
+ Yv = std::numeric_limits<T>::quiet_NaN(); // any value will do, we're not using it.
+ }
+
+ if (reflect)
+ {
+ if((sp != 0) && (tools::max_value<T>() * fabs(Yv_scale) < fabs(sp * Yv)))
+ *J = org_kind & need_j ? T(-sign(sp) * sign(Yv) * sign(Yv_scale) * policies::raise_overflow_error<T>(function, 0, pol)) : T(0);
+ else
+ *J = cp * Jv - (sp == 0 ? T(0) : T((sp * Yv) / Yv_scale)); // reflection formula
+ if((cp != 0) && (tools::max_value<T>() * fabs(Yv_scale) < fabs(cp * Yv)))
+ *Y = org_kind & need_y ? T(-sign(cp) * sign(Yv) * sign(Yv_scale) * policies::raise_overflow_error<T>(function, 0, pol)) : T(0);
+ else
+ *Y = (sp != 0 ? sp * Jv : T(0)) + (cp == 0 ? T(0) : T((cp * Yv) / Yv_scale));
+ }
+ else
+ {
+ *J = Jv;
+ if(tools::max_value<T>() * fabs(Yv_scale) < fabs(Yv))
+ *Y = org_kind & need_y ? T(sign(Yv) * sign(Yv_scale) * policies::raise_overflow_error<T>(function, 0, pol)) : T(0);
+ else
+ *Y = Yv / Yv_scale;
+ }
+
+ return 0;
+ }
+
+ } // namespace detail
+
+}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_JY_HPP
+
--- /dev/null
+// Copyright (c) 2007 John Maddock
+// Use, modification and distribution are subject to 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)
+
+//
+// This is a partial header, do not include on it's own!!!
+//
+// Contains asymptotic expansions for Bessel J(v,x) and Y(v,x)
+// functions, as x -> INF.
+//
+#ifndef BOOST_MATH_SF_DETAIL_BESSEL_JY_ASYM_HPP
+#define BOOST_MATH_SF_DETAIL_BESSEL_JY_ASYM_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/factorials.hpp>
+
+namespace boost{ namespace math{ namespace detail{
+
+template <class T>
+inline T asymptotic_bessel_amplitude(T v, T x)
+{
+ // Calculate the amplitude of J(v, x) and Y(v, x) for large
+ // x: see A&S 9.2.28.
+ BOOST_MATH_STD_USING
+ T s = 1;
+ T mu = 4 * v * v;
+ T txq = 2 * x;
+ txq *= txq;
+
+ s += (mu - 1) / (2 * txq);
+ s += 3 * (mu - 1) * (mu - 9) / (txq * txq * 8);
+ s += 15 * (mu - 1) * (mu - 9) * (mu - 25) / (txq * txq * txq * 8 * 6);
+
+ return sqrt(s * 2 / (constants::pi<T>() * x));
+}
+
+template <class T>
+T asymptotic_bessel_phase_mx(T v, T x)
+{
+ //
+ // Calculate the phase of J(v, x) and Y(v, x) for large x.
+ // See A&S 9.2.29.
+ // Note that the result returned is the phase less (x - PI(v/2 + 1/4))
+ // which we'll factor in later when we calculate the sines/cosines of the result:
+ //
+ T mu = 4 * v * v;
+ T denom = 4 * x;
+ T denom_mult = denom * denom;
+
+ T s = 0;
+ s += (mu - 1) / (2 * denom);
+ denom *= denom_mult;
+ s += (mu - 1) * (mu - 25) / (6 * denom);
+ denom *= denom_mult;
+ s += (mu - 1) * (mu * mu - 114 * mu + 1073) / (5 * denom);
+ denom *= denom_mult;
+ s += (mu - 1) * (5 * mu * mu * mu - 1535 * mu * mu + 54703 * mu - 375733) / (14 * denom);
+ return s;
+}
+
+template <class T>
+inline T asymptotic_bessel_y_large_x_2(T v, T x)
+{
+ // See A&S 9.2.19.
+ BOOST_MATH_STD_USING
+ // Get the phase and amplitude:
+ T ampl = asymptotic_bessel_amplitude(v, x);
+ T phase = asymptotic_bessel_phase_mx(v, x);
+ BOOST_MATH_INSTRUMENT_VARIABLE(ampl);
+ BOOST_MATH_INSTRUMENT_VARIABLE(phase);
+ //
+ // Calculate the sine of the phase, using
+ // sine/cosine addition rules to factor in
+ // the x - PI(v/2 + 1/4) term not added to the
+ // phase when we calculated it.
+ //
+ T cx = cos(x);
+ T sx = sin(x);
+ T ci = cos_pi(v / 2 + 0.25f);
+ T si = sin_pi(v / 2 + 0.25f);
+ T sin_phase = sin(phase) * (cx * ci + sx * si) + cos(phase) * (sx * ci - cx * si);
+ BOOST_MATH_INSTRUMENT_CODE(sin(phase));
+ BOOST_MATH_INSTRUMENT_CODE(cos(x));
+ BOOST_MATH_INSTRUMENT_CODE(cos(phase));
+ BOOST_MATH_INSTRUMENT_CODE(sin(x));
+ return sin_phase * ampl;
+}
+
+template <class T>
+inline T asymptotic_bessel_j_large_x_2(T v, T x)
+{
+ // See A&S 9.2.19.
+ BOOST_MATH_STD_USING
+ // Get the phase and amplitude:
+ T ampl = asymptotic_bessel_amplitude(v, x);
+ T phase = asymptotic_bessel_phase_mx(v, x);
+ BOOST_MATH_INSTRUMENT_VARIABLE(ampl);
+ BOOST_MATH_INSTRUMENT_VARIABLE(phase);
+ //
+ // Calculate the sine of the phase, using
+ // sine/cosine addition rules to factor in
+ // the x - PI(v/2 + 1/4) term not added to the
+ // phase when we calculated it.
+ //
+ BOOST_MATH_INSTRUMENT_CODE(cos(phase));
+ BOOST_MATH_INSTRUMENT_CODE(cos(x));
+ BOOST_MATH_INSTRUMENT_CODE(sin(phase));
+ BOOST_MATH_INSTRUMENT_CODE(sin(x));
+ T cx = cos(x);
+ T sx = sin(x);
+ T ci = cos_pi(v / 2 + 0.25f);
+ T si = sin_pi(v / 2 + 0.25f);
+ T sin_phase = cos(phase) * (cx * ci + sx * si) - sin(phase) * (sx * ci - cx * si);
+ BOOST_MATH_INSTRUMENT_VARIABLE(sin_phase);
+ return sin_phase * ampl;
+}
+
+template <class T>
+inline bool asymptotic_bessel_large_x_limit(const T& v, const T& x)
+{
+ BOOST_MATH_STD_USING
+ //
+ // Determines if x is large enough compared to v to take the asymptotic
+ // forms above. From A&S 9.2.28 we require:
+ // v < x * eps^1/8
+ // and from A&S 9.2.29 we require:
+ // v^12/10 < 1.5 * x * eps^1/10
+ // using the former seems to work OK in practice with broadly similar
+ // error rates either side of the divide for v < 10000.
+ // At double precision eps^1/8 ~= 0.01.
+ //
+ return (std::max)(T(fabs(v)), T(1)) < x * sqrt(tools::forth_root_epsilon<T>());
+}
+
+template <class T, class Policy>
+void temme_asyptotic_y_small_x(T v, T x, T* Y, T* Y1, const Policy& pol)
+{
+ T c = 1;
+ T p = (v / boost::math::sin_pi(v, pol)) * pow(x / 2, -v) / boost::math::tgamma(1 - v, pol);
+ T q = (v / boost::math::sin_pi(v, pol)) * pow(x / 2, v) / boost::math::tgamma(1 + v, pol);
+ T f = (p - q) / v;
+ T g_prefix = boost::math::sin_pi(v / 2, pol);
+ g_prefix *= g_prefix * 2 / v;
+ T g = f + g_prefix * q;
+ T h = p;
+ T c_mult = -x * x / 4;
+
+ T y(c * g), y1(c * h);
+
+ for(int k = 1; k < policies::get_max_series_iterations<Policy>(); ++k)
+ {
+ f = (k * f + p + q) / (k*k - v*v);
+ p /= k - v;
+ q /= k + v;
+ c *= c_mult / k;
+ T c1 = pow(-x * x / 4, k) / factorial<T>(k, pol);
+ g = f + g_prefix * q;
+ h = -k * g + p;
+ y += c * g;
+ y1 += c * h;
+ if(c * g / tools::epsilon<T>() < y)
+ break;
+ }
+
+ *Y = -y;
+ *Y1 = (-2 / x) * y1;
+}
+
+template <class T, class Policy>
+T asymptotic_bessel_i_large_x(T v, T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names
+ T s = 1;
+ T mu = 4 * v * v;
+ T ex = 8 * x;
+ T num = mu - 1;
+ T denom = ex;
+
+ s -= num / denom;
+
+ num *= mu - 9;
+ denom *= ex * 2;
+ s += num / denom;
+
+ num *= mu - 25;
+ denom *= ex * 3;
+ s -= num / denom;
+
+ // Try and avoid overflow to the last minute:
+ T e = exp(x/2);
+
+ s = e * (e * s / sqrt(2 * x * constants::pi<T>()));
+
+ return (boost::math::isfinite)(s) ?
+ s : policies::raise_overflow_error<T>("boost::math::asymptotic_bessel_i_large_x<%1%>(%1%,%1%)", 0, pol);
+}
+
+}}} // namespaces
+
+#endif
+
--- /dev/null
+// Copyright (c) 2011 John Maddock
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_JN_SERIES_HPP
+#define BOOST_MATH_BESSEL_JN_SERIES_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+namespace boost { namespace math { namespace detail{
+
+template <class T, class Policy>
+struct bessel_j_small_z_series_term
+{
+ typedef T result_type;
+
+ bessel_j_small_z_series_term(T v_, T x)
+ : N(0), v(v_)
+ {
+ BOOST_MATH_STD_USING
+ mult = x / 2;
+ mult *= -mult;
+ term = 1;
+ }
+ T operator()()
+ {
+ T r = term;
+ ++N;
+ term *= mult / (N * (N + v));
+ return r;
+ }
+private:
+ unsigned N;
+ T v;
+ T mult;
+ T term;
+};
+//
+// Series evaluation for BesselJ(v, z) as z -> 0.
+// See http://functions.wolfram.com/Bessel-TypeFunctions/BesselJ/06/01/04/01/01/0003/
+// Converges rapidly for all z << v.
+//
+template <class T, class Policy>
+inline T bessel_j_small_z_series(T v, T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ T prefix;
+ if(v < max_factorial<T>::value)
+ {
+ prefix = pow(x / 2, v) / boost::math::tgamma(v+1, pol);
+ }
+ else
+ {
+ prefix = v * log(x / 2) - boost::math::lgamma(v+1, pol);
+ prefix = exp(prefix);
+ }
+ if(0 == prefix)
+ return prefix;
+
+ bessel_j_small_z_series_term<T, Policy> s(v, x);
+ boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+ T zero = 0;
+ T result = boost::math::tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter, zero);
+#else
+ T result = boost::math::tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter);
+#endif
+ policies::check_series_iterations<T>("boost::math::bessel_j_small_z_series<%1%>(%1%,%1%)", max_iter, pol);
+ return prefix * result;
+}
+
+template <class T, class Policy>
+struct bessel_y_small_z_series_term_a
+{
+ typedef T result_type;
+
+ bessel_y_small_z_series_term_a(T v_, T x)
+ : N(0), v(v_)
+ {
+ BOOST_MATH_STD_USING
+ mult = x / 2;
+ mult *= -mult;
+ term = 1;
+ }
+ T operator()()
+ {
+ BOOST_MATH_STD_USING
+ T r = term;
+ ++N;
+ term *= mult / (N * (N - v));
+ return r;
+ }
+private:
+ unsigned N;
+ T v;
+ T mult;
+ T term;
+};
+
+template <class T, class Policy>
+struct bessel_y_small_z_series_term_b
+{
+ typedef T result_type;
+
+ bessel_y_small_z_series_term_b(T v_, T x)
+ : N(0), v(v_)
+ {
+ BOOST_MATH_STD_USING
+ mult = x / 2;
+ mult *= -mult;
+ term = 1;
+ }
+ T operator()()
+ {
+ T r = term;
+ ++N;
+ term *= mult / (N * (N + v));
+ return r;
+ }
+private:
+ unsigned N;
+ T v;
+ T mult;
+ T term;
+};
+//
+// Series form for BesselY as z -> 0,
+// see: http://functions.wolfram.com/Bessel-TypeFunctions/BesselY/06/01/04/01/01/0003/
+// This series is only useful when the second term is small compared to the first
+// otherwise we get catestrophic cancellation errors.
+//
+// Approximating tgamma(v) by v^v, and assuming |tgamma(-z)| < eps we end up requiring:
+// eps/2 * v^v(x/2)^-v > (x/2)^v or log(eps/2) > v log((x/2)^2/v)
+//
+template <class T, class Policy>
+inline T bessel_y_small_z_series(T v, T x, T* pscale, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ static const char* function = "bessel_y_small_z_series<%1%>(%1%,%1%)";
+ T prefix;
+ T gam;
+ T p = log(x / 2);
+ T scale = 1;
+ bool need_logs = (v >= max_factorial<T>::value) || (tools::log_max_value<T>() / v < fabs(p));
+ if(!need_logs)
+ {
+ gam = boost::math::tgamma(v, pol);
+ p = pow(x / 2, v);
+ if(tools::max_value<T>() * p < gam)
+ {
+ scale /= gam;
+ gam = 1;
+ if(tools::max_value<T>() * p < gam)
+ {
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ }
+ prefix = -gam / (constants::pi<T>() * p);
+ }
+ else
+ {
+ gam = boost::math::lgamma(v, pol);
+ p = v * p;
+ prefix = gam - log(constants::pi<T>()) - p;
+ if(tools::log_max_value<T>() < prefix)
+ {
+ prefix -= log(tools::max_value<T>() / 4);
+ scale /= (tools::max_value<T>() / 4);
+ if(tools::log_max_value<T>() < prefix)
+ {
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ }
+ prefix = -exp(prefix);
+ }
+ bessel_y_small_z_series_term_a<T, Policy> s(v, x);
+ boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
+ *pscale = scale;
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+ T zero = 0;
+ T result = boost::math::tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter, zero);
+#else
+ T result = boost::math::tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter);
+#endif
+ policies::check_series_iterations<T>("boost::math::bessel_y_small_z_series<%1%>(%1%,%1%)", max_iter, pol);
+ result *= prefix;
+
+ if(!need_logs)
+ {
+ prefix = boost::math::tgamma(-v, pol) * boost::math::cos_pi(v) * p / constants::pi<T>();
+ }
+ else
+ {
+ int sgn;
+ prefix = boost::math::lgamma(-v, &sgn, pol) + p;
+ prefix = exp(prefix) * sgn / constants::pi<T>();
+ }
+ bessel_y_small_z_series_term_b<T, Policy> s2(v, x);
+ max_iter = policies::get_max_series_iterations<Policy>();
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+ T b = boost::math::tools::sum_series(s2, boost::math::policies::get_epsilon<T, Policy>(), max_iter, zero);
+#else
+ T b = boost::math::tools::sum_series(s2, boost::math::policies::get_epsilon<T, Policy>(), max_iter);
+#endif
+ result -= scale * prefix * b;
+ return result;
+}
+
+template <class T, class Policy>
+T bessel_yn_small_z(int n, T z, T* scale, const Policy& pol)
+{
+ //
+ // See http://functions.wolfram.com/Bessel-TypeFunctions/BesselY/06/01/04/01/02/
+ //
+ // Note that when called we assume that x < epsilon and n is a positive integer.
+ //
+ BOOST_MATH_STD_USING
+ BOOST_ASSERT(n >= 0);
+ BOOST_ASSERT((z < policies::get_epsilon<T, Policy>()));
+
+ if(n == 0)
+ {
+ return (2 / constants::pi<T>()) * (log(z / 2) + constants::euler<T>());
+ }
+ else if(n == 1)
+ {
+ return (z / constants::pi<T>()) * log(z / 2)
+ - 2 / (constants::pi<T>() * z)
+ - (z / (2 * constants::pi<T>())) * (1 - 2 * constants::euler<T>());
+ }
+ else if(n == 2)
+ {
+ return (z * z) / (4 * constants::pi<T>()) * log(z / 2)
+ - (4 / (constants::pi<T>() * z * z))
+ - ((z * z) / (8 * constants::pi<T>())) * (T(3)/2 - 2 * constants::euler<T>());
+ }
+ else
+ {
+ T p = pow(z / 2, n);
+ T result = -((boost::math::factorial<T>(n - 1) / constants::pi<T>()));
+ if(p * tools::max_value<T>() < result)
+ {
+ T div = tools::max_value<T>() / 8;
+ result /= div;
+ *scale /= div;
+ if(p * tools::max_value<T>() < result)
+ {
+ return -policies::raise_overflow_error<T>("bessel_yn_small_z<%1%>(%1%,%1%)", 0, pol);
+ }
+ }
+ return result / p;
+ }
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_JN_SERIES_HPP
+
--- /dev/null
+// Copyright (c) 2013 Christopher Kormanyos
+// Use, modification and distribution are subject to 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)
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+//
+// This header contains implementation details for estimating the zeros
+// of cylindrical Bessel and Neumann functions on the positive real axis.
+// Support is included for both positive as well as negative order.
+// Various methods are used to estimate the roots. These include
+// empirical curve fitting and McMahon's asymptotic approximation
+// for small order, uniform asymptotic expansion for large order,
+// and iteration and root interlacing for negative order.
+//
+#ifndef _BESSEL_JY_ZERO_2013_01_18_HPP_
+ #define _BESSEL_JY_ZERO_2013_01_18_HPP_
+
+ #include <algorithm>
+ #include <boost/math/constants/constants.hpp>
+ #include <boost/math/special_functions/math_fwd.hpp>
+ #include <boost/math/special_functions/cbrt.hpp>
+ #include <boost/math/special_functions/detail/airy_ai_bi_zero.hpp>
+
+ namespace boost { namespace math {
+ namespace detail
+ {
+ namespace bessel_zero
+ {
+ template<class T>
+ T equation_nist_10_21_19(const T& v, const T& a)
+ {
+ // Get the initial estimate of the m'th root of Jv or Yv.
+ // This subroutine is used for the order m with m > 1.
+ // The order m has been used to create the input parameter a.
+
+ // This is Eq. 10.21.19 in the NIST Handbook.
+ const T mu = (v * v) * 4U;
+ const T mu_minus_one = mu - T(1);
+ const T eight_a_inv = T(1) / (a * 8U);
+ const T eight_a_inv_squared = eight_a_inv * eight_a_inv;
+
+ const T term3 = ((mu_minus_one * 4U) * ((mu * 7U) - T(31U) )) / 3U;
+ const T term5 = ((mu_minus_one * 32U) * ((((mu * 83U) - T(982U) ) * mu) + T(3779U) )) / 15U;
+ const T term7 = ((mu_minus_one * 64U) * ((((((mu * 6949U) - T(153855UL)) * mu) + T(1585743UL)) * mu) - T(6277237UL))) / 105U;
+
+ return a + (((( - term7
+ * eight_a_inv_squared - term5)
+ * eight_a_inv_squared - term3)
+ * eight_a_inv_squared - mu_minus_one)
+ * eight_a_inv);
+ }
+
+ template<typename T>
+ class equation_as_9_3_39_and_its_derivative
+ {
+ public:
+ equation_as_9_3_39_and_its_derivative(const T& zt) : zeta(zt) { }
+
+ boost::math::tuple<T, T> operator()(const T& z) const
+ {
+ BOOST_MATH_STD_USING // ADL of std names, needed for acos, sqrt.
+
+ // Return the function of zeta that is implicitly defined
+ // in A&S Eq. 9.3.39 as a function of z. The function is
+ // returned along with its derivative with respect to z.
+
+ const T zsq_minus_one_sqrt = sqrt((z * z) - T(1));
+
+ const T the_function(
+ zsq_minus_one_sqrt
+ - ( acos(T(1) / z) + ((T(2) / 3U) * (zeta * sqrt(zeta)))));
+
+ const T its_derivative(zsq_minus_one_sqrt / z);
+
+ return boost::math::tuple<T, T>(the_function, its_derivative);
+ }
+
+ private:
+ const equation_as_9_3_39_and_its_derivative& operator=(const equation_as_9_3_39_and_its_derivative&);
+ const T zeta;
+ };
+
+ template<class T>
+ static T equation_as_9_5_26(const T& v, const T& ai_bi_root)
+ {
+ BOOST_MATH_STD_USING // ADL of std names, needed for log, sqrt.
+
+ // Obtain the estimate of the m'th zero of Jv or Yv.
+ // The order m has been used to create the input parameter ai_bi_root.
+ // Here, v is larger than about 2.2. The estimate is computed
+ // from Abramowitz and Stegun Eqs. 9.5.22 and 9.5.26, page 371.
+ //
+ // The inversion of z as a function of zeta is mentioned in the text
+ // following A&S Eq. 9.5.26. Here, we accomplish the inversion by
+ // performing a Taylor expansion of Eq. 9.3.39 for large z to order 2
+ // and solving the resulting quadratic equation, thereby taking
+ // the positive root of the quadratic.
+ // In other words: (2/3)(-zeta)^(3/2) approx = z + 1/(2z) - pi/2.
+ // This leads to: z^2 - [(2/3)(-zeta)^(3/2) + pi/2]z + 1/2 = 0.
+ //
+ // With this initial estimate, Newton-Raphson iteration is used
+ // to refine the value of the estimate of the root of z
+ // as a function of zeta.
+
+ const T v_pow_third(boost::math::cbrt(v));
+ const T v_pow_minus_two_thirds(T(1) / (v_pow_third * v_pow_third));
+
+ // Obtain zeta using the order v combined with the m'th root of
+ // an airy function, as shown in A&S Eq. 9.5.22.
+ const T zeta = v_pow_minus_two_thirds * (-ai_bi_root);
+
+ const T zeta_sqrt = sqrt(zeta);
+
+ // Set up a quadratic equation based on the Taylor series
+ // expansion mentioned above.
+ const T b = -((((zeta * zeta_sqrt) * 2U) / 3U) + boost::math::constants::half_pi<T>());
+
+ // Solve the quadratic equation, taking the positive root.
+ const T z_estimate = (-b + sqrt((b * b) - T(2))) / 2U;
+
+ // Establish the range, the digits, and the iteration limit
+ // for the upcoming root-finding.
+ const T range_zmin = (std::max<T>)(z_estimate - T(1), T(1));
+ const T range_zmax = z_estimate + T(1);
+
+ const int digits2_of_t = int(float(std::numeric_limits<T>::digits)
+ * ( log(float(std::numeric_limits<T>::radix))
+ / log(float(2))));
+
+ const int digits2_for_root = (std::min)(digits2_of_t, std::numeric_limits<double>::digits);
+
+ boost::uintmax_t iteration_count = boost::uintmax_t(std::numeric_limits<T>::digits10 * 2);
+
+ // Calculate the root of z as a function of zeta.
+ const T z = boost::math::tools::newton_raphson_iterate(
+ boost::math::detail::bessel_zero::equation_as_9_3_39_and_its_derivative<T>(zeta),
+ z_estimate,
+ range_zmin,
+ range_zmax,
+ digits2_for_root,
+ iteration_count);
+
+ static_cast<void>(iteration_count);
+
+ // Continue with the implementation of A&S Eq. 9.3.39.
+ const T zsq_minus_one = (z * z) - T(1);
+ const T zsq_minus_one_sqrt = sqrt(zsq_minus_one);
+
+ // This is A&S Eq. 9.3.42.
+ const T b0_term_5_24 = T(5) / ((zsq_minus_one * zsq_minus_one_sqrt) * 24U);
+ const T b0_term_1_8 = T(1) / ( zsq_minus_one_sqrt * 8U);
+ const T b0_term_5_48 = T(5) / ((zeta * zeta) * 48U);
+
+ const T b0 = -b0_term_5_48 + ((b0_term_5_24 + b0_term_1_8) / zeta_sqrt);
+
+ // This is the second line of A&S Eq. 9.5.26 for f_k with k = 1.
+ const T f1 = ((z * zeta_sqrt) * b0) / zsq_minus_one_sqrt;
+
+ // This is A&S Eq. 9.5.22 expanded to k = 1 (i.e., one term in the series).
+ return (v * z) + (f1 / v);
+ }
+
+ namespace cyl_bessel_j_zero_detail
+ {
+ template<class T>
+ T equation_nist_10_21_40_a(const T& v)
+ {
+ const T v_pow_third(boost::math::cbrt(v));
+ const T v_pow_minus_two_thirds(T(1) / (v_pow_third * v_pow_third));
+
+ return v * ((((( + T(0.043)
+ * v_pow_minus_two_thirds - T(0.0908))
+ * v_pow_minus_two_thirds - T(0.00397))
+ * v_pow_minus_two_thirds + T(1.033150))
+ * v_pow_minus_two_thirds + T(1.8557571))
+ * v_pow_minus_two_thirds + T(1));
+ }
+
+ template<class T, class Policy>
+ class function_object_jv
+ {
+ public:
+ function_object_jv(const T& v,
+ const Policy& pol) : my_v(v),
+ my_pol(pol) { }
+
+ T operator()(const T& x) const
+ {
+ return boost::math::cyl_bessel_j(my_v, x, my_pol);
+ }
+
+ private:
+ const T my_v;
+ const Policy& my_pol;
+ const function_object_jv& operator=(const function_object_jv&);
+ };
+
+ template<class T, class Policy>
+ class function_object_jv_and_jv_prime
+ {
+ public:
+ function_object_jv_and_jv_prime(const T& v,
+ const bool order_is_zero,
+ const Policy& pol) : my_v(v),
+ my_order_is_zero(order_is_zero),
+ my_pol(pol) { }
+
+ boost::math::tuple<T, T> operator()(const T& x) const
+ {
+ // Obtain Jv(x) and Jv'(x).
+ // Chris's original code called the Bessel function implementation layer direct,
+ // but that circumvented optimizations for integer-orders. Call the documented
+ // top level functions instead, and let them sort out which implementation to use.
+ T j_v;
+ T j_v_prime;
+
+ if(my_order_is_zero)
+ {
+ j_v = boost::math::cyl_bessel_j(0, x, my_pol);
+ j_v_prime = -boost::math::cyl_bessel_j(1, x, my_pol);
+ }
+ else
+ {
+ j_v = boost::math::cyl_bessel_j( my_v, x, my_pol);
+ const T j_v_m1 (boost::math::cyl_bessel_j(T(my_v - 1), x, my_pol));
+ j_v_prime = j_v_m1 - ((my_v * j_v) / x);
+ }
+
+ // Return a tuple containing both Jv(x) and Jv'(x).
+ return boost::math::make_tuple(j_v, j_v_prime);
+ }
+
+ private:
+ const T my_v;
+ const bool my_order_is_zero;
+ const Policy& my_pol;
+ const function_object_jv_and_jv_prime& operator=(const function_object_jv_and_jv_prime&);
+ };
+
+ template<class T> bool my_bisection_unreachable_tolerance(const T&, const T&) { return false; }
+
+ template<class T, class Policy>
+ T initial_guess(const T& v, const int m, const Policy& pol)
+ {
+ BOOST_MATH_STD_USING // ADL of std names, needed for floor.
+
+ // Compute an estimate of the m'th root of cyl_bessel_j.
+
+ T guess;
+
+ // There is special handling for negative order.
+ if(v < 0)
+ {
+ if((m == 1) && (v > -0.5F))
+ {
+ // For small, negative v, use the results of empirical curve fitting.
+ // Mathematica(R) session for the coefficients:
+ // Table[{n, BesselJZero[n, 1]}, {n, -(1/2), 0, 1/10}]
+ // N[%, 20]
+ // Fit[%, {n^0, n^1, n^2, n^3, n^4, n^5, n^6}, n]
+ guess = ((((( - T(0.2321156900729)
+ * v - T(0.1493247777488))
+ * v - T(0.15205419167239))
+ * v + T(0.07814930561249))
+ * v - T(0.17757573537688))
+ * v + T(1.542805677045663))
+ * v + T(2.40482555769577277);
+
+ return guess;
+ }
+
+ // Create the positive order and extract its positive floor integer part.
+ const T vv(-v);
+ const T vv_floor(floor(vv));
+
+ // The to-be-found root is bracketed by the roots of the
+ // Bessel function whose reflected, positive integer order
+ // is less than, but nearest to vv.
+
+ T root_hi = boost::math::detail::bessel_zero::cyl_bessel_j_zero_detail::initial_guess(vv_floor, m, pol);
+ T root_lo;
+
+ if(m == 1)
+ {
+ // The estimate of the first root for negative order is found using
+ // an adaptive range-searching algorithm.
+ root_lo = T(root_hi - 0.1F);
+
+ const bool hi_end_of_bracket_is_negative = (boost::math::cyl_bessel_j(v, root_hi, pol) < 0);
+
+ while((root_lo > boost::math::tools::epsilon<T>()))
+ {
+ const bool lo_end_of_bracket_is_negative = (boost::math::cyl_bessel_j(v, root_lo, pol) < 0);
+
+ if(hi_end_of_bracket_is_negative != lo_end_of_bracket_is_negative)
+ {
+ break;
+ }
+
+ root_hi = root_lo;
+
+ // Decrease the lower end of the bracket using an adaptive algorithm.
+ if(root_lo > 0.5F)
+ {
+ root_lo -= 0.5F;
+ }
+ else
+ {
+ root_lo *= 0.75F;
+ }
+ }
+ }
+ else
+ {
+ root_lo = boost::math::detail::bessel_zero::cyl_bessel_j_zero_detail::initial_guess(vv_floor, m - 1, pol);
+ }
+
+ // Perform several steps of bisection iteration to refine the guess.
+ boost::uintmax_t number_of_iterations(12U);
+
+ // Do the bisection iteration.
+ const boost::math::tuple<T, T> guess_pair =
+ boost::math::tools::bisect(
+ boost::math::detail::bessel_zero::cyl_bessel_j_zero_detail::function_object_jv<T, Policy>(v, pol),
+ root_lo,
+ root_hi,
+ boost::math::detail::bessel_zero::cyl_bessel_j_zero_detail::my_bisection_unreachable_tolerance<T>,
+ number_of_iterations);
+
+ return (boost::math::get<0>(guess_pair) + boost::math::get<1>(guess_pair)) / 2U;
+ }
+
+ if(m == 1U)
+ {
+ // Get the initial estimate of the first root.
+
+ if(v < 2.2F)
+ {
+ // For small v, use the results of empirical curve fitting.
+ // Mathematica(R) session for the coefficients:
+ // Table[{n, BesselJZero[n, 1]}, {n, 0, 22/10, 1/10}]
+ // N[%, 20]
+ // Fit[%, {n^0, n^1, n^2, n^3, n^4, n^5, n^6}, n]
+ guess = ((((( - T(0.0008342379046010)
+ * v + T(0.007590035637410))
+ * v - T(0.030640914772013))
+ * v + T(0.078232088020106))
+ * v - T(0.169668712590620))
+ * v + T(1.542187960073750))
+ * v + T(2.4048359915254634);
+ }
+ else
+ {
+ // For larger v, use the first line of Eqs. 10.21.40 in the NIST Handbook.
+ guess = boost::math::detail::bessel_zero::cyl_bessel_j_zero_detail::equation_nist_10_21_40_a(v);
+ }
+ }
+ else
+ {
+ if(v < 2.2F)
+ {
+ // Use Eq. 10.21.19 in the NIST Handbook.
+ const T a(((v + T(m * 2U)) - T(0.5)) * boost::math::constants::half_pi<T>());
+
+ guess = boost::math::detail::bessel_zero::equation_nist_10_21_19(v, a);
+ }
+ else
+ {
+ // Get an estimate of the m'th root of airy_ai.
+ const T airy_ai_root(boost::math::detail::airy_zero::airy_ai_zero_detail::initial_guess<T>(m));
+
+ // Use Eq. 9.5.26 in the A&S Handbook.
+ guess = boost::math::detail::bessel_zero::equation_as_9_5_26(v, airy_ai_root);
+ }
+ }
+
+ return guess;
+ }
+ } // namespace cyl_bessel_j_zero_detail
+
+ namespace cyl_neumann_zero_detail
+ {
+ template<class T>
+ T equation_nist_10_21_40_b(const T& v)
+ {
+ const T v_pow_third(boost::math::cbrt(v));
+ const T v_pow_minus_two_thirds(T(1) / (v_pow_third * v_pow_third));
+
+ return v * ((((( - T(0.001)
+ * v_pow_minus_two_thirds - T(0.0060))
+ * v_pow_minus_two_thirds + T(0.01198))
+ * v_pow_minus_two_thirds + T(0.260351))
+ * v_pow_minus_two_thirds + T(0.9315768))
+ * v_pow_minus_two_thirds + T(1));
+ }
+
+ template<class T, class Policy>
+ class function_object_yv
+ {
+ public:
+ function_object_yv(const T& v,
+ const Policy& pol) : my_v(v),
+ my_pol(pol) { }
+
+ T operator()(const T& x) const
+ {
+ return boost::math::cyl_neumann(my_v, x, my_pol);
+ }
+
+ private:
+ const T my_v;
+ const Policy& my_pol;
+ const function_object_yv& operator=(const function_object_yv&);
+ };
+
+ template<class T, class Policy>
+ class function_object_yv_and_yv_prime
+ {
+ public:
+ function_object_yv_and_yv_prime(const T& v,
+ const Policy& pol) : my_v(v),
+ my_pol(pol) { }
+
+ boost::math::tuple<T, T> operator()(const T& x) const
+ {
+ const T half_epsilon(boost::math::tools::epsilon<T>() / 2U);
+
+ const bool order_is_zero = ((my_v > -half_epsilon) && (my_v < +half_epsilon));
+
+ // Obtain Yv(x) and Yv'(x).
+ // Chris's original code called the Bessel function implementation layer direct,
+ // but that circumvented optimizations for integer-orders. Call the documented
+ // top level functions instead, and let them sort out which implementation to use.
+ T y_v;
+ T y_v_prime;
+
+ if(order_is_zero)
+ {
+ y_v = boost::math::cyl_neumann(0, x, my_pol);
+ y_v_prime = -boost::math::cyl_neumann(1, x, my_pol);
+ }
+ else
+ {
+ y_v = boost::math::cyl_neumann( my_v, x, my_pol);
+ const T y_v_m1 (boost::math::cyl_neumann(T(my_v - 1), x, my_pol));
+ y_v_prime = y_v_m1 - ((my_v * y_v) / x);
+ }
+
+ // Return a tuple containing both Yv(x) and Yv'(x).
+ return boost::math::make_tuple(y_v, y_v_prime);
+ }
+
+ private:
+ const T my_v;
+ const Policy& my_pol;
+ const function_object_yv_and_yv_prime& operator=(const function_object_yv_and_yv_prime&);
+ };
+
+ template<class T> bool my_bisection_unreachable_tolerance(const T&, const T&) { return false; }
+
+ template<class T, class Policy>
+ T initial_guess(const T& v, const int m, const Policy& pol)
+ {
+ BOOST_MATH_STD_USING // ADL of std names, needed for floor.
+
+ // Compute an estimate of the m'th root of cyl_neumann.
+
+ T guess;
+
+ // There is special handling for negative order.
+ if(v < 0)
+ {
+ // Create the positive order and extract its positive floor and ceiling integer parts.
+ const T vv(-v);
+ const T vv_floor(floor(vv));
+
+ // The to-be-found root is bracketed by the roots of the
+ // Bessel function whose reflected, positive integer order
+ // is less than, but nearest to vv.
+
+ // The special case of negative, half-integer order uses
+ // the relation between Yv and spherical Bessel functions
+ // in order to obtain the bracket for the root.
+ // In these special cases, cyl_neumann(-n/2, x) = sph_bessel_j(+n/2, x)
+ // for v = -n/2.
+
+ T root_hi;
+ T root_lo;
+
+ if(m == 1)
+ {
+ // The estimate of the first root for negative order is found using
+ // an adaptive range-searching algorithm.
+ // Take special precautions for the discontinuity at negative,
+ // half-integer orders and use different brackets above and below these.
+ if(T(vv - vv_floor) < 0.5F)
+ {
+ root_hi = boost::math::detail::bessel_zero::cyl_neumann_zero_detail::initial_guess(vv_floor, m, pol);
+ }
+ else
+ {
+ root_hi = boost::math::detail::bessel_zero::cyl_bessel_j_zero_detail::initial_guess(T(vv_floor + 0.5F), m, pol);
+ }
+
+ root_lo = T(root_hi - 0.1F);
+
+ const bool hi_end_of_bracket_is_negative = (boost::math::cyl_neumann(v, root_hi, pol) < 0);
+
+ while((root_lo > boost::math::tools::epsilon<T>()))
+ {
+ const bool lo_end_of_bracket_is_negative = (boost::math::cyl_neumann(v, root_lo, pol) < 0);
+
+ if(hi_end_of_bracket_is_negative != lo_end_of_bracket_is_negative)
+ {
+ break;
+ }
+
+ root_hi = root_lo;
+
+ // Decrease the lower end of the bracket using an adaptive algorithm.
+ if(root_lo > 0.5F)
+ {
+ root_lo -= 0.5F;
+ }
+ else
+ {
+ root_lo *= 0.75F;
+ }
+ }
+ }
+ else
+ {
+ if(T(vv - vv_floor) < 0.5F)
+ {
+ root_lo = boost::math::detail::bessel_zero::cyl_neumann_zero_detail::initial_guess(vv_floor, m - 1, pol);
+ root_hi = boost::math::detail::bessel_zero::cyl_neumann_zero_detail::initial_guess(vv_floor, m, pol);
+ root_lo += 0.01F;
+ root_hi += 0.01F;
+ }
+ else
+ {
+ root_lo = boost::math::detail::bessel_zero::cyl_bessel_j_zero_detail::initial_guess(T(vv_floor + 0.5F), m - 1, pol);
+ root_hi = boost::math::detail::bessel_zero::cyl_bessel_j_zero_detail::initial_guess(T(vv_floor + 0.5F), m, pol);
+ root_lo += 0.01F;
+ root_hi += 0.01F;
+ }
+ }
+
+ // Perform several steps of bisection iteration to refine the guess.
+ boost::uintmax_t number_of_iterations(12U);
+
+ // Do the bisection iteration.
+ const boost::math::tuple<T, T> guess_pair =
+ boost::math::tools::bisect(
+ boost::math::detail::bessel_zero::cyl_neumann_zero_detail::function_object_yv<T, Policy>(v, pol),
+ root_lo,
+ root_hi,
+ boost::math::detail::bessel_zero::cyl_neumann_zero_detail::my_bisection_unreachable_tolerance<T>,
+ number_of_iterations);
+
+ return (boost::math::get<0>(guess_pair) + boost::math::get<1>(guess_pair)) / 2U;
+ }
+
+ if(m == 1U)
+ {
+ // Get the initial estimate of the first root.
+
+ if(v < 2.2F)
+ {
+ // For small v, use the results of empirical curve fitting.
+ // Mathematica(R) session for the coefficients:
+ // Table[{n, BesselYZero[n, 1]}, {n, 0, 22/10, 1/10}]
+ // N[%, 20]
+ // Fit[%, {n^0, n^1, n^2, n^3, n^4, n^5, n^6}, n]
+ guess = ((((( - T(0.0025095909235652)
+ * v + T(0.021291887049053))
+ * v - T(0.076487785486526))
+ * v + T(0.159110268115362))
+ * v - T(0.241681668765196))
+ * v + T(1.4437846310885244))
+ * v + T(0.89362115190200490);
+ }
+ else
+ {
+ // For larger v, use the second line of Eqs. 10.21.40 in the NIST Handbook.
+ guess = boost::math::detail::bessel_zero::cyl_neumann_zero_detail::equation_nist_10_21_40_b(v);
+ }
+ }
+ else
+ {
+ if(v < 2.2F)
+ {
+ // Use Eq. 10.21.19 in the NIST Handbook.
+ const T a(((v + T(m * 2U)) - T(1.5)) * boost::math::constants::half_pi<T>());
+
+ guess = boost::math::detail::bessel_zero::equation_nist_10_21_19(v, a);
+ }
+ else
+ {
+ // Get an estimate of the m'th root of airy_bi.
+ const T airy_bi_root(boost::math::detail::airy_zero::airy_bi_zero_detail::initial_guess<T>(m));
+
+ // Use Eq. 9.5.26 in the A&S Handbook.
+ guess = boost::math::detail::bessel_zero::equation_as_9_5_26(v, airy_bi_root);
+ }
+ }
+
+ return guess;
+ }
+ } // namespace cyl_neumann_zero_detail
+ } // namespace bessel_zero
+ } } } // namespace boost::math::detail
+
+#endif // _BESSEL_JY_ZERO_2013_01_18_HPP_
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_K0_HPP
+#define BOOST_MATH_BESSEL_K0_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/big_constant.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/assert.hpp>
+
+// Modified Bessel function of the second kind of order zero
+// minimax rational approximations on intervals, see
+// Russon and Blair, Chalk River Report AECL-3461, 1969
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T bessel_k0(T x, const Policy&);
+
+template <class T, class Policy>
+struct bessel_k0_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init();
+ }
+ static void do_init()
+ {
+ bessel_k0(T(1), Policy());
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy>
+const typename bessel_k0_initializer<T, Policy>::init bessel_k0_initializer<T, Policy>::initializer;
+
+template <typename T, typename Policy>
+T bessel_k0(T x, const Policy& pol)
+{
+ BOOST_MATH_INSTRUMENT_CODE(x);
+
+ bessel_k0_initializer<T, Policy>::force_instantiate();
+
+ static const T P1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.4708152720399552679e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.9169059852270512312e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.6850901201934832188e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1999463724910714109e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.3166052564989571850e-01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.8599221412826100000e-04))
+ };
+ static const T Q1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.1312714303849120380e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.4994418972832303646e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ static const T P2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.6128136304458193998e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.7333769444840079748e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.7984434409411765813e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.9501657892958843865e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.6414452837299064100e+00))
+ };
+ static const T Q2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.6128136304458193998e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.9865713163054025489e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.5064972445877992730e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ static const T P3[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1600249425076035558e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.3444738764199315021e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.8321525870183537725e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.1557062783764037541e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.5097646353289914539e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.7398867902565686251e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0577068948034021957e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.1075408980684392399e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.6832589957340267940e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1394980557384778174e+02))
+ };
+ static const T Q3[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.2556599177304839811e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.8821890840982713696e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.4847228371802360957e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.8824616785857027752e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.2689839587977598727e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.5144644673520157801e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.7418829762268075784e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.1474655750295278825e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.4329628889746408858e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.0013443064949242491e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ T value, factor, r, r1, r2;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ static const char* function = "boost::math::bessel_k0<%1%>(%1%,%1%)";
+
+ if (x < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Got x = %1%, but argument x must be non-negative, complex number result not supported", x, pol);
+ }
+ if (x == 0)
+ {
+ return policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ if (x <= 1) // x in (0, 1]
+ {
+ T y = x * x;
+ r1 = evaluate_polynomial(P1, y) / evaluate_polynomial(Q1, y);
+ r2 = evaluate_polynomial(P2, y) / evaluate_polynomial(Q2, y);
+ factor = log(x);
+ value = r1 - factor * r2;
+ }
+ else // x in (1, \infty)
+ {
+ T y = 1 / x;
+ r = evaluate_polynomial(P3, y) / evaluate_polynomial(Q3, y);
+ factor = exp(-x) / sqrt(x);
+ value = factor * r;
+ BOOST_MATH_INSTRUMENT_CODE("y = " << y);
+ BOOST_MATH_INSTRUMENT_CODE("r = " << r);
+ BOOST_MATH_INSTRUMENT_CODE("factor = " << factor);
+ BOOST_MATH_INSTRUMENT_CODE("value = " << value);
+ }
+
+ return value;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_K0_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_K1_HPP
+#define BOOST_MATH_BESSEL_K1_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/big_constant.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/assert.hpp>
+
+// Modified Bessel function of the second kind of order one
+// minimax rational approximations on intervals, see
+// Russon and Blair, Chalk River Report AECL-3461, 1969
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T bessel_k1(T x, const Policy&);
+
+template <class T, class Policy>
+struct bessel_k1_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init();
+ }
+ static void do_init()
+ {
+ bessel_k1(T(1), Policy());
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy>
+const typename bessel_k1_initializer<T, Policy>::init bessel_k1_initializer<T, Policy>::initializer;
+
+template <typename T, typename Policy>
+T bessel_k1(T x, const Policy& pol)
+{
+ bessel_k1_initializer<T, Policy>::force_instantiate();
+
+ static const T P1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.2149374878243304548e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.1938920065420586101e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.7733324035147015630e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.1885382604084798576e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.9991373567429309922e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.8127070456878442310e-01))
+ };
+ static const T Q1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.2149374878243304548e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.7264298672067697862e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.8143915754538725829e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ static const T P2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.3531161492785421328e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.4758069205414222471e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -4.5051623763436087023e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.3103913335180275253e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.2795590826955002390e-01))
+ };
+ static const T Q2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.7062322985570842656e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.3117653211351080007e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.0507151578787595807e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ static const T P3[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.2196792496874548962e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.4137176114230414036e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.4122953486801312910e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.3319486433183221990e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.8590657697910288226e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.4540675585544584407e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.3123742209168871550e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.1094256146537402173e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.3182609918569941308e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.5584584631176030810e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.4257745859173138767e-02))
+ };
+ static const T Q3[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.7710478032601086579e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.4552228452758912848e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.5951223655579051357e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.6929165726802648634e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.9448440788918006154e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.1181000487171943810e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.2082692316002348638e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.3031020088765390854e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.6001069306861518855e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0))
+ };
+ T value, factor, r, r1, r2;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ static const char* function = "boost::math::bessel_k1<%1%>(%1%,%1%)";
+
+ if (x < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Got x = %1%, but argument x must be non-negative, complex number result not supported.", x, pol);
+ }
+ if (x == 0)
+ {
+ return policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ if (x <= 1) // x in (0, 1]
+ {
+ T y = x * x;
+ r1 = evaluate_polynomial(P1, y) / evaluate_polynomial(Q1, y);
+ r2 = evaluate_polynomial(P2, y) / evaluate_polynomial(Q2, y);
+ factor = log(x);
+ value = (r1 + factor * r2) / x;
+ }
+ else // x in (1, \infty)
+ {
+ T y = 1 / x;
+ r = evaluate_polynomial(P3, y) / evaluate_polynomial(Q3, y);
+ factor = exp(-x) / sqrt(x);
+ value = factor * r;
+ }
+
+ return value;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_K1_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_KN_HPP
+#define BOOST_MATH_BESSEL_KN_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/detail/bessel_k0.hpp>
+#include <boost/math/special_functions/detail/bessel_k1.hpp>
+#include <boost/math/policies/error_handling.hpp>
+
+// Modified Bessel function of the second kind of integer order
+// K_n(z) is the dominant solution, forward recurrence always OK (though unstable)
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T bessel_kn(int n, T x, const Policy& pol)
+{
+ T value, current, prev;
+
+ using namespace boost::math::tools;
+
+ static const char* function = "boost::math::bessel_kn<%1%>(%1%,%1%)";
+
+ if (x < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Got x = %1%, but argument x must be non-negative, complex number result not supported.", x, pol);
+ }
+ if (x == 0)
+ {
+ return policies::raise_overflow_error<T>(function, 0, pol);
+ }
+
+ if (n < 0)
+ {
+ n = -n; // K_{-n}(z) = K_n(z)
+ }
+ if (n == 0)
+ {
+ value = bessel_k0(x, pol);
+ }
+ else if (n == 1)
+ {
+ value = bessel_k1(x, pol);
+ }
+ else
+ {
+ prev = bessel_k0(x, pol);
+ current = bessel_k1(x, pol);
+ int k = 1;
+ BOOST_ASSERT(k < n);
+ T scale = 1;
+ do
+ {
+ T fact = 2 * k / x;
+ if((tools::max_value<T>() - fabs(prev)) / fact < fabs(current))
+ {
+ scale /= current;
+ prev /= current;
+ current = 1;
+ }
+ value = fact * current + prev;
+ prev = current;
+ current = value;
+ ++k;
+ }
+ while(k < n);
+ if(tools::max_value<T>() * scale < fabs(value))
+ return sign(scale) * sign(value) * policies::raise_overflow_error<T>(function, 0, pol);
+ value /= scale;
+ }
+ return value;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_KN_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_Y0_HPP
+#define BOOST_MATH_BESSEL_Y0_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/detail/bessel_j0.hpp>
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/big_constant.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/assert.hpp>
+
+// Bessel function of the second kind of order zero
+// x <= 8, minimax rational approximations on root-bracketing intervals
+// x > 8, Hankel asymptotic expansion in Hart, Computer Approximations, 1968
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T bessel_y0(T x, const Policy&);
+
+template <class T, class Policy>
+struct bessel_y0_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init();
+ }
+ static void do_init()
+ {
+ bessel_y0(T(1), Policy());
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy>
+const typename bessel_y0_initializer<T, Policy>::init bessel_y0_initializer<T, Policy>::initializer;
+
+template <typename T, typename Policy>
+T bessel_y0(T x, const Policy& pol)
+{
+ bessel_y0_initializer<T, Policy>::force_instantiate();
+
+ static const T P1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0723538782003176831e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -8.3716255451260504098e+09)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.0422274357376619816e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.1287548474401797963e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0102532948020907590e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.8402381979244993524e+01)),
+ };
+ static const T Q1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.8873865738997033405e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.1617187777290363573e+09)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.5662956624278251596e+07)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.3889393209447253406e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.6475986689240190091e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T P2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.2213976967566192242e+13)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.5107435206722644429e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.3600098638603061642e+10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.9590439394619619534e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.6905288611678631510e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.4566865832663635920e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.7427031242901594547e+01)),
+ };
+ static const T Q2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.3386146580707264428e+14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.4266824419412347550e+12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.4015103849971240096e+10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.3960202770986831075e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.0669982352539552018e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.3030857612070288823e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T P3[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -8.0728726905150210443e+15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.7016641869173237784e+14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.2829912364088687306e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.9363051266772083678e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.1958827170518100757e+09)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.0085539923498211426e+07)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.1363534169313901632e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.7439661319197499338e+01)),
+ };
+ static const T Q3[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.4563724628846457519e+17)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.9272425569640309819e+15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.2598377924042897629e+13)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.6926121104209825246e+10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.4727219475672302327e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.3924739209768057030e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.7903362168128450017e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T PC[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.2779090197304684302e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.1345386639580765797e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.1170523380864944322e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.4806486443249270347e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.5376201909008354296e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.8961548424210455236e-01)),
+ };
+ static const T QC[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.2779090197304684318e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.1370412495510416640e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.1215350561880115730e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.5028735138235608207e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.5711159858080893649e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T PS[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -8.9226600200800094098e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.8591953644342993800e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.1183429920482737611e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.2300261666214198472e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.2441026745835638459e+00)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -8.8033303048680751817e-03)),
+ };
+ static const T QS[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.7105024128512061905e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1951131543434613647e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.2642780169211018836e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.4887231232283756582e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.0593769594993125859e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T x1 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.9357696627916752158e-01)),
+ x2 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.9576784193148578684e+00)),
+ x3 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.0860510603017726976e+00)),
+ x11 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.280e+02)),
+ x12 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.9519662791675215849e-03)),
+ x21 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0130e+03)),
+ x22 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.4716931485786837568e-04)),
+ x31 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.8140e+03)),
+ x32 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1356030177269762362e-04))
+ ;
+ T value, factor, r, rc, rs;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+ static const char* function = "boost::math::bessel_y0<%1%>(%1%,%1%)";
+
+ if (x < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Got x = %1% but x must be non-negative, complex result not supported.", x, pol);
+ }
+ if (x == 0)
+ {
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ if (x <= 3) // x in (0, 3]
+ {
+ T y = x * x;
+ T z = 2 * log(x/x1) * bessel_j0(x) / pi<T>();
+ r = evaluate_rational(P1, Q1, y);
+ factor = (x + x1) * ((x - x11/256) - x12);
+ value = z + factor * r;
+ }
+ else if (x <= 5.5f) // x in (3, 5.5]
+ {
+ T y = x * x;
+ T z = 2 * log(x/x2) * bessel_j0(x) / pi<T>();
+ r = evaluate_rational(P2, Q2, y);
+ factor = (x + x2) * ((x - x21/256) - x22);
+ value = z + factor * r;
+ }
+ else if (x <= 8) // x in (5.5, 8]
+ {
+ T y = x * x;
+ T z = 2 * log(x/x3) * bessel_j0(x) / pi<T>();
+ r = evaluate_rational(P3, Q3, y);
+ factor = (x + x3) * ((x - x31/256) - x32);
+ value = z + factor * r;
+ }
+ else // x in (8, \infty)
+ {
+ T y = 8 / x;
+ T y2 = y * y;
+ rc = evaluate_rational(PC, QC, y2);
+ rs = evaluate_rational(PS, QS, y2);
+ factor = constants::one_div_root_pi<T>() / sqrt(x);
+ //
+ // The following code is really just:
+ //
+ // T z = x - 0.25f * pi<T>();
+ // value = factor * (rc * sin(z) + y * rs * cos(z));
+ //
+ // But using the sin/cos addition formulae and constant values for
+ // sin/cos of PI/4 which then cancel part of the "factor" term as they're all
+ // 1 / sqrt(2):
+ //
+ T sx = sin(x);
+ T cx = cos(x);
+ value = factor * (rc * (sx - cx) + y * rs * (cx + sx));
+ }
+
+ return value;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_Y0_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_Y1_HPP
+#define BOOST_MATH_BESSEL_Y1_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/detail/bessel_j1.hpp>
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/big_constant.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/assert.hpp>
+
+// Bessel function of the second kind of order one
+// x <= 8, minimax rational approximations on root-bracketing intervals
+// x > 8, Hankel asymptotic expansion in Hart, Computer Approximations, 1968
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T bessel_y1(T x, const Policy&);
+
+template <class T, class Policy>
+struct bessel_y1_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init();
+ }
+ static void do_init()
+ {
+ bessel_y1(T(1), Policy());
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy>
+const typename bessel_y1_initializer<T, Policy>::init bessel_y1_initializer<T, Policy>::initializer;
+
+template <typename T, typename Policy>
+T bessel_y1(T x, const Policy& pol)
+{
+ bessel_y1_initializer<T, Policy>::force_instantiate();
+
+ static const T P1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.0535726612579544093e+13)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.4708611716525426053e+12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.7595974497819597599e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.2144548214502560419e+09)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.9157479997408395984e+07)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.2157953222280260820e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -3.1714424660046133456e+02)),
+ };
+ static const T Q1[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.0737873921079286084e+14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.1272286200406461981e+12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.7800352738690585613e+10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.2250435122182963220e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.8136470753052572164e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.2079908168393867438e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T P2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1514276357909013326e+19)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.6808094574724204577e+18)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.3638408497043134724e+16)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.0686275289804744814e+15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -5.9530713129741981618e+13)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.7453673962438488783e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.1957961912070617006e+09)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.9153806858264202986e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.2337180442012953128e+03)),
+ };
+ static const T Q2[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.3321844313316185697e+20)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.6968198822857178911e+18)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.0837179548112881950e+16)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.1187010065856971027e+14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.0221766852960403645e+11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.3550318087088919566e+08)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0453748201934079734e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.2855164849321609336e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T PC[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -4.4357578167941278571e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -9.9422465050776411957e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.6033732483649391093e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.5235293511811373833e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.0982405543459346727e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.6116166443246101165e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.0)),
+ };
+ static const T QC[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -4.4357578167941278568e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -9.9341243899345856590e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.5853394797230870728e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.5118095066341608816e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.0726385991103820119e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -1.4550094401904961825e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T PS[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.3220913409857223519e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.5145160675335701966e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6.6178836581270835179e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.8494262873223866797e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.7063754290207680021e+03)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.5265133846636032186e+01)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.0)),
+ };
+ static const T QS[] = {
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 7.0871281941028743574e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.8194580422439972989e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.4194606696037208929e+06)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.0029443582266975117e+05)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3.7890229745772202641e+04)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 8.6383677696049909675e+02)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.0)),
+ };
+ static const T x1 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.1971413260310170351e+00)),
+ x2 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.4296810407941351328e+00)),
+ x11 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5.620e+02)),
+ x12 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.8288260310170351490e-03)),
+ x21 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.3900e+03)),
+ x22 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -6.4592058648672279948e-06))
+ ;
+ T value, factor, r, rc, rs;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+ if (x <= 0)
+ {
+ return policies::raise_domain_error<T>("bost::math::bessel_y1<%1%>(%1%,%1%)",
+ "Got x == %1%, but x must be > 0, complex result not supported.", x, pol);
+ }
+ if (x <= 4) // x in (0, 4]
+ {
+ T y = x * x;
+ T z = 2 * log(x/x1) * bessel_j1(x) / pi<T>();
+ r = evaluate_rational(P1, Q1, y);
+ factor = (x + x1) * ((x - x11/256) - x12) / x;
+ value = z + factor * r;
+ }
+ else if (x <= 8) // x in (4, 8]
+ {
+ T y = x * x;
+ T z = 2 * log(x/x2) * bessel_j1(x) / pi<T>();
+ r = evaluate_rational(P2, Q2, y);
+ factor = (x + x2) * ((x - x21/256) - x22) / x;
+ value = z + factor * r;
+ }
+ else // x in (8, \infty)
+ {
+ T y = 8 / x;
+ T y2 = y * y;
+ rc = evaluate_rational(PC, QC, y2);
+ rs = evaluate_rational(PS, QS, y2);
+ factor = 1 / (sqrt(x) * root_pi<T>());
+ //
+ // This code is really just:
+ //
+ // T z = x - 0.75f * pi<T>();
+ // value = factor * (rc * sin(z) + y * rs * cos(z));
+ //
+ // But using the sin/cos addition rules, plus constants for sin/cos of 3PI/4
+ // which then cancel out with corresponding terms in "factor".
+ //
+ T sx = sin(x);
+ T cx = cos(x);
+ value = factor * (y * rs * (sx - cx) - rc * (sx + cx));
+ }
+
+ return value;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_Y1_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_BESSEL_YN_HPP
+#define BOOST_MATH_BESSEL_YN_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/detail/bessel_y0.hpp>
+#include <boost/math/special_functions/detail/bessel_y1.hpp>
+#include <boost/math/special_functions/detail/bessel_jy_series.hpp>
+#include <boost/math/policies/error_handling.hpp>
+
+// Bessel function of the second kind of integer order
+// Y_n(z) is the dominant solution, forward recurrence always OK (though unstable)
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T bessel_yn(int n, T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ T value, factor, current, prev;
+
+ using namespace boost::math::tools;
+
+ static const char* function = "boost::math::bessel_yn<%1%>(%1%,%1%)";
+
+ if ((x == 0) && (n == 0))
+ {
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ if (x <= 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Got x = %1%, but x must be > 0, complex result not supported.", x, pol);
+ }
+
+ //
+ // Reflection comes first:
+ //
+ if (n < 0)
+ {
+ factor = (n & 0x1) ? -1 : 1; // Y_{-n}(z) = (-1)^n Y_n(z)
+ n = -n;
+ }
+ else
+ {
+ factor = 1;
+ }
+
+ if(x < policies::get_epsilon<T, Policy>())
+ {
+ T scale = 1;
+ value = bessel_yn_small_z(n, x, &scale, pol);
+ if(tools::max_value<T>() * fabs(scale) < fabs(value))
+ return boost::math::sign(scale) * boost::math::sign(value) * policies::raise_overflow_error<T>(function, 0, pol);
+ value /= scale;
+ }
+ else if (n == 0)
+ {
+ value = bessel_y0(x, pol);
+ }
+ else if (n == 1)
+ {
+ value = factor * bessel_y1(x, pol);
+ }
+ else
+ {
+ prev = bessel_y0(x, pol);
+ current = bessel_y1(x, pol);
+ int k = 1;
+ BOOST_ASSERT(k < n);
+ policies::check_series_iterations<T>("boost::math::bessel_y_n<%1%>(%1%,%1%)", n, pol);
+ do
+ {
+ T fact = 2 * k / x;
+ if((fact > 1) && ((tools::max_value<T>() - fabs(prev)) / fact < fabs(current)))
+ {
+ prev /= current;
+ factor /= current;
+ current = 1;
+ }
+ value = fact * current - prev;
+ prev = current;
+ current = value;
+ ++k;
+ }
+ while(k < n);
+ if(fabs(tools::max_value<T>() * factor) < fabs(value))
+ return sign(value) * sign(value) * policies::raise_overflow_error<T>(function, 0, pol);
+ value /= factor;
+ }
+ return value;
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_BESSEL_YN_HPP
+
//
static const float Y = 0.0891314744949340820313f;
static const T P[] = {
- -0.000508781949658280665617L,
- -0.00836874819741736770379L,
- 0.0334806625409744615033L,
- -0.0126926147662974029034L,
- -0.0365637971411762664006L,
- 0.0219878681111168899165L,
- 0.00822687874676915743155L,
- -0.00538772965071242932965L
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000508781949658280665617),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00836874819741736770379),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0334806625409744615033),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0126926147662974029034),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0365637971411762664006),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0219878681111168899165),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00822687874676915743155),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00538772965071242932965)
};
static const T Q[] = {
- 1,
- -0.970005043303290640362L,
- -1.56574558234175846809L,
- 1.56221558398423026363L,
- 0.662328840472002992063L,
- -0.71228902341542847553L,
- -0.0527396382340099713954L,
- 0.0795283687341571680018L,
- -0.00233393759374190016776L,
- 0.000886216390456424707504L
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.970005043303290640362),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -1.56574558234175846809),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.56221558398423026363),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.662328840472002992063),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.71228902341542847553),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0527396382340099713954),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0795283687341571680018),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00233393759374190016776),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000886216390456424707504)
};
T g = p * (p + 10);
T r = tools::evaluate_polynomial(P, p) / tools::evaluate_polynomial(Q, p);
//
static const float Y = 2.249481201171875f;
static const T P[] = {
- -0.202433508355938759655L,
- 0.105264680699391713268L,
- 8.37050328343119927838L,
- 17.6447298408374015486L,
- -18.8510648058714251895L,
- -44.6382324441786960818L,
- 17.445385985570866523L,
- 21.1294655448340526258L,
- -3.67192254707729348546L
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.202433508355938759655),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.105264680699391713268),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 8.37050328343119927838),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 17.6447298408374015486),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -18.8510648058714251895),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -44.6382324441786960818),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 17.445385985570866523),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 21.1294655448340526258),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -3.67192254707729348546)
};
static const T Q[] = {
- 1L,
- 6.24264124854247537712L,
- 3.9713437953343869095L,
- -28.6608180499800029974L,
- -20.1432634680485188801L,
- 48.5609213108739935468L,
- 10.8268667355460159008L,
- -22.6436933413139721736L,
- 1.72114765761200282724L
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 6.24264124854247537712),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 3.9713437953343869095),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -28.6608180499800029974),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -20.1432634680485188801),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 48.5609213108739935468),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 10.8268667355460159008),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -22.6436933413139721736),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.72114765761200282724)
};
T g = sqrt(-2 * log(q));
T xs = q - 0.25;
// Max error found: 1.089051e-20
static const float Y = 0.807220458984375f;
static const T P[] = {
- -0.131102781679951906451L,
- -0.163794047193317060787L,
- 0.117030156341995252019L,
- 0.387079738972604337464L,
- 0.337785538912035898924L,
- 0.142869534408157156766L,
- 0.0290157910005329060432L,
- 0.00214558995388805277169L,
- -0.679465575181126350155e-6L,
- 0.285225331782217055858e-7L,
- -0.681149956853776992068e-9L
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.131102781679951906451),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.163794047193317060787),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.117030156341995252019),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.387079738972604337464),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.337785538912035898924),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.142869534408157156766),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0290157910005329060432),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00214558995388805277169),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.679465575181126350155e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.285225331782217055858e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.681149956853776992068e-9)
};
static const T Q[] = {
- 1,
- 3.46625407242567245975L,
- 5.38168345707006855425L,
- 4.77846592945843778382L,
- 2.59301921623620271374L,
- 0.848854343457902036425L,
- 0.152264338295331783612L,
- 0.01105924229346489121L
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 3.46625407242567245975),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 5.38168345707006855425),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 4.77846592945843778382),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 2.59301921623620271374),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.848854343457902036425),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.152264338295331783612),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.01105924229346489121)
};
T xs = x - 1.125;
T R = tools::evaluate_polynomial(P, xs) / tools::evaluate_polynomial(Q, xs);
// Max error found: 8.389174e-21
static const float Y = 0.93995571136474609375f;
static const T P[] = {
- -0.0350353787183177984712L,
- -0.00222426529213447927281L,
- 0.0185573306514231072324L,
- 0.00950804701325919603619L,
- 0.00187123492819559223345L,
- 0.000157544617424960554631L,
- 0.460469890584317994083e-5L,
- -0.230404776911882601748e-9L,
- 0.266339227425782031962e-11L
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0350353787183177984712),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00222426529213447927281),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0185573306514231072324),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00950804701325919603619),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00187123492819559223345),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000157544617424960554631),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.460469890584317994083e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.230404776911882601748e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.266339227425782031962e-11)
};
static const T Q[] = {
- 1L,
- 1.3653349817554063097L,
- 0.762059164553623404043L,
- 0.220091105764131249824L,
- 0.0341589143670947727934L,
- 0.00263861676657015992959L,
- 0.764675292302794483503e-4L
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.3653349817554063097),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.762059164553623404043),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.220091105764131249824),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0341589143670947727934),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00263861676657015992959),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.764675292302794483503e-4)
};
T xs = x - 3;
T R = tools::evaluate_polynomial(P, xs) / tools::evaluate_polynomial(Q, xs);
// Max error found: 1.481312e-19
static const float Y = 0.98362827301025390625f;
static const T P[] = {
- -0.0167431005076633737133L,
- -0.00112951438745580278863L,
- 0.00105628862152492910091L,
- 0.000209386317487588078668L,
- 0.149624783758342370182e-4L,
- 0.449696789927706453732e-6L,
- 0.462596163522878599135e-8L,
- -0.281128735628831791805e-13L,
- 0.99055709973310326855e-16L
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0167431005076633737133),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00112951438745580278863),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00105628862152492910091),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000209386317487588078668),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.149624783758342370182e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.449696789927706453732e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.462596163522878599135e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.281128735628831791805e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.99055709973310326855e-16)
};
static const T Q[] = {
- 1L,
- 0.591429344886417493481L,
- 0.138151865749083321638L,
- 0.0160746087093676504695L,
- 0.000964011807005165528527L,
- 0.275335474764726041141e-4L,
- 0.282243172016108031869e-6L
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.591429344886417493481),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.138151865749083321638),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0160746087093676504695),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000964011807005165528527),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.275335474764726041141e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.282243172016108031869e-6)
};
T xs = x - 6;
T R = tools::evaluate_polynomial(P, xs) / tools::evaluate_polynomial(Q, xs);
// Max error found: 5.697761e-20
static const float Y = 0.99714565277099609375f;
static const T P[] = {
- -0.0024978212791898131227L,
- -0.779190719229053954292e-5L,
- 0.254723037413027451751e-4L,
- 0.162397777342510920873e-5L,
- 0.396341011304801168516e-7L,
- 0.411632831190944208473e-9L,
- 0.145596286718675035587e-11L,
- -0.116765012397184275695e-17L
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0024978212791898131227),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.779190719229053954292e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.254723037413027451751e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.162397777342510920873e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.396341011304801168516e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.411632831190944208473e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.145596286718675035587e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.116765012397184275695e-17)
};
static const T Q[] = {
- 1L,
- 0.207123112214422517181L,
- 0.0169410838120975906478L,
- 0.000690538265622684595676L,
- 0.145007359818232637924e-4L,
- 0.144437756628144157666e-6L,
- 0.509761276599778486139e-9L
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.207123112214422517181),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0169410838120975906478),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000690538265622684595676),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.145007359818232637924e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.144437756628144157666e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.509761276599778486139e-9)
};
T xs = x - 18;
T R = tools::evaluate_polynomial(P, xs) / tools::evaluate_polynomial(Q, xs);
// Max error found: 1.279746e-20
static const float Y = 0.99941349029541015625f;
static const T P[] = {
- -0.000539042911019078575891L,
- -0.28398759004727721098e-6L,
- 0.899465114892291446442e-6L,
- 0.229345859265920864296e-7L,
- 0.225561444863500149219e-9L,
- 0.947846627503022684216e-12L,
- 0.135880130108924861008e-14L,
- -0.348890393399948882918e-21L
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000539042911019078575891),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.28398759004727721098e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.899465114892291446442e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.229345859265920864296e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.225561444863500149219e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.947846627503022684216e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.135880130108924861008e-14),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.348890393399948882918e-21)
};
static const T Q[] = {
- 1L,
- 0.0845746234001899436914L,
- 0.00282092984726264681981L,
- 0.468292921940894236786e-4L,
- 0.399968812193862100054e-6L,
- 0.161809290887904476097e-8L,
- 0.231558608310259605225e-11L
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0845746234001899436914),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00282092984726264681981),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.468292921940894236786e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.399968812193862100054e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.161809290887904476097e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.231558608310259605225e-11)
};
T xs = x - 44;
T R = tools::evaluate_polynomial(P, xs) / tools::evaluate_polynomial(Q, xs);
template <class T, class Policy>
struct erf_roots
{
- std::tr1::tuple<T,T,T> operator()(const T& guess)
+ boost::math::tuple<T,T,T> operator()(const T& guess)
{
BOOST_MATH_STD_USING
T derivative = sign * (2 / sqrt(constants::pi<T>())) * exp(-(guess * guess));
T derivative2 = -2 * guess * derivative;
- return std::tr1::make_tuple(((sign > 0) ? boost::math::erf(guess, Policy()) : boost::math::erfc(guess, Policy())) - target, derivative, derivative2);
+ return boost::math::make_tuple(((sign > 0) ? static_cast<T>(boost::math::erf(guess, Policy()) - target) : static_cast<T>(boost::math::erfc(guess, Policy())) - target), derivative, derivative2);
}
erf_roots(T z, int s) : target(z), sign(s) {}
private:
{
result = tools::halley_iterate(detail::erf_roots<typename remove_cv<T>::type, Policy>(q, -1), guess, static_cast<T>(0), tools::max_value<T>(), (policies::digits<T, Policy>() * 2) / 3, max_iter);
}
- policies::check_root_iterations("boost::math::erf_inv<%1%>", max_iter, pol);
+ policies::check_root_iterations<T>("boost::math::erf_inv<%1%>", max_iter, pol);
}
else
{
return result;
}
+template <class T, class Policy>
+struct erf_inv_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init();
+ }
+ static void do_init()
+ {
+ boost::math::erf_inv(static_cast<T>(0.25), Policy());
+ boost::math::erf_inv(static_cast<T>(0.55), Policy());
+ boost::math::erf_inv(static_cast<T>(0.95), Policy());
+ boost::math::erfc_inv(static_cast<T>(1e-15), Policy());
+ if(static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1e-130)) != 0)
+ boost::math::erfc_inv(static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1e-130)), Policy());
+
+ // Some compilers choke on constants that would underflow, even in code that isn't instantiated
+ // so try and filter these cases out in the preprocessor:
+#if LDBL_MAX_10_EXP >= 800
+ if(static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1e-800)) != 0)
+ boost::math::erfc_inv(static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1e-800)), Policy());
+ if(static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1e-900)) != 0)
+ boost::math::erfc_inv(static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1e-900)), Policy());
+#else
+ if(static_cast<T>(BOOST_MATH_HUGE_CONSTANT(T, 64, 1e-800)) != 0)
+ boost::math::erfc_inv(static_cast<T>(BOOST_MATH_HUGE_CONSTANT(T, 64, 1e-800)), Policy());
+ if(static_cast<T>(BOOST_MATH_HUGE_CONSTANT(T, 64, 1e-900)) != 0)
+ boost::math::erfc_inv(static_cast<T>(BOOST_MATH_HUGE_CONSTANT(T, 64, 1e-900)), Policy());
+#endif
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy>
+const typename erf_inv_initializer<T, Policy>::init erf_inv_initializer<T, Policy>::initializer;
+
} // namespace detail
template <class T, class Policy>
typename tools::promote_args<T>::type erfc_inv(T z, const Policy& pol)
{
typedef typename tools::promote_args<T>::type result_type;
+
//
// Begin by testing for domain errors, and other special cases:
//
policies::discrete_quantile<>,
policies::assert_undefined<> >::type forwarding_policy;
+ detail::erf_inv_initializer<eval_type, forwarding_policy>::force_instantiate();
+
//
// And get the result, negating where required:
//
typename tools::promote_args<T>::type erf_inv(T z, const Policy& pol)
{
typedef typename tools::promote_args<T>::type result_type;
+
//
// Begin by testing for domain errors, and other special cases:
//
// precision internally if it's appropriate:
//
typedef typename policies::evaluation<result_type, Policy>::type eval_type;
+
+ detail::erf_inv_initializer<eval_type, forwarding_policy>::force_instantiate();
//
// And get the result, negating where required:
//
// These helper functions are used only when numeric_limits<>
// members are not compile time constants:
//
-inline bool is_generic_tag_false(const generic_tag<false>&)
+inline bool is_generic_tag_false(const generic_tag<false>*)
{
return true;
}
-inline bool is_generic_tag_false(...)
+inline bool is_generic_tag_false(const void*)
{
return false;
}
&& !defined(__hpux) \
&& !defined(__DECCXX)\
&& !defined(__osf__) \
- && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+ && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)\
+ && !defined(BOOST_MATH_DISABLE_STD_FPCLASSIFY)
# define BOOST_MATH_USE_STD_FPCLASSIFY
#endif
template<class T> struct fp_traits
{
+ typedef BOOST_DEDUCED_TYPENAME size_to_precision<sizeof(T), ::boost::is_floating_point<T>::value>::type precision;
#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && !defined(BOOST_MATH_DISABLE_STD_FPCLASSIFY)
typedef typename select_native<T>::type type;
#else
- typedef BOOST_DEDUCED_TYPENAME size_to_precision<sizeof(T), ::boost::is_floating_point<T>::value>::type precision;
typedef fp_traits_non_native<T, precision> type;
#endif
+ typedef fp_traits_non_native<T, precision> sign_change_type;
};
//------------------------------------------------------------------------------
--- /dev/null
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to 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)
+
+//
+// This is not a complete header file, it is included by beta.hpp
+// after it has defined it's definitions. This inverts the incomplete
+// beta functions ibeta and ibetac on the first parameters "a"
+// and "b" using a generic root finding algorithm (TOMS Algorithm 748).
+//
+
+#ifndef BOOST_MATH_SP_DETAIL_BETA_INV_AB
+#define BOOST_MATH_SP_DETAIL_BETA_INV_AB
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/toms748_solve.hpp>
+#include <boost/cstdint.hpp>
+
+namespace boost{ namespace math{ namespace detail{
+
+template <class T, class Policy>
+struct beta_inv_ab_t
+{
+ beta_inv_ab_t(T b_, T z_, T p_, bool invert_, bool swap_ab_) : b(b_), z(z_), p(p_), invert(invert_), swap_ab(swap_ab_) {}
+ T operator()(T a)
+ {
+ return invert ?
+ p - boost::math::ibetac(swap_ab ? b : a, swap_ab ? a : b, z, Policy())
+ : boost::math::ibeta(swap_ab ? b : a, swap_ab ? a : b, z, Policy()) - p;
+ }
+private:
+ T b, z, p;
+ bool invert, swap_ab;
+};
+
+template <class T, class Policy>
+T inverse_negative_binomial_cornish_fisher(T n, T sf, T sfc, T p, T q, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ // mean:
+ T m = n * (sfc) / sf;
+ T t = sqrt(n * (sfc));
+ // standard deviation:
+ T sigma = t / sf;
+ // skewness
+ T sk = (1 + sfc) / t;
+ // kurtosis:
+ T k = (6 - sf * (5+sfc)) / (n * (sfc));
+ // Get the inverse of a std normal distribution:
+ T x = boost::math::erfc_inv(p > q ? 2 * q : 2 * p, pol) * constants::root_two<T>();
+ // Set the sign:
+ if(p < 0.5)
+ x = -x;
+ T x2 = x * x;
+ // w is correction term due to skewness
+ T w = x + sk * (x2 - 1) / 6;
+ //
+ // Add on correction due to kurtosis.
+ //
+ if(n >= 10)
+ w += k * x * (x2 - 3) / 24 + sk * sk * x * (2 * x2 - 5) / -36;
+
+ w = m + sigma * w;
+ if(w < tools::min_value<T>())
+ return tools::min_value<T>();
+ return w;
+}
+
+template <class T, class Policy>
+T ibeta_inv_ab_imp(const T& b, const T& z, const T& p, const T& q, bool swap_ab, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // for ADL of std lib math functions
+ //
+ // Special cases first:
+ //
+ BOOST_MATH_INSTRUMENT_CODE("b = " << b << " z = " << z << " p = " << p << " q = " << " swap = " << swap_ab);
+ if(p == 0)
+ {
+ return swap_ab ? tools::min_value<T>() : tools::max_value<T>();
+ }
+ if(q == 0)
+ {
+ return swap_ab ? tools::max_value<T>() : tools::min_value<T>();
+ }
+ //
+ // Function object, this is the functor whose root
+ // we have to solve:
+ //
+ beta_inv_ab_t<T, Policy> f(b, z, (p < q) ? p : q, (p < q) ? false : true, swap_ab);
+ //
+ // Tolerance: full precision.
+ //
+ tools::eps_tolerance<T> tol(policies::digits<T, Policy>());
+ //
+ // Now figure out a starting guess for what a may be,
+ // we'll start out with a value that'll put p or q
+ // right bang in the middle of their range, the functions
+ // are quite sensitive so we should need too many steps
+ // to bracket the root from there:
+ //
+ T guess = 0;
+ T factor = 5;
+ //
+ // Convert variables to parameters of a negative binomial distribution:
+ //
+ T n = b;
+ T sf = swap_ab ? z : 1-z;
+ T sfc = swap_ab ? 1-z : z;
+ T u = swap_ab ? p : q;
+ T v = swap_ab ? q : p;
+ if(u <= pow(sf, n))
+ {
+ //
+ // Result is less than 1, negative binomial approximation
+ // is useless....
+ //
+ if((p < q) != swap_ab)
+ {
+ guess = (std::min)(T(b * 2), T(1));
+ }
+ else
+ {
+ guess = (std::min)(T(b / 2), T(1));
+ }
+ }
+ if(n * n * n * u * sf > 0.005)
+ guess = 1 + inverse_negative_binomial_cornish_fisher(n, sf, sfc, u, v, pol);
+
+ if(guess < 10)
+ {
+ //
+ // Negative binomial approximation not accurate in this area:
+ //
+ if((p < q) != swap_ab)
+ {
+ guess = (std::min)(T(b * 2), T(10));
+ }
+ else
+ {
+ guess = (std::min)(T(b / 2), T(10));
+ }
+ }
+ else
+ factor = (v < sqrt(tools::epsilon<T>())) ? 2 : (guess < 20 ? 1.2f : 1.1f);
+ BOOST_MATH_INSTRUMENT_CODE("guess = " << guess);
+ //
+ // Max iterations permitted:
+ //
+ boost::uintmax_t max_iter = policies::get_max_root_iterations<Policy>();
+ std::pair<T, T> r = bracket_and_solve_root(f, guess, factor, swap_ab ? true : false, tol, max_iter, pol);
+ if(max_iter >= policies::get_max_root_iterations<Policy>())
+ policies::raise_evaluation_error<T>("boost::math::ibeta_invab_imp<%1%>(%1%,%1%,%1%)", "Unable to locate the root within a reasonable number of iterations, closest approximation so far was %1%", r.first, pol);
+ return (r.first + r.second) / 2;
+}
+
+} // namespace detail
+
+template <class RT1, class RT2, class RT3, class Policy>
+typename tools::promote_args<RT1, RT2, RT3>::type
+ ibeta_inva(RT1 b, RT2 x, RT3 p, const Policy& pol)
+{
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ if(p == 0)
+ {
+ return tools::max_value<result_type>();
+ }
+ if(p == 1)
+ {
+ return tools::min_value<result_type>();
+ }
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::ibeta_inv_ab_imp(
+ static_cast<value_type>(b),
+ static_cast<value_type>(x),
+ static_cast<value_type>(p),
+ static_cast<value_type>(1 - static_cast<value_type>(p)),
+ false, pol),
+ "boost::math::ibeta_inva<%1%>(%1%,%1%,%1%)");
+}
+
+template <class RT1, class RT2, class RT3, class Policy>
+typename tools::promote_args<RT1, RT2, RT3>::type
+ ibetac_inva(RT1 b, RT2 x, RT3 q, const Policy& pol)
+{
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ if(q == 1)
+ {
+ return tools::max_value<result_type>();
+ }
+ if(q == 0)
+ {
+ return tools::min_value<result_type>();
+ }
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::ibeta_inv_ab_imp(
+ static_cast<value_type>(b),
+ static_cast<value_type>(x),
+ static_cast<value_type>(1 - static_cast<value_type>(q)),
+ static_cast<value_type>(q),
+ false, pol),
+ "boost::math::ibetac_inva<%1%>(%1%,%1%,%1%)");
+}
+
+template <class RT1, class RT2, class RT3, class Policy>
+typename tools::promote_args<RT1, RT2, RT3>::type
+ ibeta_invb(RT1 a, RT2 x, RT3 p, const Policy& pol)
+{
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ if(p == 0)
+ {
+ return tools::min_value<result_type>();
+ }
+ if(p == 1)
+ {
+ return tools::max_value<result_type>();
+ }
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::ibeta_inv_ab_imp(
+ static_cast<value_type>(a),
+ static_cast<value_type>(x),
+ static_cast<value_type>(p),
+ static_cast<value_type>(1 - static_cast<value_type>(p)),
+ true, pol),
+ "boost::math::ibeta_invb<%1%>(%1%,%1%,%1%)");
+}
+
+template <class RT1, class RT2, class RT3, class Policy>
+typename tools::promote_args<RT1, RT2, RT3>::type
+ ibetac_invb(RT1 a, RT2 x, RT3 q, const Policy& pol)
+{
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ if(q == 1)
+ {
+ return tools::min_value<result_type>();
+ }
+ if(q == 0)
+ {
+ return tools::max_value<result_type>();
+ }
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::ibeta_inv_ab_imp(
+ static_cast<value_type>(a),
+ static_cast<value_type>(x),
+ static_cast<value_type>(1 - static_cast<value_type>(q)),
+ static_cast<value_type>(q),
+ true, pol),
+ "boost::math::ibetac_invb<%1%>(%1%,%1%,%1%)");
+}
+
+template <class RT1, class RT2, class RT3>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibeta_inva(RT1 b, RT2 x, RT3 p)
+{
+ return boost::math::ibeta_inva(b, x, p, policies::policy<>());
+}
+
+template <class RT1, class RT2, class RT3>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibetac_inva(RT1 b, RT2 x, RT3 q)
+{
+ return boost::math::ibetac_inva(b, x, q, policies::policy<>());
+}
+
+template <class RT1, class RT2, class RT3>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibeta_invb(RT1 a, RT2 x, RT3 p)
+{
+ return boost::math::ibeta_invb(a, x, p, policies::policy<>());
+}
+
+template <class RT1, class RT2, class RT3>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibetac_invb(RT1 a, RT2 x, RT3 q)
+{
+ return boost::math::ibetac_invb(a, x, q, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+
+#endif // BOOST_MATH_SP_DETAIL_BETA_INV_AB
+
+
+
--- /dev/null
+// Copyright John Maddock 2006.
+// Copyright Paul A. Bristow 2007
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SPECIAL_FUNCTIONS_IBETA_INVERSE_HPP
+#define BOOST_MATH_SPECIAL_FUNCTIONS_IBETA_INVERSE_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/beta.hpp>
+#include <boost/math/special_functions/erf.hpp>
+#include <boost/math/tools/roots.hpp>
+#include <boost/math/special_functions/detail/t_distribution_inv.hpp>
+
+namespace boost{ namespace math{ namespace detail{
+
+//
+// Helper object used by root finding
+// code to convert eta to x.
+//
+template <class T>
+struct temme_root_finder
+{
+ temme_root_finder(const T t_, const T a_) : t(t_), a(a_) {}
+
+ boost::math::tuple<T, T> operator()(T x)
+ {
+ BOOST_MATH_STD_USING // ADL of std names
+
+ T y = 1 - x;
+ if(y == 0)
+ {
+ T big = tools::max_value<T>() / 4;
+ return boost::math::make_tuple(static_cast<T>(-big), static_cast<T>(-big));
+ }
+ if(x == 0)
+ {
+ T big = tools::max_value<T>() / 4;
+ return boost::math::make_tuple(static_cast<T>(-big), big);
+ }
+ T f = log(x) + a * log(y) + t;
+ T f1 = (1 / x) - (a / (y));
+ return boost::math::make_tuple(f, f1);
+ }
+private:
+ T t, a;
+};
+//
+// See:
+// "Asymptotic Inversion of the Incomplete Beta Function"
+// N.M. Temme
+// Journal of Computation and Applied Mathematics 41 (1992) 145-157.
+// Section 2.
+//
+template <class T, class Policy>
+T temme_method_1_ibeta_inverse(T a, T b, T z, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names
+
+ const T r2 = sqrt(T(2));
+ //
+ // get the first approximation for eta from the inverse
+ // error function (Eq: 2.9 and 2.10).
+ //
+ T eta0 = boost::math::erfc_inv(2 * z, pol);
+ eta0 /= -sqrt(a / 2);
+
+ T terms[4] = { eta0 };
+ T workspace[7];
+ //
+ // calculate powers:
+ //
+ T B = b - a;
+ T B_2 = B * B;
+ T B_3 = B_2 * B;
+ //
+ // Calculate correction terms:
+ //
+
+ // See eq following 2.15:
+ workspace[0] = -B * r2 / 2;
+ workspace[1] = (1 - 2 * B) / 8;
+ workspace[2] = -(B * r2 / 48);
+ workspace[3] = T(-1) / 192;
+ workspace[4] = -B * r2 / 3840;
+ terms[1] = tools::evaluate_polynomial(workspace, eta0, 5);
+ // Eq Following 2.17:
+ workspace[0] = B * r2 * (3 * B - 2) / 12;
+ workspace[1] = (20 * B_2 - 12 * B + 1) / 128;
+ workspace[2] = B * r2 * (20 * B - 1) / 960;
+ workspace[3] = (16 * B_2 + 30 * B - 15) / 4608;
+ workspace[4] = B * r2 * (21 * B + 32) / 53760;
+ workspace[5] = (-32 * B_2 + 63) / 368640;
+ workspace[6] = -B * r2 * (120 * B + 17) / 25804480;
+ terms[2] = tools::evaluate_polynomial(workspace, eta0, 7);
+ // Eq Following 2.17:
+ workspace[0] = B * r2 * (-75 * B_2 + 80 * B - 16) / 480;
+ workspace[1] = (-1080 * B_3 + 868 * B_2 - 90 * B - 45) / 9216;
+ workspace[2] = B * r2 * (-1190 * B_2 + 84 * B + 373) / 53760;
+ workspace[3] = (-2240 * B_3 - 2508 * B_2 + 2100 * B - 165) / 368640;
+ terms[3] = tools::evaluate_polynomial(workspace, eta0, 4);
+ //
+ // Bring them together to get a final estimate for eta:
+ //
+ T eta = tools::evaluate_polynomial(terms, T(1/a), 4);
+ //
+ // now we need to convert eta to x, by solving the appropriate
+ // quadratic equation:
+ //
+ T eta_2 = eta * eta;
+ T c = -exp(-eta_2 / 2);
+ T x;
+ if(eta_2 == 0)
+ x = 0.5;
+ else
+ x = (1 + eta * sqrt((1 + c) / eta_2)) / 2;
+
+ BOOST_ASSERT(x >= 0);
+ BOOST_ASSERT(x <= 1);
+ BOOST_ASSERT(eta * (x - 0.5) >= 0);
+#ifdef BOOST_INSTRUMENT
+ std::cout << "Estimating x with Temme method 1: " << x << std::endl;
+#endif
+ return x;
+}
+//
+// See:
+// "Asymptotic Inversion of the Incomplete Beta Function"
+// N.M. Temme
+// Journal of Computation and Applied Mathematics 41 (1992) 145-157.
+// Section 3.
+//
+template <class T, class Policy>
+T temme_method_2_ibeta_inverse(T /*a*/, T /*b*/, T z, T r, T theta, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names
+
+ //
+ // Get first estimate for eta, see Eq 3.9 and 3.10,
+ // but note there is a typo in Eq 3.10:
+ //
+ T eta0 = boost::math::erfc_inv(2 * z, pol);
+ eta0 /= -sqrt(r / 2);
+
+ T s = sin(theta);
+ T c = cos(theta);
+ //
+ // Now we need to purturb eta0 to get eta, which we do by
+ // evaluating the polynomial in 1/r at the bottom of page 151,
+ // to do this we first need the error terms e1, e2 e3
+ // which we'll fill into the array "terms". Since these
+ // terms are themselves polynomials, we'll need another
+ // array "workspace" to calculate those...
+ //
+ T terms[4] = { eta0 };
+ T workspace[6];
+ //
+ // some powers of sin(theta)cos(theta) that we'll need later:
+ //
+ T sc = s * c;
+ T sc_2 = sc * sc;
+ T sc_3 = sc_2 * sc;
+ T sc_4 = sc_2 * sc_2;
+ T sc_5 = sc_2 * sc_3;
+ T sc_6 = sc_3 * sc_3;
+ T sc_7 = sc_4 * sc_3;
+ //
+ // Calculate e1 and put it in terms[1], see the middle of page 151:
+ //
+ workspace[0] = (2 * s * s - 1) / (3 * s * c);
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co1[] = { -1, -5, 5 };
+ workspace[1] = -tools::evaluate_even_polynomial(co1, s, 3) / (36 * sc_2);
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co2[] = { 1, 21, -69, 46 };
+ workspace[2] = tools::evaluate_even_polynomial(co2, s, 4) / (1620 * sc_3);
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co3[] = { 7, -2, 33, -62, 31 };
+ workspace[3] = -tools::evaluate_even_polynomial(co3, s, 5) / (6480 * sc_4);
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co4[] = { 25, -52, -17, 88, -115, 46 };
+ workspace[4] = tools::evaluate_even_polynomial(co4, s, 6) / (90720 * sc_5);
+ terms[1] = tools::evaluate_polynomial(workspace, eta0, 5);
+ //
+ // Now evaluate e2 and put it in terms[2]:
+ //
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co5[] = { 7, 12, -78, 52 };
+ workspace[0] = -tools::evaluate_even_polynomial(co5, s, 4) / (405 * sc_3);
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co6[] = { -7, 2, 183, -370, 185 };
+ workspace[1] = tools::evaluate_even_polynomial(co6, s, 5) / (2592 * sc_4);
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co7[] = { -533, 776, -1835, 10240, -13525, 5410 };
+ workspace[2] = -tools::evaluate_even_polynomial(co7, s, 6) / (204120 * sc_5);
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co8[] = { -1579, 3747, -3372, -15821, 45588, -45213, 15071 };
+ workspace[3] = -tools::evaluate_even_polynomial(co8, s, 7) / (2099520 * sc_6);
+ terms[2] = tools::evaluate_polynomial(workspace, eta0, 4);
+ //
+ // And e3, and put it in terms[3]:
+ //
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co9[] = {449, -1259, -769, 6686, -9260, 3704 };
+ workspace[0] = tools::evaluate_even_polynomial(co9, s, 6) / (102060 * sc_5);
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co10[] = { 63149, -151557, 140052, -727469, 2239932, -2251437, 750479 };
+ workspace[1] = -tools::evaluate_even_polynomial(co10, s, 7) / (20995200 * sc_6);
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co11[] = { 29233, -78755, 105222, 146879, -1602610, 3195183, -2554139, 729754 };
+ workspace[2] = tools::evaluate_even_polynomial(co11, s, 8) / (36741600 * sc_7);
+ terms[3] = tools::evaluate_polynomial(workspace, eta0, 3);
+ //
+ // Bring the correction terms together to evaluate eta,
+ // this is the last equation on page 151:
+ //
+ T eta = tools::evaluate_polynomial(terms, T(1/r), 4);
+ //
+ // Now that we have eta we need to back solve for x,
+ // we seek the value of x that gives eta in Eq 3.2.
+ // The two methods used are described in section 5.
+ //
+ // Begin by defining a few variables we'll need later:
+ //
+ T x;
+ T s_2 = s * s;
+ T c_2 = c * c;
+ T alpha = c / s;
+ alpha *= alpha;
+ T lu = (-(eta * eta) / (2 * s_2) + log(s_2) + c_2 * log(c_2) / s_2);
+ //
+ // Temme doesn't specify what value to switch on here,
+ // but this seems to work pretty well:
+ //
+ if(fabs(eta) < 0.7)
+ {
+ //
+ // Small eta use the expansion Temme gives in the second equation
+ // of section 5, it's a polynomial in eta:
+ //
+ workspace[0] = s * s;
+ workspace[1] = s * c;
+ workspace[2] = (1 - 2 * workspace[0]) / 3;
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co12[] = { 1, -13, 13 };
+ workspace[3] = tools::evaluate_polynomial(co12, workspace[0], 3) / (36 * s * c);
+ static const BOOST_MATH_INT_TABLE_TYPE(T, int) co13[] = { 1, 21, -69, 46 };
+ workspace[4] = tools::evaluate_polynomial(co13, workspace[0], 4) / (270 * workspace[0] * c * c);
+ x = tools::evaluate_polynomial(workspace, eta, 5);
+#ifdef BOOST_INSTRUMENT
+ std::cout << "Estimating x with Temme method 2 (small eta): " << x << std::endl;
+#endif
+ }
+ else
+ {
+ //
+ // If eta is large we need to solve Eq 3.2 more directly,
+ // begin by getting an initial approximation for x from
+ // the last equation on page 155, this is a polynomial in u:
+ //
+ T u = exp(lu);
+ workspace[0] = u;
+ workspace[1] = alpha;
+ workspace[2] = 0;
+ workspace[3] = 3 * alpha * (3 * alpha + 1) / 6;
+ workspace[4] = 4 * alpha * (4 * alpha + 1) * (4 * alpha + 2) / 24;
+ workspace[5] = 5 * alpha * (5 * alpha + 1) * (5 * alpha + 2) * (5 * alpha + 3) / 120;
+ x = tools::evaluate_polynomial(workspace, u, 6);
+ //
+ // At this point we may or may not have the right answer, Eq-3.2 has
+ // two solutions for x for any given eta, however the mapping in 3.2
+ // is 1:1 with the sign of eta and x-sin^2(theta) being the same.
+ // So we can check if we have the right root of 3.2, and if not
+ // switch x for 1-x. This transformation is motivated by the fact
+ // that the distribution is *almost* symetric so 1-x will be in the right
+ // ball park for the solution:
+ //
+ if((x - s_2) * eta < 0)
+ x = 1 - x;
+#ifdef BOOST_INSTRUMENT
+ std::cout << "Estimating x with Temme method 2 (large eta): " << x << std::endl;
+#endif
+ }
+ //
+ // The final step is a few Newton-Raphson iterations to
+ // clean up our approximation for x, this is pretty cheap
+ // in general, and very cheap compared to an incomplete beta
+ // evaluation. The limits set on x come from the observation
+ // that the sign of eta and x-sin^2(theta) are the same.
+ //
+ T lower, upper;
+ if(eta < 0)
+ {
+ lower = 0;
+ upper = s_2;
+ }
+ else
+ {
+ lower = s_2;
+ upper = 1;
+ }
+ //
+ // If our initial approximation is out of bounds then bisect:
+ //
+ if((x < lower) || (x > upper))
+ x = (lower+upper) / 2;
+ //
+ // And iterate:
+ //
+ x = tools::newton_raphson_iterate(
+ temme_root_finder<T>(-lu, alpha), x, lower, upper, policies::digits<T, Policy>() / 2);
+
+ return x;
+}
+//
+// See:
+// "Asymptotic Inversion of the Incomplete Beta Function"
+// N.M. Temme
+// Journal of Computation and Applied Mathematics 41 (1992) 145-157.
+// Section 4.
+//
+template <class T, class Policy>
+T temme_method_3_ibeta_inverse(T a, T b, T p, T q, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names
+
+ //
+ // Begin by getting an initial approximation for the quantity
+ // eta from the dominant part of the incomplete beta:
+ //
+ T eta0;
+ if(p < q)
+ eta0 = boost::math::gamma_q_inv(b, p, pol);
+ else
+ eta0 = boost::math::gamma_p_inv(b, q, pol);
+ eta0 /= a;
+ //
+ // Define the variables and powers we'll need later on:
+ //
+ T mu = b / a;
+ T w = sqrt(1 + mu);
+ T w_2 = w * w;
+ T w_3 = w_2 * w;
+ T w_4 = w_2 * w_2;
+ T w_5 = w_3 * w_2;
+ T w_6 = w_3 * w_3;
+ T w_7 = w_4 * w_3;
+ T w_8 = w_4 * w_4;
+ T w_9 = w_5 * w_4;
+ T w_10 = w_5 * w_5;
+ T d = eta0 - mu;
+ T d_2 = d * d;
+ T d_3 = d_2 * d;
+ T d_4 = d_2 * d_2;
+ T w1 = w + 1;
+ T w1_2 = w1 * w1;
+ T w1_3 = w1 * w1_2;
+ T w1_4 = w1_2 * w1_2;
+ //
+ // Now we need to compute the purturbation error terms that
+ // convert eta0 to eta, these are all polynomials of polynomials.
+ // Probably these should be re-written to use tabulated data
+ // (see examples above), but it's less of a win in this case as we
+ // need to calculate the individual powers for the denominator terms
+ // anyway, so we might as well use them for the numerator-polynomials
+ // as well....
+ //
+ // Refer to p154-p155 for the details of these expansions:
+ //
+ T e1 = (w + 2) * (w - 1) / (3 * w);
+ e1 += (w_3 + 9 * w_2 + 21 * w + 5) * d / (36 * w_2 * w1);
+ e1 -= (w_4 - 13 * w_3 + 69 * w_2 + 167 * w + 46) * d_2 / (1620 * w1_2 * w_3);
+ e1 -= (7 * w_5 + 21 * w_4 + 70 * w_3 + 26 * w_2 - 93 * w - 31) * d_3 / (6480 * w1_3 * w_4);
+ e1 -= (75 * w_6 + 202 * w_5 + 188 * w_4 - 888 * w_3 - 1345 * w_2 + 118 * w + 138) * d_4 / (272160 * w1_4 * w_5);
+
+ T e2 = (28 * w_4 + 131 * w_3 + 402 * w_2 + 581 * w + 208) * (w - 1) / (1620 * w1 * w_3);
+ e2 -= (35 * w_6 - 154 * w_5 - 623 * w_4 - 1636 * w_3 - 3983 * w_2 - 3514 * w - 925) * d / (12960 * w1_2 * w_4);
+ e2 -= (2132 * w_7 + 7915 * w_6 + 16821 * w_5 + 35066 * w_4 + 87490 * w_3 + 141183 * w_2 + 95993 * w + 21640) * d_2 / (816480 * w_5 * w1_3);
+ e2 -= (11053 * w_8 + 53308 * w_7 + 117010 * w_6 + 163924 * w_5 + 116188 * w_4 - 258428 * w_3 - 677042 * w_2 - 481940 * w - 105497) * d_3 / (14696640 * w1_4 * w_6);
+
+ T e3 = -((3592 * w_7 + 8375 * w_6 - 1323 * w_5 - 29198 * w_4 - 89578 * w_3 - 154413 * w_2 - 116063 * w - 29632) * (w - 1)) / (816480 * w_5 * w1_2);
+ e3 -= (442043 * w_9 + 2054169 * w_8 + 3803094 * w_7 + 3470754 * w_6 + 2141568 * w_5 - 2393568 * w_4 - 19904934 * w_3 - 34714674 * w_2 - 23128299 * w - 5253353) * d / (146966400 * w_6 * w1_3);
+ e3 -= (116932 * w_10 + 819281 * w_9 + 2378172 * w_8 + 4341330 * w_7 + 6806004 * w_6 + 10622748 * w_5 + 18739500 * w_4 + 30651894 * w_3 + 30869976 * w_2 + 15431867 * w + 2919016) * d_2 / (146966400 * w1_4 * w_7);
+ //
+ // Combine eta0 and the error terms to compute eta (Second eqaution p155):
+ //
+ T eta = eta0 + e1 / a + e2 / (a * a) + e3 / (a * a * a);
+ //
+ // Now we need to solve Eq 4.2 to obtain x. For any given value of
+ // eta there are two solutions to this equation, and since the distribtion
+ // may be very skewed, these are not related by x ~ 1-x we used when
+ // implementing section 3 above. However we know that:
+ //
+ // cross < x <= 1 ; iff eta < mu
+ // x == cross ; iff eta == mu
+ // 0 <= x < cross ; iff eta > mu
+ //
+ // Where cross == 1 / (1 + mu)
+ // Many thanks to Prof Temme for clarifying this point.
+ //
+ // Therefore we'll just jump straight into Newton iterations
+ // to solve Eq 4.2 using these bounds, and simple bisection
+ // as the first guess, in practice this converges pretty quickly
+ // and we only need a few digits correct anyway:
+ //
+ if(eta <= 0)
+ eta = tools::min_value<T>();
+ T u = eta - mu * log(eta) + (1 + mu) * log(1 + mu) - mu;
+ T cross = 1 / (1 + mu);
+ T lower = eta < mu ? cross : 0;
+ T upper = eta < mu ? 1 : cross;
+ T x = (lower + upper) / 2;
+ x = tools::newton_raphson_iterate(
+ temme_root_finder<T>(u, mu), x, lower, upper, policies::digits<T, Policy>() / 2);
+#ifdef BOOST_INSTRUMENT
+ std::cout << "Estimating x with Temme method 3: " << x << std::endl;
+#endif
+ return x;
+}
+
+template <class T, class Policy>
+struct ibeta_roots
+{
+ ibeta_roots(T _a, T _b, T t, bool inv = false)
+ : a(_a), b(_b), target(t), invert(inv) {}
+
+ boost::math::tuple<T, T, T> operator()(T x)
+ {
+ BOOST_MATH_STD_USING // ADL of std names
+
+ BOOST_FPU_EXCEPTION_GUARD
+
+ T f1;
+ T y = 1 - x;
+ T f = ibeta_imp(a, b, x, Policy(), invert, true, &f1) - target;
+ if(invert)
+ f1 = -f1;
+ if(y == 0)
+ y = tools::min_value<T>() * 64;
+ if(x == 0)
+ x = tools::min_value<T>() * 64;
+
+ T f2 = f1 * (-y * a + (b - 2) * x + 1);
+ if(fabs(f2) < y * x * tools::max_value<T>())
+ f2 /= (y * x);
+ if(invert)
+ f2 = -f2;
+
+ // make sure we don't have a zero derivative:
+ if(f1 == 0)
+ f1 = (invert ? -1 : 1) * tools::min_value<T>() * 64;
+
+ return boost::math::make_tuple(f, f1, f2);
+ }
+private:
+ T a, b, target;
+ bool invert;
+};
+
+template <class T, class Policy>
+T ibeta_inv_imp(T a, T b, T p, T q, const Policy& pol, T* py)
+{
+ BOOST_MATH_STD_USING // For ADL of math functions.
+
+ //
+ // The flag invert is set to true if we swap a for b and p for q,
+ // in which case the result has to be subtracted from 1:
+ //
+ bool invert = false;
+ //
+ // Handle trivial cases first:
+ //
+ if(q == 0)
+ {
+ if(py) *py = 0;
+ return 1;
+ }
+ else if(p == 0)
+ {
+ if(py) *py = 1;
+ return 0;
+ }
+ else if(a == 1)
+ {
+ if(b == 1)
+ {
+ if(py) *py = 1 - p;
+ return p;
+ }
+ // Change things around so we can handle as b == 1 special case below:
+ std::swap(a, b);
+ std::swap(p, q);
+ invert = true;
+ }
+ //
+ // Depending upon which approximation method we use, we may end up
+ // calculating either x or y initially (where y = 1-x):
+ //
+ T x = 0; // Set to a safe zero to avoid a
+ // MSVC 2005 warning C4701: potentially uninitialized local variable 'x' used
+ // But code inspection appears to ensure that x IS assigned whatever the code path.
+ T y;
+
+ // For some of the methods we can put tighter bounds
+ // on the result than simply [0,1]:
+ //
+ T lower = 0;
+ T upper = 1;
+ //
+ // Student's T with b = 0.5 gets handled as a special case, swap
+ // around if the arguments are in the "wrong" order:
+ //
+ if(a == 0.5f)
+ {
+ if(b == 0.5f)
+ {
+ x = sin(p * constants::half_pi<T>());
+ x *= x;
+ if(py)
+ {
+ *py = sin(q * constants::half_pi<T>());
+ *py *= *py;
+ }
+ return x;
+ }
+ else if(b > 0.5f)
+ {
+ std::swap(a, b);
+ std::swap(p, q);
+ invert = !invert;
+ }
+ }
+ //
+ // Select calculation method for the initial estimate:
+ //
+ if((b == 0.5f) && (a >= 0.5f) && (p != 1))
+ {
+ //
+ // We have a Student's T distribution:
+ x = find_ibeta_inv_from_t_dist(a, p, q, &y, pol);
+ }
+ else if(b == 1)
+ {
+ if(p < q)
+ {
+ if(a > 1)
+ {
+ x = pow(p, 1 / a);
+ y = -expm1(log(p) / a);
+ }
+ else
+ {
+ x = pow(p, 1 / a);
+ y = 1 - x;
+ }
+ }
+ else
+ {
+ x = exp(log1p(-q) / a);
+ y = -expm1(log1p(-q) / a);
+ }
+ if(invert)
+ std::swap(x, y);
+ if(py)
+ *py = y;
+ return x;
+ }
+ else if(a + b > 5)
+ {
+ //
+ // When a+b is large then we can use one of Prof Temme's
+ // asymptotic expansions, begin by swapping things around
+ // so that p < 0.5, we do this to avoid cancellations errors
+ // when p is large.
+ //
+ if(p > 0.5)
+ {
+ std::swap(a, b);
+ std::swap(p, q);
+ invert = !invert;
+ }
+ T minv = (std::min)(a, b);
+ T maxv = (std::max)(a, b);
+ if((sqrt(minv) > (maxv - minv)) && (minv > 5))
+ {
+ //
+ // When a and b differ by a small amount
+ // the curve is quite symmetrical and we can use an error
+ // function to approximate the inverse. This is the cheapest
+ // of the three Temme expantions, and the calculated value
+ // for x will never be much larger than p, so we don't have
+ // to worry about cancellation as long as p is small.
+ //
+ x = temme_method_1_ibeta_inverse(a, b, p, pol);
+ y = 1 - x;
+ }
+ else
+ {
+ T r = a + b;
+ T theta = asin(sqrt(a / r));
+ T lambda = minv / r;
+ if((lambda >= 0.2) && (lambda <= 0.8) && (r >= 10))
+ {
+ //
+ // The second error function case is the next cheapest
+ // to use, it brakes down when the result is likely to be
+ // very small, if a+b is also small, but we can use a
+ // cheaper expansion there in any case. As before x won't
+ // be much larger than p, so as long as p is small we should
+ // be free of cancellation error.
+ //
+ T ppa = pow(p, 1/a);
+ if((ppa < 0.0025) && (a + b < 200))
+ {
+ x = ppa * pow(a * boost::math::beta(a, b, pol), 1/a);
+ }
+ else
+ x = temme_method_2_ibeta_inverse(a, b, p, r, theta, pol);
+ y = 1 - x;
+ }
+ else
+ {
+ //
+ // If we get here then a and b are very different in magnitude
+ // and we need to use the third of Temme's methods which
+ // involves inverting the incomplete gamma. This is much more
+ // expensive than the other methods. We also can only use this
+ // method when a > b, which can lead to cancellation errors
+ // if we really want y (as we will when x is close to 1), so
+ // a different expansion is used in that case.
+ //
+ if(a < b)
+ {
+ std::swap(a, b);
+ std::swap(p, q);
+ invert = !invert;
+ }
+ //
+ // Try and compute the easy way first:
+ //
+ T bet = 0;
+ if(b < 2)
+ bet = boost::math::beta(a, b, pol);
+ if(bet != 0)
+ {
+ y = pow(b * q * bet, 1/b);
+ x = 1 - y;
+ }
+ else
+ y = 1;
+ if(y > 1e-5)
+ {
+ x = temme_method_3_ibeta_inverse(a, b, p, q, pol);
+ y = 1 - x;
+ }
+ }
+ }
+ }
+ else if((a < 1) && (b < 1))
+ {
+ //
+ // Both a and b less than 1,
+ // there is a point of inflection at xs:
+ //
+ T xs = (1 - a) / (2 - a - b);
+ //
+ // Now we need to ensure that we start our iteration from the
+ // right side of the inflection point:
+ //
+ T fs = boost::math::ibeta(a, b, xs, pol) - p;
+ if(fabs(fs) / p < tools::epsilon<T>() * 3)
+ {
+ // The result is at the point of inflection, best just return it:
+ *py = invert ? xs : 1 - xs;
+ return invert ? 1-xs : xs;
+ }
+ if(fs < 0)
+ {
+ std::swap(a, b);
+ std::swap(p, q);
+ invert = !invert;
+ xs = 1 - xs;
+ }
+ T xg = pow(a * p * boost::math::beta(a, b, pol), 1/a);
+ x = xg / (1 + xg);
+ y = 1 / (1 + xg);
+ //
+ // And finally we know that our result is below the inflection
+ // point, so set an upper limit on our search:
+ //
+ if(x > xs)
+ x = xs;
+ upper = xs;
+ }
+ else if((a > 1) && (b > 1))
+ {
+ //
+ // Small a and b, both greater than 1,
+ // there is a point of inflection at xs,
+ // and it's complement is xs2, we must always
+ // start our iteration from the right side of the
+ // point of inflection.
+ //
+ T xs = (a - 1) / (a + b - 2);
+ T xs2 = (b - 1) / (a + b - 2);
+ T ps = boost::math::ibeta(a, b, xs, pol) - p;
+
+ if(ps < 0)
+ {
+ std::swap(a, b);
+ std::swap(p, q);
+ std::swap(xs, xs2);
+ invert = !invert;
+ }
+ //
+ // Estimate x and y, using expm1 to get a good estimate
+ // for y when it's very small:
+ //
+ T lx = log(p * a * boost::math::beta(a, b, pol)) / a;
+ x = exp(lx);
+ y = x < 0.9 ? T(1 - x) : (T)(-boost::math::expm1(lx, pol));
+
+ if((b < a) && (x < 0.2))
+ {
+ //
+ // Under a limited range of circumstances we can improve
+ // our estimate for x, frankly it's clear if this has much effect!
+ //
+ T ap1 = a - 1;
+ T bm1 = b - 1;
+ T a_2 = a * a;
+ T a_3 = a * a_2;
+ T b_2 = b * b;
+ T terms[5] = { 0, 1 };
+ terms[2] = bm1 / ap1;
+ ap1 *= ap1;
+ terms[3] = bm1 * (3 * a * b + 5 * b + a_2 - a - 4) / (2 * (a + 2) * ap1);
+ ap1 *= (a + 1);
+ terms[4] = bm1 * (33 * a * b_2 + 31 * b_2 + 8 * a_2 * b_2 - 30 * a * b - 47 * b + 11 * a_2 * b + 6 * a_3 * b + 18 + 4 * a - a_3 + a_2 * a_2 - 10 * a_2)
+ / (3 * (a + 3) * (a + 2) * ap1);
+ x = tools::evaluate_polynomial(terms, x, 5);
+ }
+ //
+ // And finally we know that our result is below the inflection
+ // point, so set an upper limit on our search:
+ //
+ if(x > xs)
+ x = xs;
+ upper = xs;
+ }
+ else /*if((a <= 1) != (b <= 1))*/
+ {
+ //
+ // If all else fails we get here, only one of a and b
+ // is above 1, and a+b is small. Start by swapping
+ // things around so that we have a concave curve with b > a
+ // and no points of inflection in [0,1]. As long as we expect
+ // x to be small then we can use the simple (and cheap) power
+ // term to estimate x, but when we expect x to be large then
+ // this greatly underestimates x and leaves us trying to
+ // iterate "round the corner" which may take almost forever...
+ //
+ // We could use Temme's inverse gamma function case in that case,
+ // this works really rather well (albeit expensively) even though
+ // strictly speaking we're outside it's defined range.
+ //
+ // However it's expensive to compute, and an alternative approach
+ // which models the curve as a distorted quarter circle is much
+ // cheaper to compute, and still keeps the number of iterations
+ // required down to a reasonable level. With thanks to Prof Temme
+ // for this suggestion.
+ //
+ if(b < a)
+ {
+ std::swap(a, b);
+ std::swap(p, q);
+ invert = !invert;
+ }
+ if(pow(p, 1/a) < 0.5)
+ {
+ x = pow(p * a * boost::math::beta(a, b, pol), 1 / a);
+ if(x == 0)
+ x = boost::math::tools::min_value<T>();
+ y = 1 - x;
+ }
+ else /*if(pow(q, 1/b) < 0.1)*/
+ {
+ // model a distorted quarter circle:
+ y = pow(1 - pow(p, b * boost::math::beta(a, b, pol)), 1/b);
+ if(y == 0)
+ y = boost::math::tools::min_value<T>();
+ x = 1 - y;
+ }
+ }
+
+ //
+ // Now we have a guess for x (and for y) we can set things up for
+ // iteration. If x > 0.5 it pays to swap things round:
+ //
+ if(x > 0.5)
+ {
+ std::swap(a, b);
+ std::swap(p, q);
+ std::swap(x, y);
+ invert = !invert;
+ T l = 1 - upper;
+ T u = 1 - lower;
+ lower = l;
+ upper = u;
+ }
+ //
+ // lower bound for our search:
+ //
+ // We're not interested in denormalised answers as these tend to
+ // these tend to take up lots of iterations, given that we can't get
+ // accurate derivatives in this area (they tend to be infinite).
+ //
+ if(lower == 0)
+ {
+ if(invert && (py == 0))
+ {
+ //
+ // We're not interested in answers smaller than machine epsilon:
+ //
+ lower = boost::math::tools::epsilon<T>();
+ if(x < lower)
+ x = lower;
+ }
+ else
+ lower = boost::math::tools::min_value<T>();
+ if(x < lower)
+ x = lower;
+ }
+ //
+ // Figure out how many digits to iterate towards:
+ //
+ int digits = boost::math::policies::digits<T, Policy>() / 2;
+ if((x < 1e-50) && ((a < 1) || (b < 1)))
+ {
+ //
+ // If we're in a region where the first derivative is very
+ // large, then we have to take care that the root-finder
+ // doesn't terminate prematurely. We'll bump the precision
+ // up to avoid this, but we have to take care not to set the
+ // precision too high or the last few iterations will just
+ // thrash around and convergence may be slow in this case.
+ // Try 3/4 of machine epsilon:
+ //
+ digits *= 3;
+ digits /= 2;
+ }
+ //
+ // Now iterate, we can use either p or q as the target here
+ // depending on which is smaller:
+ //
+ boost::uintmax_t max_iter = policies::get_max_root_iterations<Policy>();
+ x = boost::math::tools::halley_iterate(
+ boost::math::detail::ibeta_roots<T, Policy>(a, b, (p < q ? p : q), (p < q ? false : true)), x, lower, upper, digits, max_iter);
+ policies::check_root_iterations<T>("boost::math::ibeta<%1%>(%1%, %1%, %1%)", max_iter, pol);
+ //
+ // We don't really want these asserts here, but they are useful for sanity
+ // checking that we have the limits right, uncomment if you suspect bugs *only*.
+ //
+ //BOOST_ASSERT(x != upper);
+ //BOOST_ASSERT((x != lower) || (x == boost::math::tools::min_value<T>()) || (x == boost::math::tools::epsilon<T>()));
+ //
+ // Tidy up, if we "lower" was too high then zero is the best answer we have:
+ //
+ if(x == lower)
+ x = 0;
+ if(py)
+ *py = invert ? x : 1 - x;
+ return invert ? 1-x : x;
+}
+
+} // namespace detail
+
+template <class T1, class T2, class T3, class T4, class Policy>
+inline typename tools::promote_args<T1, T2, T3, T4>::type
+ ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy& pol)
+{
+ static const char* function = "boost::math::ibeta_inv<%1%>(%1%,%1%,%1%)";
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T1, T2, T3, T4>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ if(a <= 0)
+ return policies::raise_domain_error<result_type>(function, "The argument a to the incomplete beta function inverse must be greater than zero (got a=%1%).", a, pol);
+ if(b <= 0)
+ return policies::raise_domain_error<result_type>(function, "The argument b to the incomplete beta function inverse must be greater than zero (got b=%1%).", b, pol);
+ if((p < 0) || (p > 1))
+ return policies::raise_domain_error<result_type>(function, "Argument p outside the range [0,1] in the incomplete beta function inverse (got p=%1%).", p, pol);
+
+ value_type rx, ry;
+
+ rx = detail::ibeta_inv_imp(
+ static_cast<value_type>(a),
+ static_cast<value_type>(b),
+ static_cast<value_type>(p),
+ static_cast<value_type>(1 - p),
+ forwarding_policy(), &ry);
+
+ if(py) *py = policies::checked_narrowing_cast<T4, forwarding_policy>(ry, function);
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(rx, function);
+}
+
+template <class T1, class T2, class T3, class T4>
+inline typename tools::promote_args<T1, T2, T3, T4>::type
+ ibeta_inv(T1 a, T2 b, T3 p, T4* py)
+{
+ return ibeta_inv(a, b, p, py, policies::policy<>());
+}
+
+template <class T1, class T2, class T3>
+inline typename tools::promote_args<T1, T2, T3>::type
+ ibeta_inv(T1 a, T2 b, T3 p)
+{
+ typedef typename tools::promote_args<T1, T2, T3>::type result_type;
+ return ibeta_inv(a, b, p, static_cast<result_type*>(0), policies::policy<>());
+}
+
+template <class T1, class T2, class T3, class Policy>
+inline typename tools::promote_args<T1, T2, T3>::type
+ ibeta_inv(T1 a, T2 b, T3 p, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2, T3>::type result_type;
+ return ibeta_inv(a, b, p, static_cast<result_type*>(0), pol);
+}
+
+template <class T1, class T2, class T3, class T4, class Policy>
+inline typename tools::promote_args<T1, T2, T3, T4>::type
+ ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy& pol)
+{
+ static const char* function = "boost::math::ibetac_inv<%1%>(%1%,%1%,%1%)";
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T1, T2, T3, T4>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ if(a <= 0)
+ policies::raise_domain_error<result_type>(function, "The argument a to the incomplete beta function inverse must be greater than zero (got a=%1%).", a, pol);
+ if(b <= 0)
+ policies::raise_domain_error<result_type>(function, "The argument b to the incomplete beta function inverse must be greater than zero (got b=%1%).", b, pol);
+ if((q < 0) || (q > 1))
+ policies::raise_domain_error<result_type>(function, "Argument q outside the range [0,1] in the incomplete beta function inverse (got q=%1%).", q, pol);
+
+ value_type rx, ry;
+
+ rx = detail::ibeta_inv_imp(
+ static_cast<value_type>(a),
+ static_cast<value_type>(b),
+ static_cast<value_type>(1 - q),
+ static_cast<value_type>(q),
+ forwarding_policy(), &ry);
+
+ if(py) *py = policies::checked_narrowing_cast<T4, forwarding_policy>(ry, function);
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(rx, function);
+}
+
+template <class T1, class T2, class T3, class T4>
+inline typename tools::promote_args<T1, T2, T3, T4>::type
+ ibetac_inv(T1 a, T2 b, T3 q, T4* py)
+{
+ return ibetac_inv(a, b, q, py, policies::policy<>());
+}
+
+template <class RT1, class RT2, class RT3>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibetac_inv(RT1 a, RT2 b, RT3 q)
+{
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ return ibetac_inv(a, b, q, static_cast<result_type*>(0), policies::policy<>());
+}
+
+template <class RT1, class RT2, class RT3, class Policy>
+inline typename tools::promote_args<RT1, RT2, RT3>::type
+ ibetac_inv(RT1 a, RT2 b, RT3 q, const Policy& pol)
+{
+ typedef typename tools::promote_args<RT1, RT2, RT3>::type result_type;
+ return ibetac_inv(a, b, q, static_cast<result_type*>(0), pol);
+}
+
+} // namespace math
+} // namespace boost
+
+#endif // BOOST_MATH_SPECIAL_FUNCTIONS_IGAMMA_INVERSE_HPP
+
+
+
+
--- /dev/null
+// Copyright (c) 2009 John Maddock
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_ICONV_HPP
+#define BOOST_MATH_ICONV_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/round.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+
+namespace boost { namespace math { namespace detail{
+
+template <class T, class Policy>
+inline int iconv_imp(T v, Policy const&, mpl::true_ const&)
+{
+ return static_cast<int>(v);
+}
+
+template <class T, class Policy>
+inline int iconv_imp(T v, Policy const& pol, mpl::false_ const&)
+{
+ BOOST_MATH_STD_USING
+ return iround(v, pol);
+}
+
+template <class T, class Policy>
+inline int iconv(T v, Policy const& pol)
+{
+ typedef typename boost::is_convertible<T, int>::type tag_type;
+ return iconv_imp(v, pol, tag_type());
+}
+
+
+}}} // namespaces
+
+#endif // BOOST_MATH_ICONV_HPP
+
#pragma once
#endif
-#include <boost/tr1/tuple.hpp>
+#include <boost/math/tools/tuple.hpp>
#include <boost/math/special_functions/gamma.hpp>
#include <boost/math/special_functions/sign.hpp>
#include <boost/math/tools/roots.hpp>
BOOST_MATH_INSTRUMENT_VARIABLE(b);
if((b > 0.6) || ((b >= 0.45) && (a >= 0.3)))
{
- // DiDonato & Morris Eq 21:
+ // DiDonato & Morris Eq 21:
//
// There is a slight variation from DiDonato and Morris here:
// the first form given here is unstable when p is close to 1,
{
T z = w;
T ap1 = a + 1;
+ T ap2 = a + 2;
if(w < 0.15f * ap1)
{
// DiDonato and Morris Eq 35:
T v = log(p) + boost::math::lgamma(ap1, pol);
- T s = 1;
z = exp((v + w) / a);
- s = boost::math::log1p(z / ap1 * (1 + z / (a + 2)));
+ s = boost::math::log1p(z / ap1 * (1 + z / ap2));
z = exp((v + z - s) / a);
+ s = boost::math::log1p(z / ap1 * (1 + z / ap2));
z = exp((v + z - s) / a);
- s = boost::math::log1p(z / ap1 * (1 + z / (a + 2) * (1 + z / (a + 3))));
+ s = boost::math::log1p(z / ap1 * (1 + z / ap2 * (1 + z / (a + 3))));
z = exp((v + z - s) / a);
BOOST_MATH_INSTRUMENT_VARIABLE(z);
}
}
}
- std::tr1::tuple<T, T, T> operator()(const T& x)const
+ boost::math::tuple<T, T, T> operator()(const T& x)const
{
BOOST_FPU_EXCEPTION_GUARD
//
// flag is set, then Q(x) - q and it's derivatives.
//
typedef typename policies::evaluation<T, Policy>::type value_type;
- typedef typename lanczos::lanczos<T, Policy>::type evaluation_type;
+ // typedef typename lanczos::lanczos<T, Policy>::type evaluation_type;
typedef typename policies::normalise<
Policy,
policies::promote_float<false>,
f2 = -f2;
}
- return std::tr1::make_tuple(f - p, f1, f2);
+ return boost::math::make_tuple(static_cast<T>(f - p), f1, f2);
}
private:
T a, p;
tools::max_value<T>(),
digits,
max_iter);
- policies::check_root_iterations(function, max_iter, pol);
+ policies::check_root_iterations<T>(function, max_iter, pol);
BOOST_MATH_INSTRUMENT_VARIABLE(guess);
if(guess == lower)
guess = policies::raise_underflow_error<T>(function, "Expected result known to be non-zero, but is smaller than the smallest available number.", pol);
tools::max_value<T>(),
digits,
max_iter);
- policies::check_root_iterations(function, max_iter, pol);
+ policies::check_root_iterations<T>(function, max_iter, pol);
if(guess == lower)
guess = policies::raise_underflow_error<T>(function, "Expected result known to be non-zero, but is smaller than the smallest available number.", pol);
return guess;
T workspace[13];
static const T C0[] = {
- -0.333333333333333333333L,
- 0.0833333333333333333333L,
- -0.0148148148148148148148L,
- 0.00115740740740740740741L,
- 0.000352733686067019400353L,
- -0.0001787551440329218107L,
- 0.39192631785224377817e-4L,
- -0.218544851067999216147e-5L,
- -0.18540622107151599607e-5L,
- 0.829671134095308600502e-6L,
- -0.176659527368260793044e-6L,
- 0.670785354340149858037e-8L,
- 0.102618097842403080426e-7L,
- -0.438203601845335318655e-8L,
- 0.914769958223679023418e-9L,
- -0.255141939949462497669e-10L,
- -0.583077213255042506746e-10L,
- 0.243619480206674162437e-10L,
- -0.502766928011417558909e-11L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0833333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0148148148148148148148),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00115740740740740740741),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000352733686067019400353),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0001787551440329218107),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.39192631785224377817e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.218544851067999216147e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.18540622107151599607e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.829671134095308600502e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.176659527368260793044e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.670785354340149858037e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.102618097842403080426e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.438203601845335318655e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.914769958223679023418e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.255141939949462497669e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.583077213255042506746e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.243619480206674162437e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.502766928011417558909e-11),
};
workspace[0] = tools::evaluate_polynomial(C0, z);
static const T C1[] = {
- -0.00185185185185185185185L,
- -0.00347222222222222222222L,
- 0.00264550264550264550265L,
- -0.000990226337448559670782L,
- 0.000205761316872427983539L,
- -0.40187757201646090535e-6L,
- -0.18098550334489977837e-4L,
- 0.764916091608111008464e-5L,
- -0.161209008945634460038e-5L,
- 0.464712780280743434226e-8L,
- 0.137863344691572095931e-6L,
- -0.575254560351770496402e-7L,
- 0.119516285997781473243e-7L,
- -0.175432417197476476238e-10L,
- -0.100915437106004126275e-8L,
- 0.416279299184258263623e-9L,
- -0.856390702649298063807e-10L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00185185185185185185185),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00347222222222222222222),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00264550264550264550265),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000990226337448559670782),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000205761316872427983539),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.40187757201646090535e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.18098550334489977837e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.764916091608111008464e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.161209008945634460038e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.464712780280743434226e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.137863344691572095931e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.575254560351770496402e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.119516285997781473243e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.175432417197476476238e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.100915437106004126275e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.416279299184258263623e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.856390702649298063807e-10),
};
workspace[1] = tools::evaluate_polynomial(C1, z);
static const T C2[] = {
- 0.00413359788359788359788L,
- -0.00268132716049382716049L,
- 0.000771604938271604938272L,
- 0.200938786008230452675e-5L,
- -0.000107366532263651605215L,
- 0.529234488291201254164e-4L,
- -0.127606351886187277134e-4L,
- 0.342357873409613807419e-7L,
- 0.137219573090629332056e-5L,
- -0.629899213838005502291e-6L,
- 0.142806142060642417916e-6L,
- -0.204770984219908660149e-9L,
- -0.140925299108675210533e-7L,
- 0.622897408492202203356e-8L,
- -0.136704883966171134993e-8L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00413359788359788359788),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00268132716049382716049),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000771604938271604938272),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.200938786008230452675e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000107366532263651605215),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.529234488291201254164e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.127606351886187277134e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.342357873409613807419e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.137219573090629332056e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.629899213838005502291e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.142806142060642417916e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.204770984219908660149e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.140925299108675210533e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.622897408492202203356e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.136704883966171134993e-8),
};
workspace[2] = tools::evaluate_polynomial(C2, z);
static const T C3[] = {
- 0.000649434156378600823045L,
- 0.000229472093621399176955L,
- -0.000469189494395255712128L,
- 0.000267720632062838852962L,
- -0.756180167188397641073e-4L,
- -0.239650511386729665193e-6L,
- 0.110826541153473023615e-4L,
- -0.56749528269915965675e-5L,
- 0.142309007324358839146e-5L,
- -0.278610802915281422406e-10L,
- -0.169584040919302772899e-6L,
- 0.809946490538808236335e-7L,
- -0.191111684859736540607e-7L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000649434156378600823045),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000229472093621399176955),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000469189494395255712128),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000267720632062838852962),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.756180167188397641073e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.239650511386729665193e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.110826541153473023615e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.56749528269915965675e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.142309007324358839146e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.278610802915281422406e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.169584040919302772899e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.809946490538808236335e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.191111684859736540607e-7),
};
workspace[3] = tools::evaluate_polynomial(C3, z);
static const T C4[] = {
- -0.000861888290916711698605L,
- 0.000784039221720066627474L,
- -0.000299072480303190179733L,
- -0.146384525788434181781e-5L,
- 0.664149821546512218666e-4L,
- -0.396836504717943466443e-4L,
- 0.113757269706784190981e-4L,
- 0.250749722623753280165e-9L,
- -0.169541495365583060147e-5L,
- 0.890750753220530968883e-6L,
- -0.229293483400080487057e-6L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000861888290916711698605),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000784039221720066627474),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000299072480303190179733),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.146384525788434181781e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.664149821546512218666e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.396836504717943466443e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.113757269706784190981e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.250749722623753280165e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.169541495365583060147e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.890750753220530968883e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.229293483400080487057e-6),
};
workspace[4] = tools::evaluate_polynomial(C4, z);
static const T C5[] = {
- -0.000336798553366358150309L,
- -0.697281375836585777429e-4L,
- 0.000277275324495939207873L,
- -0.000199325705161888477003L,
- 0.679778047793720783882e-4L,
- 0.141906292064396701483e-6L,
- -0.135940481897686932785e-4L,
- 0.801847025633420153972e-5L,
- -0.229148117650809517038e-5L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000336798553366358150309),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.697281375836585777429e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000277275324495939207873),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000199325705161888477003),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.679778047793720783882e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.141906292064396701483e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.135940481897686932785e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.801847025633420153972e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.229148117650809517038e-5),
};
workspace[5] = tools::evaluate_polynomial(C5, z);
static const T C6[] = {
- 0.000531307936463992223166L,
- -0.000592166437353693882865L,
- 0.000270878209671804482771L,
- 0.790235323266032787212e-6L,
- -0.815396936756196875093e-4L,
- 0.561168275310624965004e-4L,
- -0.183291165828433755673e-4L,
- -0.307961345060330478256e-8L,
- 0.346515536880360908674e-5L,
- -0.20291327396058603727e-5L,
- 0.57887928631490037089e-6L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000531307936463992223166),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000592166437353693882865),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000270878209671804482771),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.790235323266032787212e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.815396936756196875093e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.561168275310624965004e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.183291165828433755673e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.307961345060330478256e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.346515536880360908674e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.20291327396058603727e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.57887928631490037089e-6),
};
workspace[6] = tools::evaluate_polynomial(C6, z);
static const T C7[] = {
- 0.000344367606892377671254L,
- 0.517179090826059219337e-4L,
- -0.000334931610811422363117L,
- 0.000281269515476323702274L,
- -0.000109765822446847310235L,
- -0.127410090954844853795e-6L,
- 0.277444515115636441571e-4L,
- -0.182634888057113326614e-4L,
- 0.578769494973505239894e-5L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000344367606892377671254),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.517179090826059219337e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000334931610811422363117),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000281269515476323702274),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000109765822446847310235),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.127410090954844853795e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.277444515115636441571e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.182634888057113326614e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.578769494973505239894e-5),
};
workspace[7] = tools::evaluate_polynomial(C7, z);
static const T C8[] = {
- -0.000652623918595309418922L,
- 0.000839498720672087279993L,
- -0.000438297098541721005061L,
- -0.696909145842055197137e-6L,
- 0.000166448466420675478374L,
- -0.000127835176797692185853L,
- 0.462995326369130429061e-4L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000652623918595309418922),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000839498720672087279993),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000438297098541721005061),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.696909145842055197137e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000166448466420675478374),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000127835176797692185853),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.462995326369130429061e-4),
};
workspace[8] = tools::evaluate_polynomial(C8, z);
static const T C9[] = {
- -0.000596761290192746250124L,
- -0.720489541602001055909e-4L,
- 0.000678230883766732836162L,
- -0.0006401475260262758451L,
- 0.000277501076343287044992L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000596761290192746250124),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.720489541602001055909e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000678230883766732836162),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0006401475260262758451),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000277501076343287044992),
};
workspace[9] = tools::evaluate_polynomial(C9, z);
static const T C10[] = {
- 0.00133244544948006563713L,
- -0.0019144384985654775265L,
- 0.00110893691345966373396L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00133244544948006563713),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0019144384985654775265),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00110893691345966373396),
};
workspace[10] = tools::evaluate_polynomial(C10, z);
static const T C11[] = {
- 0.00157972766073083495909L,
- 0.000162516262783915816899L,
- -0.00206334210355432762645L,
- 0.00213896861856890981541L,
- -0.00101085593912630031708L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00157972766073083495909),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000162516262783915816899),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00206334210355432762645),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00213896861856890981541),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00101085593912630031708),
};
workspace[11] = tools::evaluate_polynomial(C11, z);
static const T C12[] = {
- -0.00407251211951401664727L,
- 0.00640336283380806979482L,
- -0.00404101610816766177474L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00407251211951401664727),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00640336283380806979482),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00404101610816766177474),
};
workspace[12] = tools::evaluate_polynomial(C12, z);
- T result = tools::evaluate_polynomial(workspace, 1/a);
+ T result = tools::evaluate_polynomial<13, T, T>(workspace, 1/a);
result *= exp(-y) / sqrt(2 * constants::pi<T>() * a);
if(x < a)
result = -result;
workspace[8] = tools::evaluate_polynomial(C8, z);
workspace[9] = static_cast<T>(-0.00059676129019274625L);
- T result = tools::evaluate_polynomial(workspace, 1/a);
+ T result = tools::evaluate_polynomial<10, T, T>(workspace, 1/a);
result *= exp(-y) / sqrt(2 * constants::pi<T>() * a);
if(x < a)
result = -result;
T workspace[14];
static const T C0[] = {
- -0.333333333333333333333333333333333333L,
- 0.0833333333333333333333333333333333333L,
- -0.0148148148148148148148148148148148148L,
- 0.00115740740740740740740740740740740741L,
- 0.0003527336860670194003527336860670194L,
- -0.000178755144032921810699588477366255144L,
- 0.391926317852243778169704095630021556e-4L,
- -0.218544851067999216147364295512443661e-5L,
- -0.185406221071515996070179883622956325e-5L,
- 0.829671134095308600501624213166443227e-6L,
- -0.17665952736826079304360054245742403e-6L,
- 0.670785354340149858036939710029613572e-8L,
- 0.102618097842403080425739573227252951e-7L,
- -0.438203601845335318655297462244719123e-8L,
- 0.914769958223679023418248817633113681e-9L,
- -0.255141939949462497668779537993887013e-10L,
- -0.583077213255042506746408945040035798e-10L,
- 0.243619480206674162436940696707789943e-10L,
- -0.502766928011417558909054985925744366e-11L,
- 0.110043920319561347708374174497293411e-12L,
- 0.337176326240098537882769884169200185e-12L,
- -0.13923887224181620659193661848957998e-12L,
- 0.285348938070474432039669099052828299e-13L,
- -0.513911183424257261899064580300494205e-15L,
- -0.197522882943494428353962401580710912e-14L,
- 0.809952115670456133407115668702575255e-15L,
- -0.165225312163981618191514820265351162e-15L,
- 0.253054300974788842327061090060267385e-17L,
- 0.116869397385595765888230876507793475e-16L,
- -0.477003704982048475822167804084816597e-17L,
- 0.969912605905623712420709685898585354e-18L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0833333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0148148148148148148148148148148148148),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00115740740740740740740740740740740741),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0003527336860670194003527336860670194),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000178755144032921810699588477366255144),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.391926317852243778169704095630021556e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.218544851067999216147364295512443661e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.185406221071515996070179883622956325e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.829671134095308600501624213166443227e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.17665952736826079304360054245742403e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.670785354340149858036939710029613572e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.102618097842403080425739573227252951e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.438203601845335318655297462244719123e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.914769958223679023418248817633113681e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.255141939949462497668779537993887013e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.583077213255042506746408945040035798e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.243619480206674162436940696707789943e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.502766928011417558909054985925744366e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.110043920319561347708374174497293411e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.337176326240098537882769884169200185e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.13923887224181620659193661848957998e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.285348938070474432039669099052828299e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.513911183424257261899064580300494205e-15),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.197522882943494428353962401580710912e-14),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.809952115670456133407115668702575255e-15),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.165225312163981618191514820265351162e-15),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.253054300974788842327061090060267385e-17),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.116869397385595765888230876507793475e-16),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.477003704982048475822167804084816597e-17),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.969912605905623712420709685898585354e-18),
};
workspace[0] = tools::evaluate_polynomial(C0, z);
static const T C1[] = {
- -0.00185185185185185185185185185185185185L,
- -0.00347222222222222222222222222222222222L,
- 0.0026455026455026455026455026455026455L,
- -0.000990226337448559670781893004115226337L,
- 0.000205761316872427983539094650205761317L,
- -0.401877572016460905349794238683127572e-6L,
- -0.180985503344899778370285914867533523e-4L,
- 0.76491609160811100846374214980916921e-5L,
- -0.16120900894563446003775221882217767e-5L,
- 0.464712780280743434226135033938722401e-8L,
- 0.137863344691572095931187533077488877e-6L,
- -0.575254560351770496402194531835048307e-7L,
- 0.119516285997781473243076536699698169e-7L,
- -0.175432417197476476237547551202312502e-10L,
- -0.100915437106004126274577504686681675e-8L,
- 0.416279299184258263623372347219858628e-9L,
- -0.856390702649298063807431562579670208e-10L,
- 0.606721510160475861512701762169919581e-13L,
- 0.716249896481148539007961017165545733e-11L,
- -0.293318664377143711740636683615595403e-11L,
- 0.599669636568368872330374527568788909e-12L,
- -0.216717865273233141017100472779701734e-15L,
- -0.497833997236926164052815522048108548e-13L,
- 0.202916288237134247736694804325894226e-13L,
- -0.413125571381061004935108332558187111e-14L,
- 0.828651623988309644380188591057589316e-18L,
- 0.341003088693333279336339355910600992e-15L,
- -0.138541953028939715357034547426313703e-15L,
- 0.281234665322887466568860332727259483e-16L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00185185185185185185185185185185185185),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00347222222222222222222222222222222222),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0026455026455026455026455026455026455),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000990226337448559670781893004115226337),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000205761316872427983539094650205761317),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.401877572016460905349794238683127572e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.180985503344899778370285914867533523e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.76491609160811100846374214980916921e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.16120900894563446003775221882217767e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.464712780280743434226135033938722401e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.137863344691572095931187533077488877e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.575254560351770496402194531835048307e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.119516285997781473243076536699698169e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.175432417197476476237547551202312502e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.100915437106004126274577504686681675e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.416279299184258263623372347219858628e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.856390702649298063807431562579670208e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.606721510160475861512701762169919581e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.716249896481148539007961017165545733e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.293318664377143711740636683615595403e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.599669636568368872330374527568788909e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.216717865273233141017100472779701734e-15),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.497833997236926164052815522048108548e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.202916288237134247736694804325894226e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.413125571381061004935108332558187111e-14),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.828651623988309644380188591057589316e-18),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.341003088693333279336339355910600992e-15),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.138541953028939715357034547426313703e-15),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.281234665322887466568860332727259483e-16),
};
workspace[1] = tools::evaluate_polynomial(C1, z);
static const T C2[] = {
- 0.0041335978835978835978835978835978836L,
- -0.00268132716049382716049382716049382716L,
- 0.000771604938271604938271604938271604938L,
- 0.200938786008230452674897119341563786e-5L,
- -0.000107366532263651605215391223621676297L,
- 0.529234488291201254164217127180090143e-4L,
- -0.127606351886187277133779191392360117e-4L,
- 0.34235787340961380741902003904747389e-7L,
- 0.137219573090629332055943852926020279e-5L,
- -0.629899213838005502290672234278391876e-6L,
- 0.142806142060642417915846008822771748e-6L,
- -0.204770984219908660149195854409200226e-9L,
- -0.140925299108675210532930244154315272e-7L,
- 0.622897408492202203356394293530327112e-8L,
- -0.136704883966171134992724380284402402e-8L,
- 0.942835615901467819547711211663208075e-12L,
- 0.128722524000893180595479368872770442e-9L,
- -0.556459561343633211465414765894951439e-10L,
- 0.119759355463669810035898150310311343e-10L,
- -0.416897822518386350403836626692480096e-14L,
- -0.109406404278845944099299008640802908e-11L,
- 0.4662239946390135746326204922464679e-12L,
- -0.990510576390690597844122258212382301e-13L,
- 0.189318767683735145056885183170630169e-16L,
- 0.885922187259112726176031067028740667e-14L,
- -0.373782039804640545306560251777191937e-14L,
- 0.786883363903515525774088394065960751e-15L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0041335978835978835978835978835978836),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00268132716049382716049382716049382716),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000771604938271604938271604938271604938),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.200938786008230452674897119341563786e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000107366532263651605215391223621676297),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.529234488291201254164217127180090143e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.127606351886187277133779191392360117e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.34235787340961380741902003904747389e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.137219573090629332055943852926020279e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.629899213838005502290672234278391876e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.142806142060642417915846008822771748e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.204770984219908660149195854409200226e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.140925299108675210532930244154315272e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.622897408492202203356394293530327112e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.136704883966171134992724380284402402e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.942835615901467819547711211663208075e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.128722524000893180595479368872770442e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.556459561343633211465414765894951439e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.119759355463669810035898150310311343e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.416897822518386350403836626692480096e-14),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.109406404278845944099299008640802908e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.4662239946390135746326204922464679e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.990510576390690597844122258212382301e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.189318767683735145056885183170630169e-16),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.885922187259112726176031067028740667e-14),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.373782039804640545306560251777191937e-14),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.786883363903515525774088394065960751e-15),
};
workspace[2] = tools::evaluate_polynomial(C2, z);
static const T C3[] = {
- 0.000649434156378600823045267489711934156L,
- 0.000229472093621399176954732510288065844L,
- -0.000469189494395255712128140111679206329L,
- 0.000267720632062838852962309752433209223L,
- -0.756180167188397641072538191879755666e-4L,
- -0.239650511386729665193314027333231723e-6L,
- 0.110826541153473023614770299726861227e-4L,
- -0.567495282699159656749963105701560205e-5L,
- 0.14230900732435883914551894470580433e-5L,
- -0.278610802915281422405802158211174452e-10L,
- -0.16958404091930277289864168795820267e-6L,
- 0.809946490538808236335278504852724081e-7L,
- -0.191111684859736540606728140872727635e-7L,
- 0.239286204398081179686413514022282056e-11L,
- 0.206201318154887984369925818486654549e-8L,
- -0.946049666185513217375417988510192814e-9L,
- 0.215410497757749078380130268468744512e-9L,
- -0.138882333681390304603424682490735291e-13L,
- -0.218947616819639394064123400466489455e-10L,
- 0.979099895117168512568262802255883368e-11L,
- -0.217821918801809621153859472011393244e-11L,
- 0.62088195734079014258166361684972205e-16L,
- 0.212697836327973697696702537114614471e-12L,
- -0.934468879151743333127396765626749473e-13L,
- 0.204536712267828493249215913063207436e-13L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000649434156378600823045267489711934156),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000229472093621399176954732510288065844),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000469189494395255712128140111679206329),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000267720632062838852962309752433209223),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.756180167188397641072538191879755666e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.239650511386729665193314027333231723e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.110826541153473023614770299726861227e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.567495282699159656749963105701560205e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.14230900732435883914551894470580433e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.278610802915281422405802158211174452e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.16958404091930277289864168795820267e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.809946490538808236335278504852724081e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.191111684859736540606728140872727635e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.239286204398081179686413514022282056e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.206201318154887984369925818486654549e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.946049666185513217375417988510192814e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.215410497757749078380130268468744512e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.138882333681390304603424682490735291e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.218947616819639394064123400466489455e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.979099895117168512568262802255883368e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.217821918801809621153859472011393244e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.62088195734079014258166361684972205e-16),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.212697836327973697696702537114614471e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.934468879151743333127396765626749473e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.204536712267828493249215913063207436e-13),
};
workspace[3] = tools::evaluate_polynomial(C3, z);
static const T C4[] = {
- -0.000861888290916711698604702719929057378L,
- 0.00078403922172006662747403488144228885L,
- -0.000299072480303190179733389609932819809L,
- -0.146384525788434181781232535690697556e-5L,
- 0.664149821546512218665853782451862013e-4L,
- -0.396836504717943466443123507595386882e-4L,
- 0.113757269706784190980552042885831759e-4L,
- 0.250749722623753280165221942390057007e-9L,
- -0.169541495365583060147164356781525752e-5L,
- 0.890750753220530968882898422505515924e-6L,
- -0.229293483400080487057216364891158518e-6L,
- 0.295679413754404904696572852500004588e-10L,
- 0.288658297427087836297341274604184504e-7L,
- -0.141897394378032193894774303903982717e-7L,
- 0.344635804994648970659527720474194356e-8L,
- -0.230245171745280671320192735850147087e-12L,
- -0.394092330280464052750697640085291799e-9L,
- 0.186023389685045019134258533045185639e-9L,
- -0.435632300505661804380678327446262424e-10L,
- 0.127860010162962312660550463349930726e-14L,
- 0.467927502665791946200382739991760062e-11L,
- -0.214924647061348285410535341910721086e-11L,
- 0.490881561480965216323649688463984082e-12L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000861888290916711698604702719929057378),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00078403922172006662747403488144228885),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000299072480303190179733389609932819809),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.146384525788434181781232535690697556e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.664149821546512218665853782451862013e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.396836504717943466443123507595386882e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.113757269706784190980552042885831759e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.250749722623753280165221942390057007e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.169541495365583060147164356781525752e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.890750753220530968882898422505515924e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.229293483400080487057216364891158518e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.295679413754404904696572852500004588e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.288658297427087836297341274604184504e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.141897394378032193894774303903982717e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.344635804994648970659527720474194356e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.230245171745280671320192735850147087e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.394092330280464052750697640085291799e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.186023389685045019134258533045185639e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.435632300505661804380678327446262424e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.127860010162962312660550463349930726e-14),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.467927502665791946200382739991760062e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.214924647061348285410535341910721086e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.490881561480965216323649688463984082e-12),
};
workspace[4] = tools::evaluate_polynomial(C4, z);
static const T C5[] = {
- -0.000336798553366358150308767592718210002L,
- -0.697281375836585777429398828575783308e-4L,
- 0.00027727532449593920787336425196507501L,
- -0.000199325705161888477003360405280844238L,
- 0.679778047793720783881640176604435742e-4L,
- 0.141906292064396701483392727105575757e-6L,
- -0.135940481897686932784583938837504469e-4L,
- 0.80184702563342015397192571980419684e-5L,
- -0.229148117650809517038048790128781806e-5L,
- -0.325247355129845395166230137750005047e-9L,
- 0.346528464910852649559195496827579815e-6L,
- -0.184471871911713432765322367374920978e-6L,
- 0.482409670378941807563762631738989002e-7L,
- -0.179894667217435153025754291716644314e-13L,
- -0.630619450001352343517516981425944698e-8L,
- 0.316241762877456793773762181540969623e-8L,
- -0.784092425369742929000839303523267545e-9L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000336798553366358150308767592718210002),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.697281375836585777429398828575783308e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00027727532449593920787336425196507501),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000199325705161888477003360405280844238),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.679778047793720783881640176604435742e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.141906292064396701483392727105575757e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.135940481897686932784583938837504469e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.80184702563342015397192571980419684e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.229148117650809517038048790128781806e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.325247355129845395166230137750005047e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.346528464910852649559195496827579815e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.184471871911713432765322367374920978e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.482409670378941807563762631738989002e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.179894667217435153025754291716644314e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.630619450001352343517516981425944698e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.316241762877456793773762181540969623e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.784092425369742929000839303523267545e-9),
};
workspace[5] = tools::evaluate_polynomial(C5, z);
static const T C6[] = {
- 0.00053130793646399222316574854297762391L,
- -0.000592166437353693882864836225604401187L,
- 0.000270878209671804482771279183488328692L,
- 0.790235323266032787212032944390816666e-6L,
- -0.815396936756196875092890088464682624e-4L,
- 0.561168275310624965003775619041471695e-4L,
- -0.183291165828433755673259749374098313e-4L,
- -0.307961345060330478256414192546677006e-8L,
- 0.346515536880360908673728529745376913e-5L,
- -0.202913273960586037269527254582695285e-5L,
- 0.578879286314900370889997586203187687e-6L,
- 0.233863067382665698933480579231637609e-12L,
- -0.88286007463304835250508524317926246e-7L,
- 0.474359588804081278032150770595852426e-7L,
- -0.125454150207103824457130611214783073e-7L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00053130793646399222316574854297762391),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000592166437353693882864836225604401187),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000270878209671804482771279183488328692),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.790235323266032787212032944390816666e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.815396936756196875092890088464682624e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.561168275310624965003775619041471695e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.183291165828433755673259749374098313e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.307961345060330478256414192546677006e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.346515536880360908673728529745376913e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.202913273960586037269527254582695285e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.578879286314900370889997586203187687e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.233863067382665698933480579231637609e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.88286007463304835250508524317926246e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.474359588804081278032150770595852426e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.125454150207103824457130611214783073e-7),
};
workspace[6] = tools::evaluate_polynomial(C6, z);
static const T C7[] = {
- 0.000344367606892377671254279625108523655L,
- 0.517179090826059219337057843002058823e-4L,
- -0.000334931610811422363116635090580012327L,
- 0.000281269515476323702273722110707777978L,
- -0.000109765822446847310235396824500789005L,
- -0.127410090954844853794579954588107623e-6L,
- 0.277444515115636441570715073933712622e-4L,
- -0.182634888057113326614324442681892723e-4L,
- 0.578769494973505239894178121070843383e-5L,
- 0.493875893393627039981813418398565502e-9L,
- -0.105953670140260427338098566209633945e-5L,
- 0.616671437611040747858836254004890765e-6L,
- -0.175629733590604619378669693914265388e-6L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000344367606892377671254279625108523655),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.517179090826059219337057843002058823e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000334931610811422363116635090580012327),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000281269515476323702273722110707777978),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000109765822446847310235396824500789005),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.127410090954844853794579954588107623e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.277444515115636441570715073933712622e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.182634888057113326614324442681892723e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.578769494973505239894178121070843383e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.493875893393627039981813418398565502e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.105953670140260427338098566209633945e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.616671437611040747858836254004890765e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.175629733590604619378669693914265388e-6),
};
workspace[7] = tools::evaluate_polynomial(C7, z);
static const T C8[] = {
- -0.000652623918595309418922034919726622692L,
- 0.000839498720672087279993357516764983445L,
- -0.000438297098541721005061087953050560377L,
- -0.696909145842055197136911097362072702e-6L,
- 0.00016644846642067547837384572662326101L,
- -0.000127835176797692185853344001461664247L,
- 0.462995326369130429061361032704489636e-4L,
- 0.455790986792270771162749294232219616e-8L,
- -0.105952711258051954718238500312872328e-4L,
- 0.678334290486516662273073740749269432e-5L,
- -0.210754766662588042469972680229376445e-5L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000652623918595309418922034919726622692),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000839498720672087279993357516764983445),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000438297098541721005061087953050560377),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.696909145842055197136911097362072702e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00016644846642067547837384572662326101),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000127835176797692185853344001461664247),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.462995326369130429061361032704489636e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.455790986792270771162749294232219616e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.105952711258051954718238500312872328e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.678334290486516662273073740749269432e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.210754766662588042469972680229376445e-5),
};
workspace[8] = tools::evaluate_polynomial(C8, z);
static const T C9[] = {
- -0.000596761290192746250124390067179459605L,
- -0.720489541602001055908571930225015052e-4L,
- 0.000678230883766732836161951166000673426L,
- -0.000640147526026275845100045652582354779L,
- 0.000277501076343287044992374518205845463L,
- 0.181970083804651510461686554030325202e-6L,
- -0.847950711706850318239732559632810086e-4L,
- 0.610519208250153101764709122740859458e-4L,
- -0.210739201834048624082975255893773306e-4L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000596761290192746250124390067179459605),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.720489541602001055908571930225015052e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000678230883766732836161951166000673426),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000640147526026275845100045652582354779),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000277501076343287044992374518205845463),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.181970083804651510461686554030325202e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.847950711706850318239732559632810086e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.610519208250153101764709122740859458e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.210739201834048624082975255893773306e-4),
};
workspace[9] = tools::evaluate_polynomial(C9, z);
static const T C10[] = {
- 0.00133244544948006563712694993432717968L,
- -0.00191443849856547752650089885832852254L,
- 0.0011089369134596637339607446329267522L,
- 0.993240412264229896742295262075817566e-6L,
- -0.000508745012930931989848393025305956774L,
- 0.00042735056665392884328432271160040444L,
- -0.000168588537679107988033552814662382059L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00133244544948006563712694993432717968),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00191443849856547752650089885832852254),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0011089369134596637339607446329267522),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.993240412264229896742295262075817566e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000508745012930931989848393025305956774),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00042735056665392884328432271160040444),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000168588537679107988033552814662382059),
};
workspace[10] = tools::evaluate_polynomial(C10, z);
static const T C11[] = {
- 0.00157972766073083495908785631307733022L,
- 0.000162516262783915816898635123980270998L,
- -0.00206334210355432762645284467690276817L,
- 0.00213896861856890981541061922797693947L,
- -0.00101085593912630031708085801712479376L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00157972766073083495908785631307733022),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000162516262783915816898635123980270998),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00206334210355432762645284467690276817),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00213896861856890981541061922797693947),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00101085593912630031708085801712479376),
};
workspace[11] = tools::evaluate_polynomial(C11, z);
static const T C12[] = {
- -0.00407251211951401664727281097914544601L,
- 0.00640336283380806979482363809026579583L,
- -0.00404101610816766177473974858518094879L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00407251211951401664727281097914544601),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00640336283380806979482363809026579583),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00404101610816766177473974858518094879),
};
workspace[12] = tools::evaluate_polynomial(C12, z);
workspace[13] = -0.0059475779383993002845382844736066323L;
- T result = tools::evaluate_polynomial(workspace, 1/a);
+ T result = tools::evaluate_polynomial(workspace, T(1/a));
result *= exp(-y) / sqrt(2 * constants::pi<T>() * a);
if(x < a)
result = -result;
return result;
}
-
} // namespace detail
} // namespace math
} // namespace math
#include <emmintrin.h>
#if defined(__GNUC__) || defined(__PGI)
-#define ALIGN16 __attribute__((aligned(16)))
+#define ALIGN16 __attribute__((__aligned__(16)))
#else
#define ALIGN16 __declspec(align(16))
#endif
} // namespace math
} // namespace boost
+#undef ALIGN16
+
#endif // BOOST_MATH_SPECIAL_FUNCTIONS_LANCZOS
+
#pragma once
#endif
+#include <boost/math/tools/big_constant.hpp>
+
namespace boost{ namespace math{ namespace detail{
+//
+// These need forward declaring to keep GCC happy:
+//
+template <class T, class Policy, class Lanczos>
+T gamma_imp(T z, const Policy& pol, const Lanczos& l);
+template <class T, class Policy>
+T gamma_imp(T z, const Policy& pol, const lanczos::undefined_lanczos& l);
+
//
// lgamma for small arguments:
//
-template <class T, class Policy, class L>
-T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<64>&, const Policy& /* l */, const L&)
+template <class T, class Policy, class Lanczos>
+T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<64>&, const Policy& /* l */, const Lanczos&)
{
// This version uses rational approximations for small
// values of z accurate enough for 64-bit mantissas
// (80-bit long doubles), works well for 53-bit doubles as well.
- // L is only used to select the Lanczos function.
+ // Lanczos is only used to select the Lanczos function.
BOOST_MATH_STD_USING // for ADL of std names
T result = 0;
// Maximum Deviation Found (approximation error): 5.900e-24
//
static const T P[] = {
- static_cast<T>(-0.180355685678449379109e-1L),
- static_cast<T>(0.25126649619989678683e-1L),
- static_cast<T>(0.494103151567532234274e-1L),
- static_cast<T>(0.172491608709613993966e-1L),
- static_cast<T>(-0.259453563205438108893e-3L),
- static_cast<T>(-0.541009869215204396339e-3L),
- static_cast<T>(-0.324588649825948492091e-4L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.180355685678449379109e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.25126649619989678683e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.494103151567532234274e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.172491608709613993966e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.259453563205438108893e-3)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.541009869215204396339e-3)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.324588649825948492091e-4))
};
static const T Q[] = {
- static_cast<T>(0.1e1),
- static_cast<T>(0.196202987197795200688e1L),
- static_cast<T>(0.148019669424231326694e1L),
- static_cast<T>(0.541391432071720958364e0L),
- static_cast<T>(0.988504251128010129477e-1L),
- static_cast<T>(0.82130967464889339326e-2L),
- static_cast<T>(0.224936291922115757597e-3L),
- static_cast<T>(-0.223352763208617092964e-6L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.1e1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.196202987197795200688e1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.148019669424231326694e1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.541391432071720958364e0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.988504251128010129477e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.82130967464889339326e-2)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.224936291922115757597e-3)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.223352763208617092964e-6))
};
static const float Y = 0.158963680267333984375e0f;
static const float Y = 0.52815341949462890625f;
static const T P[] = {
- static_cast<T>(0.490622454069039543534e-1L),
- static_cast<T>(-0.969117530159521214579e-1L),
- static_cast<T>(-0.414983358359495381969e0L),
- static_cast<T>(-0.406567124211938417342e0L),
- static_cast<T>(-0.158413586390692192217e0L),
- static_cast<T>(-0.240149820648571559892e-1L),
- static_cast<T>(-0.100346687696279557415e-2L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.490622454069039543534e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.969117530159521214579e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.414983358359495381969e0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.406567124211938417342e0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.158413586390692192217e0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.240149820648571559892e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.100346687696279557415e-2))
};
static const T Q[] = {
- static_cast<T>(0.1e1L),
- static_cast<T>(0.302349829846463038743e1L),
- static_cast<T>(0.348739585360723852576e1L),
- static_cast<T>(0.191415588274426679201e1L),
- static_cast<T>(0.507137738614363510846e0L),
- static_cast<T>(0.577039722690451849648e-1L),
- static_cast<T>(0.195768102601107189171e-2L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.1e1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.302349829846463038743e1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.348739585360723852576e1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.191415588274426679201e1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.507137738614363510846e0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.577039722690451849648e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.195768102601107189171e-2))
};
T r = tools::evaluate_polynomial(P, zm1) / tools::evaluate_polynomial(Q, zm1);
static const float Y = 0.452017307281494140625f;
static const T P[] = {
- static_cast<T>(-0.292329721830270012337e-1L),
- static_cast<T>(0.144216267757192309184e0L),
- static_cast<T>(-0.142440390738631274135e0L),
- static_cast<T>(0.542809694055053558157e-1L),
- static_cast<T>(-0.850535976868336437746e-2L),
- static_cast<T>(0.431171342679297331241e-3L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.292329721830270012337e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.144216267757192309184e0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.142440390738631274135e0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.542809694055053558157e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.850535976868336437746e-2)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.431171342679297331241e-3))
};
static const T Q[] = {
- static_cast<T>(0.1e1),
- static_cast<T>(-0.150169356054485044494e1L),
- static_cast<T>(0.846973248876495016101e0L),
- static_cast<T>(-0.220095151814995745555e0L),
- static_cast<T>(0.25582797155975869989e-1L),
- static_cast<T>(-0.100666795539143372762e-2L),
- static_cast<T>(-0.827193521891290553639e-6L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.1e1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.150169356054485044494e1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.846973248876495016101e0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.220095151814995745555e0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.25582797155975869989e-1)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.100666795539143372762e-2)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.827193521891290553639e-6))
};
T r = zm2 * zm1;
- T R = tools::evaluate_polynomial(P, -zm2) / tools::evaluate_polynomial(Q, -zm2);
+ T R = tools::evaluate_polynomial(P, T(-zm2)) / tools::evaluate_polynomial(Q, T(-zm2));
result += r * Y + r * R;
}
}
return result;
}
-template <class T, class Policy, class L>
-T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<113>&, const Policy& /* l */, const L&)
+template <class T, class Policy, class Lanczos>
+T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<113>&, const Policy& /* l */, const Lanczos&)
{
//
// This version uses rational approximations for small
// Maximum Deviation Found (approximation error) 3.73e-37
static const T P[] = {
- -0.018035568567844937910504030027467476655L,
- 0.013841458273109517271750705401202404195L,
- 0.062031842739486600078866923383017722399L,
- 0.052518418329052161202007865149435256093L,
- 0.01881718142472784129191838493267755758L,
- 0.0025104830367021839316463675028524702846L,
- -0.00021043176101831873281848891452678568311L,
- -0.00010249622350908722793327719494037981166L,
- -0.11381479670982006841716879074288176994e-4L,
- -0.49999811718089980992888533630523892389e-6L,
- -0.70529798686542184668416911331718963364e-8L
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.018035568567844937910504030027467476655),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.013841458273109517271750705401202404195),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.062031842739486600078866923383017722399),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.052518418329052161202007865149435256093),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.01881718142472784129191838493267755758),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0025104830367021839316463675028524702846),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00021043176101831873281848891452678568311),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00010249622350908722793327719494037981166),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.11381479670982006841716879074288176994e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.49999811718089980992888533630523892389e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.70529798686542184668416911331718963364e-8)
};
static const T Q[] = {
- 1L,
- 2.5877485070422317542808137697939233685L,
- 2.8797959228352591788629602533153837126L,
- 1.8030885955284082026405495275461180977L,
- 0.69774331297747390169238306148355428436L,
- 0.17261566063277623942044077039756583802L,
- 0.02729301254544230229429621192443000121L,
- 0.0026776425891195270663133581960016620433L,
- 0.00015244249160486584591370355730402168106L,
- 0.43997034032479866020546814475414346627e-5L,
- 0.46295080708455613044541885534408170934e-7L,
- -0.93326638207459533682980757982834180952e-11L,
- 0.42316456553164995177177407325292867513e-13L
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.5877485070422317542808137697939233685),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.8797959228352591788629602533153837126),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.8030885955284082026405495275461180977),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.69774331297747390169238306148355428436),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.17261566063277623942044077039756583802),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.02729301254544230229429621192443000121),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0026776425891195270663133581960016620433),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00015244249160486584591370355730402168106),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.43997034032479866020546814475414346627e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.46295080708455613044541885534408170934e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.93326638207459533682980757982834180952e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.42316456553164995177177407325292867513e-13)
};
T R = tools::evaluate_polynomial(P, zm2);
static const float Y = 0.54076099395751953125f;
static const T P[] = {
- 0.036454670944013329356512090082402429697L,
- -0.066235835556476033710068679907798799959L,
- -0.67492399795577182387312206593595565371L,
- -1.4345555263962411429855341651960000166L,
- -1.4894319559821365820516771951249649563L,
- -0.87210277668067964629483299712322411566L,
- -0.29602090537771744401524080430529369136L,
- -0.0561832587517836908929331992218879676L,
- -0.0053236785487328044334381502530383140443L,
- -0.00018629360291358130461736386077971890789L,
- -0.10164985672213178500790406939467614498e-6L,
- 0.13680157145361387405588201461036338274e-8L
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.036454670944013329356512090082402429697),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.066235835556476033710068679907798799959),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.67492399795577182387312206593595565371),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -1.4345555263962411429855341651960000166),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -1.4894319559821365820516771951249649563),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.87210277668067964629483299712322411566),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.29602090537771744401524080430529369136),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0561832587517836908929331992218879676),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0053236785487328044334381502530383140443),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00018629360291358130461736386077971890789),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.10164985672213178500790406939467614498e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.13680157145361387405588201461036338274e-8)
};
static const T Q[] = {
- 1,
- 4.9106336261005990534095838574132225599L,
- 10.258804800866438510889341082793078432L,
- 11.88588976846826108836629960537466889L,
- 8.3455000546999704314454891036700998428L,
- 3.6428823682421746343233362007194282703L,
- 0.97465989807254572142266753052776132252L,
- 0.15121052897097822172763084966793352524L,
- 0.012017363555383555123769849654484594893L,
- 0.0003583032812720649835431669893011257277L
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 4.9106336261005990534095838574132225599),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 10.258804800866438510889341082793078432),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 11.88588976846826108836629960537466889),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 8.3455000546999704314454891036700998428),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 3.6428823682421746343233362007194282703),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.97465989807254572142266753052776132252),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.15121052897097822172763084966793352524),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.012017363555383555123769849654484594893),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0003583032812720649835431669893011257277)
};
T r = tools::evaluate_polynomial(P, zm1) / tools::evaluate_polynomial(Q, zm1);
static const float Y = 0.483787059783935546875f;
static const T P[] = {
- -0.017977422421608624353488126610933005432L,
- 0.18484528905298309555089509029244135703L,
- -0.40401251514859546989565001431430884082L,
- 0.40277179799147356461954182877921388182L,
- -0.21993421441282936476709677700477598816L,
- 0.069595742223850248095697771331107571011L,
- -0.012681481427699686635516772923547347328L,
- 0.0012489322866834830413292771335113136034L,
- -0.57058739515423112045108068834668269608e-4L,
- 0.8207548771933585614380644961342925976e-6L
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.017977422421608624353488126610933005432),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.18484528905298309555089509029244135703),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.40401251514859546989565001431430884082),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.40277179799147356461954182877921388182),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.21993421441282936476709677700477598816),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.069595742223850248095697771331107571011),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.012681481427699686635516772923547347328),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0012489322866834830413292771335113136034),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.57058739515423112045108068834668269608e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.8207548771933585614380644961342925976e-6)
};
static const T Q[] = {
- 1,
- -2.9629552288944259229543137757200262073L,
- 3.7118380799042118987185957298964772755L,
- -2.5569815272165399297600586376727357187L,
- 1.0546764918220835097855665680632153367L,
- -0.26574021300894401276478730940980810831L,
- 0.03996289731752081380552901986471233462L,
- -0.0033398680924544836817826046380586480873L,
- 0.00013288854760548251757651556792598235735L,
- -0.17194794958274081373243161848194745111e-5L
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -2.9629552288944259229543137757200262073),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 3.7118380799042118987185957298964772755),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -2.5569815272165399297600586376727357187),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.0546764918220835097855665680632153367),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.26574021300894401276478730940980810831),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.03996289731752081380552901986471233462),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0033398680924544836817826046380586480873),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00013288854760548251757651556792598235735),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.17194794958274081373243161848194745111e-5)
};
T r = zm2 * zm1;
- T R = tools::evaluate_polynomial(P, 0.625 - zm1) / tools::evaluate_polynomial(Q, 0.625 - zm1);
+ T R = tools::evaluate_polynomial(P, T(0.625 - zm1)) / tools::evaluate_polynomial(Q, T(0.625 - zm1));
result += r * Y + r * R;
BOOST_MATH_INSTRUMENT_CODE(result);
static const float Y = 0.443811893463134765625f;
static const T P[] = {
- -0.021027558364667626231512090082402429494L,
- 0.15128811104498736604523586803722368377L,
- -0.26249631480066246699388544451126410278L,
- 0.21148748610533489823742352180628489742L,
- -0.093964130697489071999873506148104370633L,
- 0.024292059227009051652542804957550866827L,
- -0.0036284453226534839926304745756906117066L,
- 0.0002939230129315195346843036254392485984L,
- -0.11088589183158123733132268042570710338e-4L,
- 0.13240510580220763969511741896361984162e-6L
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.021027558364667626231512090082402429494),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.15128811104498736604523586803722368377),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.26249631480066246699388544451126410278),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.21148748610533489823742352180628489742),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.093964130697489071999873506148104370633),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.024292059227009051652542804957550866827),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0036284453226534839926304745756906117066),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0002939230129315195346843036254392485984),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.11088589183158123733132268042570710338e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.13240510580220763969511741896361984162e-6)
};
static const T Q[] = {
- 1,
- -2.4240003754444040525462170802796471996L,
- 2.4868383476933178722203278602342786002L,
- -1.4047068395206343375520721509193698547L,
- 0.47583809087867443858344765659065773369L,
- -0.09865724264554556400463655444270700132L,
- 0.012238223514176587501074150988445109735L,
- -0.00084625068418239194670614419707491797097L,
- 0.2796574430456237061420839429225710602e-4L,
- -0.30202973883316730694433702165188835331e-6L
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -2.4240003754444040525462170802796471996),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.4868383476933178722203278602342786002),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -1.4047068395206343375520721509193698547),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.47583809087867443858344765659065773369),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.09865724264554556400463655444270700132),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.012238223514176587501074150988445109735),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00084625068418239194670614419707491797097),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.2796574430456237061420839429225710602e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.30202973883316730694433702165188835331e-6)
};
// (2 - x) * (1 - x) * (c + R(2 - x))
T r = zm2 * zm1;
- T R = tools::evaluate_polynomial(P, -zm2) / tools::evaluate_polynomial(Q, -zm2);
+ T R = tools::evaluate_polynomial(P, T(-zm2)) / tools::evaluate_polynomial(Q, T(-zm2));
result += r * Y + r * R;
BOOST_MATH_INSTRUMENT_CODE(result);
BOOST_MATH_INSTRUMENT_CODE(result);
return result;
}
-template <class T, class Policy, class L>
-T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<0>&, const Policy& pol, const L&)
+template <class T, class Policy, class Lanczos>
+T lgamma_small_imp(T z, T zm1, T zm2, const mpl::int_<0>&, const Policy& pol, const Lanczos&)
{
//
// No rational approximations are available because either
else if(z < 0.5)
{
// taking the log of tgamma reduces the error, no danger of overflow here:
- result = log(gamma_imp(z, pol, L()));
+ result = log(gamma_imp(z, pol, Lanczos()));
}
else if(z >= 3)
{
// taking the log of tgamma reduces the error, no danger of overflow here:
- result = log(gamma_imp(z, pol, L()));
+ result = log(gamma_imp(z, pol, Lanczos()));
}
else if(z >= 1.5)
{
// special case near 2:
T dz = zm2;
- result = dz * log((z + L::g() - T(0.5)) / boost::math::constants::e<T>());
- result += boost::math::log1p(dz / (L::g() + T(1.5)), pol) * T(1.5);
- result += boost::math::log1p(L::lanczos_sum_near_2(dz), pol);
+ result = dz * log((z + Lanczos::g() - T(0.5)) / boost::math::constants::e<T>());
+ result += boost::math::log1p(dz / (Lanczos::g() + T(1.5)), pol) * T(1.5);
+ result += boost::math::log1p(Lanczos::lanczos_sum_near_2(dz), pol);
}
else
{
// special case near 1:
T dz = zm1;
- result = dz * log((z + L::g() - T(0.5)) / boost::math::constants::e<T>());
- result += boost::math::log1p(dz / (L::g() + T(0.5)), pol) / 2;
- result += boost::math::log1p(L::lanczos_sum_near_1(dz), pol);
+ result = dz * log((z + Lanczos::g() - T(0.5)) / boost::math::constants::e<T>());
+ result += boost::math::log1p(dz / (Lanczos::g() + T(0.5)), pol) / 2;
+ result += boost::math::log1p(Lanczos::lanczos_sum_near_1(dz), pol);
}
return result;
}
#define BOOST_MATH_SPECIAL_ROUND_FWD_HPP
#include <boost/config.hpp>
+#include <boost/math/tools/promotion.hpp>
#ifdef _MSC_VER
#pragma once
{
template <class T, class Policy>
- T trunc(const T& v, const Policy& pol);
+ typename tools::promote_args<T>::type trunc(const T& v, const Policy& pol);
template <class T>
- T trunc(const T& v);
+ typename tools::promote_args<T>::type trunc(const T& v);
template <class T, class Policy>
int itrunc(const T& v, const Policy& pol);
template <class T>
boost::long_long_type lltrunc(const T& v);
#endif
template <class T, class Policy>
- T round(const T& v, const Policy& pol);
+ typename tools::promote_args<T>::type round(const T& v, const Policy& pol);
template <class T>
- T round(const T& v);
+ typename tools::promote_args<T>::type round(const T& v);
template <class T, class Policy>
int iround(const T& v, const Policy& pol);
template <class T>
}
}
+
+#undef BOOST_MATH_STD_USING
+#define BOOST_MATH_STD_USING BOOST_MATH_STD_USING_CORE\
+ using boost::math::round;\
+ using boost::math::iround;\
+ using boost::math::lround;\
+ using boost::math::trunc;\
+ using boost::math::itrunc;\
+ using boost::math::ltrunc;\
+ using boost::math::modf;
+
+
#endif // BOOST_MATH_SPECIAL_ROUND_FWD_HPP
--- /dev/null
+// Copyright John Maddock 2007.
+// Copyright Paul A. Bristow 2007
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SF_DETAIL_INV_T_HPP
+#define BOOST_MATH_SF_DETAIL_INV_T_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/cbrt.hpp>
+#include <boost/math/special_functions/round.hpp>
+#include <boost/math/special_functions/trunc.hpp>
+
+namespace boost{ namespace math{ namespace detail{
+
+//
+// The main method used is due to Hill:
+//
+// G. W. Hill, Algorithm 396, Student's t-Quantiles,
+// Communications of the ACM, 13(10): 619-620, Oct., 1970.
+//
+template <class T, class Policy>
+T inverse_students_t_hill(T ndf, T u, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ BOOST_ASSERT(u <= 0.5);
+
+ T a, b, c, d, q, x, y;
+
+ if (ndf > 1e20f)
+ return -boost::math::erfc_inv(2 * u, pol) * constants::root_two<T>();
+
+ a = 1 / (ndf - 0.5f);
+ b = 48 / (a * a);
+ c = ((20700 * a / b - 98) * a - 16) * a + 96.36f;
+ d = ((94.5f / (b + c) - 3) / b + 1) * sqrt(a * constants::pi<T>() / 2) * ndf;
+ y = pow(d * 2 * u, 2 / ndf);
+
+ if (y > (0.05f + a))
+ {
+ //
+ // Asymptotic inverse expansion about normal:
+ //
+ x = -boost::math::erfc_inv(2 * u, pol) * constants::root_two<T>();
+ y = x * x;
+
+ if (ndf < 5)
+ c += 0.3f * (ndf - 4.5f) * (x + 0.6f);
+ c += (((0.05f * d * x - 5) * x - 7) * x - 2) * x + b;
+ y = (((((0.4f * y + 6.3f) * y + 36) * y + 94.5f) / c - y - 3) / b + 1) * x;
+ y = boost::math::expm1(a * y * y, pol);
+ }
+ else
+ {
+ y = ((1 / (((ndf + 6) / (ndf * y) - 0.089f * d - 0.822f)
+ * (ndf + 2) * 3) + 0.5 / (ndf + 4)) * y - 1)
+ * (ndf + 1) / (ndf + 2) + 1 / y;
+ }
+ q = sqrt(ndf * y);
+
+ return -q;
+}
+//
+// Tail and body series are due to Shaw:
+//
+// www.mth.kcl.ac.uk/~shaww/web_page/papers/Tdistribution06.pdf
+//
+// Shaw, W.T., 2006, "Sampling Student's T distribution - use of
+// the inverse cumulative distribution function."
+// Journal of Computational Finance, Vol 9 Issue 4, pp 37-73, Summer 2006
+//
+template <class T, class Policy>
+T inverse_students_t_tail_series(T df, T v, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ // Tail series expansion, see section 6 of Shaw's paper.
+ // w is calculated using Eq 60:
+ T w = boost::math::tgamma_delta_ratio(df / 2, constants::half<T>(), pol)
+ * sqrt(df * constants::pi<T>()) * v;
+ // define some variables:
+ T np2 = df + 2;
+ T np4 = df + 4;
+ T np6 = df + 6;
+ //
+ // Calculate the coefficients d(k), these depend only on the
+ // number of degrees of freedom df, so at least in theory
+ // we could tabulate these for fixed df, see p15 of Shaw:
+ //
+ T d[7] = { 1, };
+ d[1] = -(df + 1) / (2 * np2);
+ np2 *= (df + 2);
+ d[2] = -df * (df + 1) * (df + 3) / (8 * np2 * np4);
+ np2 *= df + 2;
+ d[3] = -df * (df + 1) * (df + 5) * (((3 * df) + 7) * df -2) / (48 * np2 * np4 * np6);
+ np2 *= (df + 2);
+ np4 *= (df + 4);
+ d[4] = -df * (df + 1) * (df + 7) *
+ ( (((((15 * df) + 154) * df + 465) * df + 286) * df - 336) * df + 64 )
+ / (384 * np2 * np4 * np6 * (df + 8));
+ np2 *= (df + 2);
+ d[5] = -df * (df + 1) * (df + 3) * (df + 9)
+ * (((((((35 * df + 452) * df + 1573) * df + 600) * df - 2020) * df) + 928) * df -128)
+ / (1280 * np2 * np4 * np6 * (df + 8) * (df + 10));
+ np2 *= (df + 2);
+ np4 *= (df + 4);
+ np6 *= (df + 6);
+ d[6] = -df * (df + 1) * (df + 11)
+ * ((((((((((((945 * df) + 31506) * df + 425858) * df + 2980236) * df + 11266745) * df + 20675018) * df + 7747124) * df - 22574632) * df - 8565600) * df + 18108416) * df - 7099392) * df + 884736)
+ / (46080 * np2 * np4 * np6 * (df + 8) * (df + 10) * (df +12));
+ //
+ // Now bring everthing together to provide the result,
+ // this is Eq 62 of Shaw:
+ //
+ T rn = sqrt(df);
+ T div = pow(rn * w, 1 / df);
+ T power = div * div;
+ T result = tools::evaluate_polynomial<7, T, T>(d, power);
+ result *= rn;
+ result /= div;
+ return -result;
+}
+
+template <class T, class Policy>
+T inverse_students_t_body_series(T df, T u, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ //
+ // Body series for small N:
+ //
+ // Start with Eq 56 of Shaw:
+ //
+ T v = boost::math::tgamma_delta_ratio(df / 2, constants::half<T>(), pol)
+ * sqrt(df * constants::pi<T>()) * (u - constants::half<T>());
+ //
+ // Workspace for the polynomial coefficients:
+ //
+ T c[11] = { 0, 1, };
+ //
+ // Figure out what the coefficients are, note these depend
+ // only on the degrees of freedom (Eq 57 of Shaw):
+ //
+ T in = 1 / df;
+ c[2] = 0.16666666666666666667 + 0.16666666666666666667 * in;
+ c[3] = (0.0083333333333333333333 * in
+ + 0.066666666666666666667) * in
+ + 0.058333333333333333333;
+ c[4] = ((0.00019841269841269841270 * in
+ + 0.0017857142857142857143) * in
+ + 0.026785714285714285714) * in
+ + 0.025198412698412698413;
+ c[5] = (((2.7557319223985890653e-6 * in
+ + 0.00037477954144620811287) * in
+ - 0.0011078042328042328042) * in
+ + 0.010559964726631393298) * in
+ + 0.012039792768959435626;
+ c[6] = ((((2.5052108385441718775e-8 * in
+ - 0.000062705427288760622094) * in
+ + 0.00059458674042007375341) * in
+ - 0.0016095979637646304313) * in
+ + 0.0061039211560044893378) * in
+ + 0.0038370059724226390893;
+ c[7] = (((((1.6059043836821614599e-10 * in
+ + 0.000015401265401265401265) * in
+ - 0.00016376804137220803887) * in
+ + 0.00069084207973096861986) * in
+ - 0.0012579159844784844785) * in
+ + 0.0010898206731540064873) * in
+ + 0.0032177478835464946576;
+ c[8] = ((((((7.6471637318198164759e-13 * in
+ - 3.9851014346715404916e-6) * in
+ + 0.000049255746366361445727) * in
+ - 0.00024947258047043099953) * in
+ + 0.00064513046951456342991) * in
+ - 0.00076245135440323932387) * in
+ + 0.000033530976880017885309) * in
+ + 0.0017438262298340009980;
+ c[9] = (((((((2.8114572543455207632e-15 * in
+ + 1.0914179173496789432e-6) * in
+ - 0.000015303004486655377567) * in
+ + 0.000090867107935219902229) * in
+ - 0.00029133414466938067350) * in
+ + 0.00051406605788341121363) * in
+ - 0.00036307660358786885787) * in
+ - 0.00031101086326318780412) * in
+ + 0.00096472747321388644237;
+ c[10] = ((((((((8.2206352466243297170e-18 * in
+ - 3.1239569599829868045e-7) * in
+ + 4.8903045291975346210e-6) * in
+ - 0.000033202652391372058698) * in
+ + 0.00012645437628698076975) * in
+ - 0.00028690924218514613987) * in
+ + 0.00035764655430568632777) * in
+ - 0.00010230378073700412687) * in
+ - 0.00036942667800009661203) * in
+ + 0.00054229262813129686486;
+ //
+ // The result is then a polynomial in v (see Eq 56 of Shaw):
+ //
+ return tools::evaluate_odd_polynomial<11, T, T>(c, v);
+}
+
+template <class T, class Policy>
+T inverse_students_t(T df, T u, T v, const Policy& pol, bool* pexact = 0)
+{
+ //
+ // df = number of degrees of freedom.
+ // u = probablity.
+ // v = 1 - u.
+ // l = lanczos type to use.
+ //
+ BOOST_MATH_STD_USING
+ bool invert = false;
+ T result = 0;
+ if(pexact)
+ *pexact = false;
+ if(u > v)
+ {
+ // function is symmetric, invert it:
+ std::swap(u, v);
+ invert = true;
+ }
+ if((floor(df) == df) && (df < 20))
+ {
+ //
+ // we have integer degrees of freedom, try for the special
+ // cases first:
+ //
+ T tolerance = ldexp(1.0f, (2 * policies::digits<T, Policy>()) / 3);
+
+ switch(itrunc(df, Policy()))
+ {
+ case 1:
+ {
+ //
+ // df = 1 is the same as the Cauchy distribution, see
+ // Shaw Eq 35:
+ //
+ if(u == 0.5)
+ result = 0;
+ else
+ result = -cos(constants::pi<T>() * u) / sin(constants::pi<T>() * u);
+ if(pexact)
+ *pexact = true;
+ break;
+ }
+ case 2:
+ {
+ //
+ // df = 2 has an exact result, see Shaw Eq 36:
+ //
+ result =(2 * u - 1) / sqrt(2 * u * v);
+ if(pexact)
+ *pexact = true;
+ break;
+ }
+ case 4:
+ {
+ //
+ // df = 4 has an exact result, see Shaw Eq 38 & 39:
+ //
+ T alpha = 4 * u * v;
+ T root_alpha = sqrt(alpha);
+ T r = 4 * cos(acos(root_alpha) / 3) / root_alpha;
+ T x = sqrt(r - 4);
+ result = u - 0.5f < 0 ? (T)-x : x;
+ if(pexact)
+ *pexact = true;
+ break;
+ }
+ case 6:
+ {
+ //
+ // We get numeric overflow in this area:
+ //
+ if(u < 1e-150)
+ return (invert ? -1 : 1) * inverse_students_t_hill(df, u, pol);
+ //
+ // Newton-Raphson iteration of a polynomial case,
+ // choice of seed value is taken from Shaw's online
+ // supplement:
+ //
+ T a = 4 * (u - u * u);//1 - 4 * (u - 0.5f) * (u - 0.5f);
+ T b = boost::math::cbrt(a);
+ static const T c = 0.85498797333834849467655443627193;
+ T p = 6 * (1 + c * (1 / b - 1));
+ T p0;
+ do{
+ T p2 = p * p;
+ T p4 = p2 * p2;
+ T p5 = p * p4;
+ p0 = p;
+ // next term is given by Eq 41:
+ p = 2 * (8 * a * p5 - 270 * p2 + 2187) / (5 * (4 * a * p4 - 216 * p - 243));
+ }while(fabs((p - p0) / p) > tolerance);
+ //
+ // Use Eq 45 to extract the result:
+ //
+ p = sqrt(p - df);
+ result = (u - 0.5f) < 0 ? (T)-p : p;
+ break;
+ }
+#if 0
+ //
+ // These are Shaw's "exact" but iterative solutions
+ // for even df, the numerical accuracy of these is
+ // rather less than Hill's method, so these are disabled
+ // for now, which is a shame because they are reasonably
+ // quick to evaluate...
+ //
+ case 8:
+ {
+ //
+ // Newton-Raphson iteration of a polynomial case,
+ // choice of seed value is taken from Shaw's online
+ // supplement:
+ //
+ static const T c8 = 0.85994765706259820318168359251872L;
+ T a = 4 * (u - u * u); //1 - 4 * (u - 0.5f) * (u - 0.5f);
+ T b = pow(a, T(1) / 4);
+ T p = 8 * (1 + c8 * (1 / b - 1));
+ T p0 = p;
+ do{
+ T p5 = p * p;
+ p5 *= p5 * p;
+ p0 = p;
+ // Next term is given by Eq 42:
+ p = 2 * (3 * p + (640 * (160 + p * (24 + p * (p + 4)))) / (-5120 + p * (-2048 - 960 * p + a * p5))) / 7;
+ }while(fabs((p - p0) / p) > tolerance);
+ //
+ // Use Eq 45 to extract the result:
+ //
+ p = sqrt(p - df);
+ result = (u - 0.5f) < 0 ? -p : p;
+ break;
+ }
+ case 10:
+ {
+ //
+ // Newton-Raphson iteration of a polynomial case,
+ // choice of seed value is taken from Shaw's online
+ // supplement:
+ //
+ static const T c10 = 0.86781292867813396759105692122285L;
+ T a = 4 * (u - u * u); //1 - 4 * (u - 0.5f) * (u - 0.5f);
+ T b = pow(a, T(1) / 5);
+ T p = 10 * (1 + c10 * (1 / b - 1));
+ T p0;
+ do{
+ T p6 = p * p;
+ p6 *= p6 * p6;
+ p0 = p;
+ // Next term given by Eq 43:
+ p = (8 * p) / 9 + (218750 * (21875 + 4 * p * (625 + p * (75 + 2 * p * (5 + p))))) /
+ (9 * (-68359375 + 8 * p * (-2343750 + p * (-546875 - 175000 * p + 8 * a * p6))));
+ }while(fabs((p - p0) / p) > tolerance);
+ //
+ // Use Eq 45 to extract the result:
+ //
+ p = sqrt(p - df);
+ result = (u - 0.5f) < 0 ? -p : p;
+ break;
+ }
+#endif
+ default:
+ goto calculate_real;
+ }
+ }
+ else
+ {
+calculate_real:
+ if(df > 0x10000000)
+ {
+ result = -boost::math::erfc_inv(2 * u, pol) * constants::root_two<T>();
+ if((pexact) && (df >= 1e20))
+ *pexact = true;
+ }
+ else if(df < 3)
+ {
+ //
+ // Use a roughly linear scheme to choose between Shaw's
+ // tail series and body series:
+ //
+ T crossover = 0.2742f - df * 0.0242143f;
+ if(u > crossover)
+ {
+ result = boost::math::detail::inverse_students_t_body_series(df, u, pol);
+ }
+ else
+ {
+ result = boost::math::detail::inverse_students_t_tail_series(df, u, pol);
+ }
+ }
+ else
+ {
+ //
+ // Use Hill's method except in the exteme tails
+ // where we use Shaw's tail series.
+ // The crossover point is roughly exponential in -df:
+ //
+ T crossover = ldexp(1.0f, iround(T(df / -0.654f), typename policies::normalise<Policy, policies::rounding_error<policies::ignore_error> >::type()));
+ if(u > crossover)
+ {
+ result = boost::math::detail::inverse_students_t_hill(df, u, pol);
+ }
+ else
+ {
+ result = boost::math::detail::inverse_students_t_tail_series(df, u, pol);
+ }
+ }
+ }
+ return invert ? (T)-result : result;
+}
+
+template <class T, class Policy>
+inline T find_ibeta_inv_from_t_dist(T a, T p, T /*q*/, T* py, const Policy& pol)
+{
+ T u = p / 2;
+ T v = 1 - u;
+ T df = a * 2;
+ T t = boost::math::detail::inverse_students_t(df, u, v, pol);
+ *py = t * t / (df + t * t);
+ return df / (df + t * t);
+}
+
+template <class T, class Policy>
+inline T fast_students_t_quantile_imp(T df, T p, const Policy& pol, const mpl::false_*)
+{
+ BOOST_MATH_STD_USING
+ //
+ // Need to use inverse incomplete beta to get
+ // required precision so not so fast:
+ //
+ T probability = (p > 0.5) ? 1 - p : p;
+ T t, x, y(0);
+ x = ibeta_inv(df / 2, T(0.5), 2 * probability, &y, pol);
+ if(df * y > tools::max_value<T>() * x)
+ t = policies::raise_overflow_error<T>("boost::math::students_t_quantile<%1%>(%1%,%1%)", 0, pol);
+ else
+ t = sqrt(df * y / x);
+ //
+ // Figure out sign based on the size of p:
+ //
+ if(p < 0.5)
+ t = -t;
+ return t;
+}
+
+template <class T, class Policy>
+T fast_students_t_quantile_imp(T df, T p, const Policy& pol, const mpl::true_*)
+{
+ BOOST_MATH_STD_USING
+ bool invert = false;
+ if((df < 2) && (floor(df) != df))
+ return boost::math::detail::fast_students_t_quantile_imp(df, p, pol, static_cast<mpl::false_*>(0));
+ if(p > 0.5)
+ {
+ p = 1 - p;
+ invert = true;
+ }
+ //
+ // Get an estimate of the result:
+ //
+ bool exact;
+ T t = inverse_students_t(df, p, T(1-p), pol, &exact);
+ if((t == 0) || exact)
+ return invert ? -t : t; // can't do better!
+ //
+ // Change variables to inverse incomplete beta:
+ //
+ T t2 = t * t;
+ T xb = df / (df + t2);
+ T y = t2 / (df + t2);
+ T a = df / 2;
+ //
+ // t can be so large that x underflows,
+ // just return our estimate in that case:
+ //
+ if(xb == 0)
+ return t;
+ //
+ // Get incomplete beta and it's derivative:
+ //
+ T f1;
+ T f0 = xb < y ? ibeta_imp(a, constants::half<T>(), xb, pol, false, true, &f1)
+ : ibeta_imp(constants::half<T>(), a, y, pol, true, true, &f1);
+
+ // Get cdf from incomplete beta result:
+ T p0 = f0 / 2 - p;
+ // Get pdf from derivative:
+ T p1 = f1 * sqrt(y * xb * xb * xb / df);
+ //
+ // Second derivative divided by p1:
+ //
+ // yacas gives:
+ //
+ // In> PrettyForm(Simplify(D(t) (1 + t^2/v) ^ (-(v+1)/2)))
+ //
+ // | | v + 1 | |
+ // | -| ----- + 1 | |
+ // | | 2 | |
+ // -| | 2 | |
+ // | | t | |
+ // | | -- + 1 | |
+ // | ( v + 1 ) * | v | * t |
+ // ---------------------------------------------
+ // v
+ //
+ // Which after some manipulation is:
+ //
+ // -p1 * t * (df + 1) / (t^2 + df)
+ //
+ T p2 = t * (df + 1) / (t * t + df);
+ // Halley step:
+ t = fabs(t);
+ t += p0 / (p1 + p0 * p2 / 2);
+ return !invert ? -t : t;
+}
+
+template <class T, class Policy>
+inline T fast_students_t_quantile(T df, T p, const Policy& pol)
+{
+ typedef typename policies::evaluation<T, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ typedef mpl::bool_<
+ (std::numeric_limits<T>::digits <= 53)
+ &&
+ (std::numeric_limits<T>::is_specialized)
+ &&
+ (std::numeric_limits<T>::radix == 2)
+ > tag_type;
+ return policies::checked_narrowing_cast<T, forwarding_policy>(fast_students_t_quantile_imp(static_cast<value_type>(df), static_cast<value_type>(p), pol, static_cast<tag_type*>(0)), "boost::math::students_t_quantile<%1%>(%1%,%1%,%1%)");
+}
+
+}}} // namespaces
+
+#endif // BOOST_MATH_SF_DETAIL_INV_T_HPP
+
+
+
#pragma warning(push) // Temporary until lexical cast fixed.
#pragma warning(disable: 4127 4701)
#endif
+#ifndef BOOST_MATH_NO_LEXICAL_CAST
#include <boost/lexical_cast.hpp>
+#endif
#ifdef BOOST_MSVC
#pragma warning(pop)
#endif
template <class T>
struct max_factorial;
-// efinitions:
+// Definitions:
template <>
inline float unchecked_factorial<float>(unsigned i BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(float))
{
value = ::boost::math::max_factorial<long double>::value);
};
+#ifndef BOOST_MATH_NO_LEXICAL_CAST
+
template <class T>
inline T unchecked_factorial(unsigned i BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(T))
{
+ BOOST_STATIC_ASSERT(!boost::is_integral<T>::value);
+ // factorial<unsigned int>(n) is not implemented
+ // because it would overflow integral type T for too small n
+ // to be useful. Use instead a floating-point type,
+ // and convert to an unsigned type if essential, for example:
+ // unsigned int nfac = static_cast<unsigned int>(factorial<double>(n));
+ // See factorial documentation for more detail.
+
static const boost::array<T, 101> factorials = {{
boost::lexical_cast<T>("1"),
boost::lexical_cast<T>("1"),
BOOST_STATIC_CONSTANT(unsigned, value = 100);
};
+#else // BOOST_MATH_NO_LEXICAL_CAST
+
+template <class T>
+inline T unchecked_factorial(unsigned i BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(T))
+{
+ return 1;
+}
+
+template <class T>
+struct max_factorial
+{
+ BOOST_STATIC_CONSTANT(unsigned, value = 0);
+};
+
+#endif
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+template <class T>
+const unsigned max_factorial<T>::value;
+#endif
+
} // namespace math
} // namespace boost
--- /dev/null
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SF_DIGAMMA_HPP
+#define BOOST_MATH_SF_DIGAMMA_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/promotion.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/constants/constants.hpp>
+#include <boost/mpl/comparison.hpp>
+#include <boost/math/tools/big_constant.hpp>
+
+namespace boost{
+namespace math{
+namespace detail{
+//
+// Begin by defining the smallest value for which it is safe to
+// use the asymptotic expansion for digamma:
+//
+inline unsigned digamma_large_lim(const mpl::int_<0>*)
+{ return 20; }
+
+inline unsigned digamma_large_lim(const void*)
+{ return 10; }
+//
+// Implementations of the asymptotic expansion come next,
+// the coefficients of the series have been evaluated
+// in advance at high precision, and the series truncated
+// at the first term that's too small to effect the result.
+// Note that the series becomes divergent after a while
+// so truncation is very important.
+//
+// This first one gives 34-digit precision for x >= 20:
+//
+template <class T>
+inline T digamma_imp_large(T x, const mpl::int_<0>*)
+{
+ BOOST_MATH_STD_USING // ADL of std functions.
+ static const T P[] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.003968253968253968253968253968253968253968253968254),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0041666666666666666666666666666666666666666666666667),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0075757575757575757575757575757575757575757575757576),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.021092796092796092796092796092796092796092796092796),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.44325980392156862745098039215686274509803921568627),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 3.0539543302701197438039543302701197438039543302701),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -26.456212121212121212121212121212121212121212121212),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 281.4601449275362318840579710144927536231884057971),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -3607.510546398046398046398046398046398046398046398),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 54827.583333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -974936.82385057471264367816091954022988505747126437),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 20052695.796688078946143462272494530559046688078946),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -472384867.72162990196078431372549019607843137254902),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 12635724795.916666666666666666666666666666666666667)
+ };
+ x -= 1;
+ T result = log(x);
+ result += 1 / (2 * x);
+ T z = 1 / (x*x);
+ result -= z * tools::evaluate_polynomial(P, z);
+ return result;
+}
+//
+// 19-digit precision for x >= 10:
+//
+template <class T>
+inline T digamma_imp_large(T x, const mpl::int_<64>*)
+{
+ BOOST_MATH_STD_USING // ADL of std functions.
+ static const T P[] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.003968253968253968253968253968253968253968253968254),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0041666666666666666666666666666666666666666666666667),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0075757575757575757575757575757575757575757575757576),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.021092796092796092796092796092796092796092796092796),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.44325980392156862745098039215686274509803921568627),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 3.0539543302701197438039543302701197438039543302701),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -26.456212121212121212121212121212121212121212121212),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 281.4601449275362318840579710144927536231884057971),
+ };
+ x -= 1;
+ T result = log(x);
+ result += 1 / (2 * x);
+ T z = 1 / (x*x);
+ result -= z * tools::evaluate_polynomial(P, z);
+ return result;
+}
+//
+// 17-digit precision for x >= 10:
+//
+template <class T>
+inline T digamma_imp_large(T x, const mpl::int_<53>*)
+{
+ BOOST_MATH_STD_USING // ADL of std functions.
+ static const T P[] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.003968253968253968253968253968253968253968253968254),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0041666666666666666666666666666666666666666666666667),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0075757575757575757575757575757575757575757575757576),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.021092796092796092796092796092796092796092796092796),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.44325980392156862745098039215686274509803921568627)
+ };
+ x -= 1;
+ T result = log(x);
+ result += 1 / (2 * x);
+ T z = 1 / (x*x);
+ result -= z * tools::evaluate_polynomial(P, z);
+ return result;
+}
+//
+// 9-digit precision for x >= 10:
+//
+template <class T>
+inline T digamma_imp_large(T x, const mpl::int_<24>*)
+{
+ BOOST_MATH_STD_USING // ADL of std functions.
+ static const T P[] = {
+ BOOST_MATH_BIG_CONSTANT(T, 24, 0.083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 24, -0.0083333333333333333333333333333333333333333333333333),
+ BOOST_MATH_BIG_CONSTANT(T, 24, 0.003968253968253968253968253968253968253968253968254)
+ };
+ x -= 1;
+ T result = log(x);
+ result += 1 / (2 * x);
+ T z = 1 / (x*x);
+ result -= z * tools::evaluate_polynomial(P, z);
+ return result;
+}
+//
+// Now follow rational approximations over the range [1,2].
+//
+// 35-digit precision:
+//
+template <class T>
+T digamma_imp_1_2(T x, const mpl::int_<0>*)
+{
+ //
+ // Now the approximation, we use the form:
+ //
+ // digamma(x) = (x - root) * (Y + R(x-1))
+ //
+ // Where root is the location of the positive root of digamma,
+ // Y is a constant, and R is optimised for low absolute error
+ // compared to Y.
+ //
+ // Max error found at 128-bit long double precision: 5.541e-35
+ // Maximum Deviation Found (approximation error): 1.965e-35
+ //
+ static const float Y = 0.99558162689208984375F;
+
+ static const T root1 = T(1569415565) / 1073741824uL;
+ static const T root2 = (T(381566830) / 1073741824uL) / 1073741824uL;
+ static const T root3 = ((T(111616537) / 1073741824uL) / 1073741824uL) / 1073741824uL;
+ static const T root4 = (((T(503992070) / 1073741824uL) / 1073741824uL) / 1073741824uL) / 1073741824uL;
+ static const T root5 = BOOST_MATH_BIG_CONSTANT(T, 113, 0.52112228569249997894452490385577338504019838794544e-36);
+
+ static const T P[] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.25479851061131551526977464225335883769),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.18684290534374944114622235683619897417),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.80360876047931768958995775910991929922),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.67227342794829064330498117008564270136),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.26569010991230617151285010695543858005),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.05775672694575986971640757748003553385),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0071432147823164975485922555833274240665),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00048740753910766168912364555706064993274),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.16454996865214115723416538844975174761e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.20327832297631728077731148515093164955e-6)
+ };
+ static const T Q[] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.6210924610812025425088411043163287646),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.6850757078559596612621337395886392594),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.4320913706209965531250495490639289418),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.4410872083455009362557012239501953402),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.081385727399251729505165509278152487225),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0089478633066857163432104815183858149496),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00055861622855066424871506755481997374154),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.1760168552357342401304462967950178554e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.20585454493572473724556649516040874384e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.90745971844439990284514121823069162795e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.48857673606545846774761343500033283272e-13),
+ };
+ T g = x - root1;
+ g -= root2;
+ g -= root3;
+ g -= root4;
+ g -= root5;
+ T r = tools::evaluate_polynomial(P, T(x-1)) / tools::evaluate_polynomial(Q, T(x-1));
+ T result = g * Y + g * r;
+
+ return result;
+}
+//
+// 19-digit precision:
+//
+template <class T>
+T digamma_imp_1_2(T x, const mpl::int_<64>*)
+{
+ //
+ // Now the approximation, we use the form:
+ //
+ // digamma(x) = (x - root) * (Y + R(x-1))
+ //
+ // Where root is the location of the positive root of digamma,
+ // Y is a constant, and R is optimised for low absolute error
+ // compared to Y.
+ //
+ // Max error found at 80-bit long double precision: 5.016e-20
+ // Maximum Deviation Found (approximation error): 3.575e-20
+ //
+ static const float Y = 0.99558162689208984375F;
+
+ static const T root1 = T(1569415565) / 1073741824uL;
+ static const T root2 = (T(381566830) / 1073741824uL) / 1073741824uL;
+ static const T root3 = BOOST_MATH_BIG_CONSTANT(T, 64, 0.9016312093258695918615325266959189453125e-19);
+
+ static const T P[] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.254798510611315515235),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.314628554532916496608),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.665836341559876230295),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.314767657147375752913),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0541156266153505273939),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00289268368333918761452)
+ };
+ static const T Q[] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 2.1195759927055347547),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.54350554664961128724),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.486986018231042975162),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0660481487173569812846),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00298999662592323990972),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.165079794012604905639e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.317940243105952177571e-7)
+ };
+ T g = x - root1;
+ g -= root2;
+ g -= root3;
+ T r = tools::evaluate_polynomial(P, T(x-1)) / tools::evaluate_polynomial(Q, T(x-1));
+ T result = g * Y + g * r;
+
+ return result;
+}
+//
+// 18-digit precision:
+//
+template <class T>
+T digamma_imp_1_2(T x, const mpl::int_<53>*)
+{
+ //
+ // Now the approximation, we use the form:
+ //
+ // digamma(x) = (x - root) * (Y + R(x-1))
+ //
+ // Where root is the location of the positive root of digamma,
+ // Y is a constant, and R is optimised for low absolute error
+ // compared to Y.
+ //
+ // Maximum Deviation Found: 1.466e-18
+ // At double precision, max error found: 2.452e-17
+ //
+ static const float Y = 0.99558162689208984F;
+
+ static const T root1 = T(1569415565) / 1073741824uL;
+ static const T root2 = (T(381566830) / 1073741824uL) / 1073741824uL;
+ static const T root3 = BOOST_MATH_BIG_CONSTANT(T, 53, 0.9016312093258695918615325266959189453125e-19);
+
+ static const T P[] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.25479851061131551),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.32555031186804491),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.65031853770896507),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.28919126444774784),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.045251321448739056),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0020713321167745952)
+ };
+ static const T Q[] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 2.0767117023730469),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.4606242909763515),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.43593529692665969),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.054151797245674225),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0021284987017821144),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.55789841321675513e-6)
+ };
+ T g = x - root1;
+ g -= root2;
+ g -= root3;
+ T r = tools::evaluate_polynomial(P, T(x-1)) / tools::evaluate_polynomial(Q, T(x-1));
+ T result = g * Y + g * r;
+
+ return result;
+}
+//
+// 9-digit precision:
+//
+template <class T>
+inline T digamma_imp_1_2(T x, const mpl::int_<24>*)
+{
+ //
+ // Now the approximation, we use the form:
+ //
+ // digamma(x) = (x - root) * (Y + R(x-1))
+ //
+ // Where root is the location of the positive root of digamma,
+ // Y is a constant, and R is optimised for low absolute error
+ // compared to Y.
+ //
+ // Maximum Deviation Found: 3.388e-010
+ // At float precision, max error found: 2.008725e-008
+ //
+ static const float Y = 0.99558162689208984f;
+ static const T root = 1532632.0f / 1048576;
+ static const T root_minor = static_cast<T>(0.3700660185912626595423257213284682051735604e-6L);
+ static const T P[] = {
+ 0.25479851023250261e0,
+ -0.44981331915268368e0,
+ -0.43916936919946835e0,
+ -0.61041765350579073e-1
+ };
+ static const T Q[] = {
+ 0.1e1,
+ 0.15890202430554952e1,
+ 0.65341249856146947e0,
+ 0.63851690523355715e-1
+ };
+ T g = x - root;
+ g -= root_minor;
+ T r = tools::evaluate_polynomial(P, T(x-1)) / tools::evaluate_polynomial(Q, T(x-1));
+ T result = g * Y + g * r;
+
+ return result;
+}
+
+template <class T, class Tag, class Policy>
+T digamma_imp(T x, const Tag* t, const Policy& pol)
+{
+ //
+ // This handles reflection of negative arguments, and all our
+ // error handling, then forwards to the T-specific approximation.
+ //
+ BOOST_MATH_STD_USING // ADL of std functions.
+
+ T result = 0;
+ //
+ // Check for negative arguments and use reflection:
+ //
+ if(x < 0)
+ {
+ // Reflect:
+ x = 1 - x;
+ // Argument reduction for tan:
+ T remainder = x - floor(x);
+ // Shift to negative if > 0.5:
+ if(remainder > 0.5)
+ {
+ remainder -= 1;
+ }
+ //
+ // check for evaluation at a negative pole:
+ //
+ if(remainder == 0)
+ {
+ return policies::raise_pole_error<T>("boost::math::digamma<%1%>(%1%)", 0, (1-x), pol);
+ }
+ result = constants::pi<T>() / tan(constants::pi<T>() * remainder);
+ }
+ //
+ // If we're above the lower-limit for the
+ // asymptotic expansion then use it:
+ //
+ if(x >= digamma_large_lim(t))
+ {
+ result += digamma_imp_large(x, t);
+ }
+ else
+ {
+ //
+ // If x > 2 reduce to the interval [1,2]:
+ //
+ while(x > 2)
+ {
+ x -= 1;
+ result += 1/x;
+ }
+ //
+ // If x < 1 use recurrance to shift to > 1:
+ //
+ if(x < 1)
+ {
+ result = -1/x;
+ x += 1;
+ }
+ result += digamma_imp_1_2(x, t);
+ }
+ return result;
+}
+
+//
+// Initializer: ensure all our constants are initialized prior to the first call of main:
+//
+template <class T, class Policy>
+struct digamma_initializer
+{
+ struct init
+ {
+ init()
+ {
+ boost::math::digamma(T(1.5), Policy());
+ boost::math::digamma(T(500), Policy());
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy>
+const typename digamma_initializer<T, Policy>::init digamma_initializer<T, Policy>::initializer;
+
+} // namespace detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type
+ digamma(T x, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::precision<T, Policy>::type precision_type;
+ typedef typename mpl::if_<
+ mpl::or_<
+ mpl::less_equal<precision_type, mpl::int_<0> >,
+ mpl::greater<precision_type, mpl::int_<64> >
+ >,
+ mpl::int_<0>,
+ typename mpl::if_<
+ mpl::less<precision_type, mpl::int_<25> >,
+ mpl::int_<24>,
+ typename mpl::if_<
+ mpl::less<precision_type, mpl::int_<54> >,
+ mpl::int_<53>,
+ mpl::int_<64>
+ >::type
+ >::type
+ >::type tag_type;
+
+ // Force initialization of constants:
+ detail::digamma_initializer<result_type, Policy>::force_instantiate();
+
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::digamma_imp(
+ static_cast<value_type>(x),
+ static_cast<const tag_type*>(0), pol), "boost::math::digamma<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type
+ digamma(T x)
+{
+ return digamma(x, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+#endif
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Copyright (c) 2006 John Maddock
+// Use, modification and distribution are subject to 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)
+//
+// History:
+// XZ wrote the original of this file as part of the Google
+// Summer of Code 2006. JM modified it to fit into the
+// Boost.Math conceptual framework better, and to ensure
+// that the code continues to work no matter how many digits
+// type T has.
+
+#ifndef BOOST_MATH_ELLINT_1_HPP
+#define BOOST_MATH_ELLINT_1_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/ellint_rf.hpp>
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/tools/workaround.hpp>
+#include <boost/math/special_functions/round.hpp>
+
+// Elliptic integrals (complete and incomplete) of the first kind
+// Carlson, Numerische Mathematik, vol 33, 1 (1979)
+
+namespace boost { namespace math {
+
+template <class T1, class T2, class Policy>
+typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi, const Policy& pol);
+
+namespace detail{
+
+template <typename T, typename Policy>
+T ellint_k_imp(T k, const Policy& pol);
+
+// Elliptic integral (Legendre form) of the first kind
+template <typename T, typename Policy>
+T ellint_f_imp(T phi, T k, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+ static const char* function = "boost::math::ellint_f<%1%>(%1%,%1%)";
+ BOOST_MATH_INSTRUMENT_VARIABLE(phi);
+ BOOST_MATH_INSTRUMENT_VARIABLE(k);
+ BOOST_MATH_INSTRUMENT_VARIABLE(function);
+
+ if (abs(k) > 1)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Got k = %1%, function requires |k| <= 1", k, pol);
+ }
+
+ bool invert = false;
+ if(phi < 0)
+ {
+ BOOST_MATH_INSTRUMENT_VARIABLE(phi);
+ phi = fabs(phi);
+ invert = true;
+ }
+
+ T result;
+
+ if(phi >= tools::max_value<T>())
+ {
+ // Need to handle infinity as a special case:
+ result = policies::raise_overflow_error<T>(function, 0, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ else if(phi > 1 / tools::epsilon<T>())
+ {
+ // Phi is so large that phi%pi is necessarily zero (or garbage),
+ // just return the second part of the duplication formula:
+ result = 2 * phi * ellint_k_imp(k, pol) / constants::pi<T>();
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ else
+ {
+ // Carlson's algorithm works only for |phi| <= pi/2,
+ // use the integrand's periodicity to normalize phi
+ //
+ // Xiaogang's original code used a cast to long long here
+ // but that fails if T has more digits than a long long,
+ // so rewritten to use fmod instead:
+ //
+ BOOST_MATH_INSTRUMENT_CODE("pi/2 = " << constants::pi<T>() / 2);
+ T rphi = boost::math::tools::fmod_workaround(phi, T(constants::half_pi<T>()));
+ BOOST_MATH_INSTRUMENT_VARIABLE(rphi);
+ T m = boost::math::round((phi - rphi) / constants::half_pi<T>());
+ BOOST_MATH_INSTRUMENT_VARIABLE(m);
+ int s = 1;
+ if(boost::math::tools::fmod_workaround(m, T(2)) > 0.5)
+ {
+ m += 1;
+ s = -1;
+ rphi = constants::half_pi<T>() - rphi;
+ BOOST_MATH_INSTRUMENT_VARIABLE(rphi);
+ }
+ T sinp = sin(rphi);
+ T cosp = cos(rphi);
+ BOOST_MATH_INSTRUMENT_VARIABLE(sinp);
+ BOOST_MATH_INSTRUMENT_VARIABLE(cosp);
+ result = s * sinp * ellint_rf_imp(T(cosp * cosp), T(1 - k * k * sinp * sinp), T(1), pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ if(m != 0)
+ {
+ result += m * ellint_k_imp(k, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ }
+ }
+ return invert ? T(-result) : result;
+}
+
+// Complete elliptic integral (Legendre form) of the first kind
+template <typename T, typename Policy>
+T ellint_k_imp(T k, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ static const char* function = "boost::math::ellint_k<%1%>(%1%)";
+
+ if (abs(k) > 1)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Got k = %1%, function requires |k| <= 1", k, pol);
+ }
+ if (abs(k) == 1)
+ {
+ return policies::raise_overflow_error<T>(function, 0, pol);
+ }
+
+ T x = 0;
+ T y = 1 - k * k;
+ T z = 1;
+ T value = ellint_rf_imp(x, y, z, pol);
+
+ return value;
+}
+
+template <typename T, typename Policy>
+inline typename tools::promote_args<T>::type ellint_1(T k, const Policy& pol, const mpl::true_&)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::ellint_k_imp(static_cast<value_type>(k), pol), "boost::math::ellint_1<%1%>(%1%)");
+}
+
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi, const mpl::false_&)
+{
+ return boost::math::ellint_1(k, phi, policies::policy<>());
+}
+
+}
+
+// Complete elliptic integral (Legendre form) of the first kind
+template <typename T>
+inline typename tools::promote_args<T>::type ellint_1(T k)
+{
+ return ellint_1(k, policies::policy<>());
+}
+
+// Elliptic integral (Legendre form) of the first kind
+template <class T1, class T2, class Policy>
+inline typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::ellint_f_imp(static_cast<value_type>(phi), static_cast<value_type>(k), pol), "boost::math::ellint_1<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi)
+{
+ typedef typename policies::is_policy<T2>::type tag_type;
+ return detail::ellint_1(k, phi, tag_type());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_ELLINT_1_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Copyright (c) 2006 John Maddock
+// Use, modification and distribution are subject to 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)
+//
+// History:
+// XZ wrote the original of this file as part of the Google
+// Summer of Code 2006. JM modified it to fit into the
+// Boost.Math conceptual framework better, and to ensure
+// that the code continues to work no matter how many digits
+// type T has.
+
+#ifndef BOOST_MATH_ELLINT_2_HPP
+#define BOOST_MATH_ELLINT_2_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/ellint_rf.hpp>
+#include <boost/math/special_functions/ellint_rd.hpp>
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/tools/workaround.hpp>
+#include <boost/math/special_functions/round.hpp>
+
+// Elliptic integrals (complete and incomplete) of the second kind
+// Carlson, Numerische Mathematik, vol 33, 1 (1979)
+
+namespace boost { namespace math {
+
+template <class T1, class T2, class Policy>
+typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi, const Policy& pol);
+
+namespace detail{
+
+template <typename T, typename Policy>
+T ellint_e_imp(T k, const Policy& pol);
+
+// Elliptic integral (Legendre form) of the second kind
+template <typename T, typename Policy>
+T ellint_e_imp(T phi, T k, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+ bool invert = false;
+ if(phi < 0)
+ {
+ phi = fabs(phi);
+ invert = true;
+ }
+
+ T result;
+
+ if(phi >= tools::max_value<T>())
+ {
+ // Need to handle infinity as a special case:
+ result = policies::raise_overflow_error<T>("boost::math::ellint_e<%1%>(%1%,%1%)", 0, pol);
+ }
+ else if(phi > 1 / tools::epsilon<T>())
+ {
+ // Phi is so large that phi%pi is necessarily zero (or garbage),
+ // just return the second part of the duplication formula:
+ result = 2 * phi * ellint_e_imp(k, pol) / constants::pi<T>();
+ }
+ else
+ {
+ // Carlson's algorithm works only for |phi| <= pi/2,
+ // use the integrand's periodicity to normalize phi
+ //
+ // Xiaogang's original code used a cast to long long here
+ // but that fails if T has more digits than a long long,
+ // so rewritten to use fmod instead:
+ //
+ T rphi = boost::math::tools::fmod_workaround(phi, T(constants::half_pi<T>()));
+ T m = boost::math::round((phi - rphi) / constants::half_pi<T>());
+ int s = 1;
+ if(boost::math::tools::fmod_workaround(m, T(2)) > 0.5)
+ {
+ m += 1;
+ s = -1;
+ rphi = constants::half_pi<T>() - rphi;
+ }
+ T sinp = sin(rphi);
+ T cosp = cos(rphi);
+ T x = cosp * cosp;
+ T t = k * k * sinp * sinp;
+ T y = 1 - t;
+ T z = 1;
+ result = s * sinp * (ellint_rf_imp(x, y, z, pol) - t * ellint_rd_imp(x, y, z, pol) / 3);
+ if(m != 0)
+ result += m * ellint_e_imp(k, pol);
+ }
+ return invert ? T(-result) : result;
+}
+
+// Complete elliptic integral (Legendre form) of the second kind
+template <typename T, typename Policy>
+T ellint_e_imp(T k, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ if (abs(k) > 1)
+ {
+ return policies::raise_domain_error<T>("boost::math::ellint_e<%1%>(%1%)",
+ "Got k = %1%, function requires |k| <= 1", k, pol);
+ }
+ if (abs(k) == 1)
+ {
+ return static_cast<T>(1);
+ }
+
+ T x = 0;
+ T t = k * k;
+ T y = 1 - t;
+ T z = 1;
+ T value = ellint_rf_imp(x, y, z, pol) - t * ellint_rd_imp(x, y, z, pol) / 3;
+
+ return value;
+}
+
+template <typename T, typename Policy>
+inline typename tools::promote_args<T>::type ellint_2(T k, const Policy& pol, const mpl::true_&)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::ellint_e_imp(static_cast<value_type>(k), pol), "boost::math::ellint_2<%1%>(%1%)");
+}
+
+// Elliptic integral (Legendre form) of the second kind
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi, const mpl::false_&)
+{
+ return boost::math::ellint_2(k, phi, policies::policy<>());
+}
+
+} // detail
+
+// Complete elliptic integral (Legendre form) of the second kind
+template <typename T>
+inline typename tools::promote_args<T>::type ellint_2(T k)
+{
+ return ellint_2(k, policies::policy<>());
+}
+
+// Elliptic integral (Legendre form) of the second kind
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi)
+{
+ typedef typename policies::is_policy<T2>::type tag_type;
+ return detail::ellint_2(k, phi, tag_type());
+}
+
+template <class T1, class T2, class Policy>
+inline typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::ellint_e_imp(static_cast<value_type>(phi), static_cast<value_type>(k), pol), "boost::math::ellint_2<%1%>(%1%,%1%)");
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_ELLINT_2_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Copyright (c) 2006 John Maddock
+// Use, modification and distribution are subject to 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)
+//
+// History:
+// XZ wrote the original of this file as part of the Google
+// Summer of Code 2006. JM modified it to fit into the
+// Boost.Math conceptual framework better, and to correctly
+// handle the various corner cases.
+//
+
+#ifndef BOOST_MATH_ELLINT_3_HPP
+#define BOOST_MATH_ELLINT_3_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/ellint_rf.hpp>
+#include <boost/math/special_functions/ellint_rj.hpp>
+#include <boost/math/special_functions/ellint_1.hpp>
+#include <boost/math/special_functions/ellint_2.hpp>
+#include <boost/math/special_functions/log1p.hpp>
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/tools/workaround.hpp>
+#include <boost/math/special_functions/round.hpp>
+
+// Elliptic integrals (complete and incomplete) of the third kind
+// Carlson, Numerische Mathematik, vol 33, 1 (1979)
+
+namespace boost { namespace math {
+
+namespace detail{
+
+template <typename T, typename Policy>
+T ellint_pi_imp(T v, T k, T vc, const Policy& pol);
+
+// Elliptic integral (Legendre form) of the third kind
+template <typename T, typename Policy>
+T ellint_pi_imp(T v, T phi, T k, T vc, const Policy& pol)
+{
+ // Note vc = 1-v presumably without cancellation error.
+ T value, x, y, z, p, t;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+ using namespace boost::math::constants;
+
+ static const char* function = "boost::math::ellint_3<%1%>(%1%,%1%,%1%)";
+
+ if (abs(k) > 1)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Got k = %1%, function requires |k| <= 1", k, pol);
+ }
+
+ T sphi = sin(fabs(phi));
+
+ if(v > 1 / (sphi * sphi))
+ {
+ // Complex result is a domain error:
+ return policies::raise_domain_error<T>(function,
+ "Got v = %1%, but result is complex for v > 1 / sin^2(phi)", v, pol);
+ }
+
+ // Special cases first:
+ if(v == 0)
+ {
+ // A&S 17.7.18 & 19
+ return (k == 0) ? phi : ellint_f_imp(phi, k, pol);
+ }
+ if(phi == constants::pi<T>() / 2)
+ {
+ // Have to filter this case out before the next
+ // special case, otherwise we might get an infinity from
+ // tan(phi).
+ // Also note that since we can't represent PI/2 exactly
+ // in a T, this is a bit of a guess as to the users true
+ // intent...
+ //
+ return ellint_pi_imp(v, k, vc, pol);
+ }
+ if(k == 0)
+ {
+ // A&S 17.7.20:
+ if(v < 1)
+ {
+ T vcr = sqrt(vc);
+ return atan(vcr * tan(phi)) / vcr;
+ }
+ else if(v == 1)
+ {
+ return tan(phi);
+ }
+ else
+ {
+ // v > 1:
+ T vcr = sqrt(-vc);
+ T arg = vcr * tan(phi);
+ return (boost::math::log1p(arg, pol) - boost::math::log1p(-arg, pol)) / (2 * vcr);
+ }
+ }
+
+ if(v < 0)
+ {
+ //
+ // If we don't shift to 0 <= v <= 1 we get
+ // cancellation errors later on. Use
+ // A&S 17.7.15/16 to shift to v > 0:
+ //
+ T k2 = k * k;
+ T N = (k2 - v) / (1 - v);
+ T Nm1 = (1 - k2) / (1 - v);
+ T p2 = sqrt(-v * (k2 - v) / (1 - v));
+ T delta = sqrt(1 - k2 * sphi * sphi);
+ T result = ellint_pi_imp(N, phi, k, Nm1, pol);
+
+ result *= sqrt(Nm1 * (1 - k2 / N));
+ result += ellint_f_imp(phi, k, pol) * k2 / p2;
+ result += atan((p2/2) * sin(2 * phi) / delta);
+ result /= sqrt((1 - v) * (1 - k2 / v));
+ return result;
+ }
+#if 0 // disabled but retained for future reference: see below.
+ if(v > 1)
+ {
+ //
+ // If v > 1 we can use the identity in A&S 17.7.7/8
+ // to shift to 0 <= v <= 1. Unfortunately this
+ // identity appears only to function correctly when
+ // 0 <= phi <= pi/2, but it's when phi is outside that
+ // range that we really need it: That's when
+ // Carlson's formula fails, and what's more the periodicity
+ // reduction used below on phi doesn't work when v > 1.
+ //
+ // So we're stuck... the code is archived here in case
+ // some bright spart can figure out the fix.
+ //
+ T k2 = k * k;
+ T N = k2 / v;
+ T Nm1 = (v - k2) / v;
+ T p1 = sqrt((-vc) * (1 - k2 / v));
+ T delta = sqrt(1 - k2 * sphi * sphi);
+ //
+ // These next two terms have a large amount of cancellation
+ // so it's not clear if this relation is useable even if
+ // the issues with phi > pi/2 can be fixed:
+ //
+ T result = -ellint_pi_imp(N, phi, k, Nm1);
+ result += ellint_f_imp(phi, k);
+ //
+ // This log term gives the complex result when
+ // n > 1/sin^2(phi)
+ // However that case is dealt with as an error above,
+ // so we should always get a real result here:
+ //
+ result += log((delta + p1 * tan(phi)) / (delta - p1 * tan(phi))) / (2 * p1);
+ return result;
+ }
+#endif
+
+ // Carlson's algorithm works only for |phi| <= pi/2,
+ // use the integrand's periodicity to normalize phi
+ //
+ // Xiaogang's original code used a cast to long long here
+ // but that fails if T has more digits than a long long,
+ // so rewritten to use fmod instead:
+ //
+ if(fabs(phi) > 1 / tools::epsilon<T>())
+ {
+ if(v > 1)
+ return policies::raise_domain_error<T>(
+ function,
+ "Got v = %1%, but this is only supported for 0 <= phi <= pi/2", v, pol);
+ //
+ // Phi is so large that phi%pi is necessarily zero (or garbage),
+ // just return the second part of the duplication formula:
+ //
+ value = 2 * fabs(phi) * ellint_pi_imp(v, k, vc, pol) / constants::pi<T>();
+ }
+ else
+ {
+ T rphi = boost::math::tools::fmod_workaround(T(fabs(phi)), T(constants::half_pi<T>()));
+ T m = boost::math::round((fabs(phi) - rphi) / constants::half_pi<T>());
+ int sign = 1;
+ if(boost::math::tools::fmod_workaround(m, T(2)) > 0.5)
+ {
+ m += 1;
+ sign = -1;
+ rphi = constants::half_pi<T>() - rphi;
+ }
+ T sinp = sin(rphi);
+ T cosp = cos(rphi);
+ x = cosp * cosp;
+ t = sinp * sinp;
+ y = 1 - k * k * t;
+ z = 1;
+ if(v * t < 0.5)
+ p = 1 - v * t;
+ else
+ p = x + vc * t;
+ value = sign * sinp * (ellint_rf_imp(x, y, z, pol) + v * t * ellint_rj_imp(x, y, z, p, pol) / 3);
+ if((m > 0) && (vc > 0))
+ value += m * ellint_pi_imp(v, k, vc, pol);
+ }
+
+ if (phi < 0)
+ {
+ value = -value; // odd function
+ }
+ return value;
+}
+
+// Complete elliptic integral (Legendre form) of the third kind
+template <typename T, typename Policy>
+T ellint_pi_imp(T v, T k, T vc, const Policy& pol)
+{
+ // Note arg vc = 1-v, possibly without cancellation errors
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ static const char* function = "boost::math::ellint_pi<%1%>(%1%,%1%)";
+
+ if (abs(k) >= 1)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Got k = %1%, function requires |k| <= 1", k, pol);
+ }
+ if(vc <= 0)
+ {
+ // Result is complex:
+ return policies::raise_domain_error<T>(function,
+ "Got v = %1%, function requires v < 1", v, pol);
+ }
+
+ if(v == 0)
+ {
+ return (k == 0) ? boost::math::constants::pi<T>() / 2 : ellint_k_imp(k, pol);
+ }
+
+ if(v < 0)
+ {
+ T k2 = k * k;
+ T N = (k2 - v) / (1 - v);
+ T Nm1 = (1 - k2) / (1 - v);
+ T p2 = sqrt(-v * (k2 - v) / (1 - v));
+
+ T result = boost::math::detail::ellint_pi_imp(N, k, Nm1, pol);
+
+ result *= sqrt(Nm1 * (1 - k2 / N));
+ result += ellint_k_imp(k, pol) * k2 / p2;
+ result /= sqrt((1 - v) * (1 - k2 / v));
+ return result;
+ }
+
+ T x = 0;
+ T y = 1 - k * k;
+ T z = 1;
+ T p = vc;
+ T value = ellint_rf_imp(x, y, z, pol) + v * ellint_rj_imp(x, y, z, p, pol) / 3;
+
+ return value;
+}
+
+template <class T1, class T2, class T3>
+inline typename tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi, const mpl::false_&)
+{
+ return boost::math::ellint_3(k, v, phi, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline typename tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v, const Policy& pol, const mpl::true_&)
+{
+ typedef typename tools::promote_args<T1, T2>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(
+ detail::ellint_pi_imp(
+ static_cast<value_type>(v),
+ static_cast<value_type>(k),
+ static_cast<value_type>(1-v),
+ pol), "boost::math::ellint_3<%1%>(%1%,%1%)");
+}
+
+} // namespace detail
+
+template <class T1, class T2, class T3, class Policy>
+inline typename tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2, T3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(
+ detail::ellint_pi_imp(
+ static_cast<value_type>(v),
+ static_cast<value_type>(phi),
+ static_cast<value_type>(k),
+ static_cast<value_type>(1-v),
+ pol), "boost::math::ellint_3<%1%>(%1%,%1%,%1%)");
+}
+
+template <class T1, class T2, class T3>
+typename detail::ellint_3_result<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi)
+{
+ typedef typename policies::is_policy<T3>::type tag_type;
+ return detail::ellint_3(k, v, phi, tag_type());
+}
+
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v)
+{
+ return ellint_3(k, v, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_ELLINT_3_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+//
+// History:
+// XZ wrote the original of this file as part of the Google
+// Summer of Code 2006. JM modified it to fit into the
+// Boost.Math conceptual framework better, and to correctly
+// handle the y < 0 case.
+//
+
+#ifndef BOOST_MATH_ELLINT_RC_HPP
+#define BOOST_MATH_ELLINT_RC_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/tools/config.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
+
+// Carlson's degenerate elliptic integral
+// R_C(x, y) = R_F(x, y, y) = 0.5 * \int_{0}^{\infty} (t+x)^{-1/2} (t+y)^{-1} dt
+// Carlson, Numerische Mathematik, vol 33, 1 (1979)
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T ellint_rc_imp(T x, T y, const Policy& pol)
+{
+ T value, S, u, lambda, tolerance, prefix;
+ unsigned long k;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ static const char* function = "boost::math::ellint_rc<%1%>(%1%,%1%)";
+
+ if(x < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Argument x must be non-negative but got %1%", x, pol);
+ }
+ if(y == 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Argument y must not be zero but got %1%", y, pol);
+ }
+
+ // error scales as the 6th power of tolerance
+ tolerance = pow(4 * tools::epsilon<T>(), T(1) / 6);
+
+ // for y < 0, the integral is singular, return Cauchy principal value
+ if (y < 0)
+ {
+ prefix = sqrt(x / (x - y));
+ x = x - y;
+ y = -y;
+ }
+ else
+ prefix = 1;
+
+ // duplication:
+ k = 1;
+ do
+ {
+ u = (x + y + y) / 3;
+ S = y / u - 1; // 1 - x / u = 2 * S
+
+ if (2 * abs(S) < tolerance)
+ break;
+
+ T sx = sqrt(x);
+ T sy = sqrt(y);
+ lambda = 2 * sx * sy + y;
+ x = (x + lambda) / 4;
+ y = (y + lambda) / 4;
+ ++k;
+ }while(k < policies::get_max_series_iterations<Policy>());
+ // Check to see if we gave up too soon:
+ policies::check_series_iterations<T>(function, k, pol);
+
+ // Taylor series expansion to the 5th order
+ value = (1 + S * S * (T(3) / 10 + S * (T(1) / 7 + S * (T(3) / 8 + S * T(9) / 22)))) / sqrt(u);
+
+ return value * prefix;
+}
+
+} // namespace detail
+
+template <class T1, class T2, class Policy>
+inline typename tools::promote_args<T1, T2>::type
+ ellint_rc(T1 x, T2 y, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(
+ detail::ellint_rc_imp(
+ static_cast<value_type>(x),
+ static_cast<value_type>(y), pol), "boost::math::ellint_rc<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type
+ ellint_rc(T1 x, T2 y)
+{
+ return ellint_rc(x, y, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_ELLINT_RC_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+//
+// History:
+// XZ wrote the original of this file as part of the Google
+// Summer of Code 2006. JM modified it slightly to fit into the
+// Boost.Math conceptual framework better.
+
+#ifndef BOOST_MATH_ELLINT_RD_HPP
+#define BOOST_MATH_ELLINT_RD_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/tools/config.hpp>
+#include <boost/math/policies/error_handling.hpp>
+
+// Carlson's elliptic integral of the second kind
+// R_D(x, y, z) = R_J(x, y, z, z) = 1.5 * \int_{0}^{\infty} [(t+x)(t+y)]^{-1/2} (t+z)^{-3/2} dt
+// Carlson, Numerische Mathematik, vol 33, 1 (1979)
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T ellint_rd_imp(T x, T y, T z, const Policy& pol)
+{
+ T value, u, lambda, sigma, factor, tolerance;
+ T X, Y, Z, EA, EB, EC, ED, EE, S1, S2;
+ unsigned long k;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ static const char* function = "boost::math::ellint_rd<%1%>(%1%,%1%,%1%)";
+
+ if (x < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Argument x must be >= 0, but got %1%", x, pol);
+ }
+ if (y < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Argument y must be >= 0, but got %1%", y, pol);
+ }
+ if (z <= 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Argument z must be > 0, but got %1%", z, pol);
+ }
+ if (x + y == 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "At most one argument can be zero, but got, x + y = %1%", x+y, pol);
+ }
+
+ // error scales as the 6th power of tolerance
+ tolerance = pow(tools::epsilon<T>() / 3, T(1)/6);
+
+ // duplication
+ sigma = 0;
+ factor = 1;
+ k = 1;
+ do
+ {
+ u = (x + y + z + z + z) / 5;
+ X = (u - x) / u;
+ Y = (u - y) / u;
+ Z = (u - z) / u;
+ if ((tools::max)(abs(X), abs(Y), abs(Z)) < tolerance)
+ break;
+ T sx = sqrt(x);
+ T sy = sqrt(y);
+ T sz = sqrt(z);
+ lambda = sy * (sx + sz) + sz * sx; //sqrt(x * y) + sqrt(y * z) + sqrt(z * x);
+ sigma += factor / (sz * (z + lambda));
+ factor /= 4;
+ x = (x + lambda) / 4;
+ y = (y + lambda) / 4;
+ z = (z + lambda) / 4;
+ ++k;
+ }
+ while(k < policies::get_max_series_iterations<Policy>());
+
+ // Check to see if we gave up too soon:
+ policies::check_series_iterations<T>(function, k, pol);
+
+ // Taylor series expansion to the 5th order
+ EA = X * Y;
+ EB = Z * Z;
+ EC = EA - EB;
+ ED = EA - 6 * EB;
+ EE = ED + EC + EC;
+ S1 = ED * (ED * T(9) / 88 - Z * EE * T(9) / 52 - T(3) / 14);
+ S2 = Z * (EE / 6 + Z * (-EC * T(9) / 22 + Z * EA * T(3) / 26));
+ value = 3 * sigma + factor * (1 + S1 + S2) / (u * sqrt(u));
+
+ return value;
+}
+
+} // namespace detail
+
+template <class T1, class T2, class T3, class Policy>
+inline typename tools::promote_args<T1, T2, T3>::type
+ ellint_rd(T1 x, T2 y, T3 z, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2, T3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(
+ detail::ellint_rd_imp(
+ static_cast<value_type>(x),
+ static_cast<value_type>(y),
+ static_cast<value_type>(z), pol), "boost::math::ellint_rd<%1%>(%1%,%1%,%1%)");
+}
+
+template <class T1, class T2, class T3>
+inline typename tools::promote_args<T1, T2, T3>::type
+ ellint_rd(T1 x, T2 y, T3 z)
+{
+ return ellint_rd(x, y, z, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_ELLINT_RD_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+//
+// History:
+// XZ wrote the original of this file as part of the Google
+// Summer of Code 2006. JM modified it to fit into the
+// Boost.Math conceptual framework better, and to handle
+// types longer than 80-bit reals.
+//
+#ifndef BOOST_MATH_ELLINT_RF_HPP
+#define BOOST_MATH_ELLINT_RF_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/tools/config.hpp>
+
+#include <boost/math/policies/error_handling.hpp>
+
+// Carlson's elliptic integral of the first kind
+// R_F(x, y, z) = 0.5 * \int_{0}^{\infty} [(t+x)(t+y)(t+z)]^{-1/2} dt
+// Carlson, Numerische Mathematik, vol 33, 1 (1979)
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T ellint_rf_imp(T x, T y, T z, const Policy& pol)
+{
+ T value, X, Y, Z, E2, E3, u, lambda, tolerance;
+ unsigned long k;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ static const char* function = "boost::math::ellint_rf<%1%>(%1%,%1%,%1%)";
+
+ if (x < 0 || y < 0 || z < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "domain error, all arguments must be non-negative, "
+ "only sensible result is %1%.",
+ std::numeric_limits<T>::quiet_NaN(), pol);
+ }
+ if (x + y == 0 || y + z == 0 || z + x == 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "domain error, at most one argument can be zero, "
+ "only sensible result is %1%.",
+ std::numeric_limits<T>::quiet_NaN(), pol);
+ }
+
+ // Carlson scales error as the 6th power of tolerance,
+ // but this seems not to work for types larger than
+ // 80-bit reals, this heuristic seems to work OK:
+ if(policies::digits<T, Policy>() > 64)
+ {
+ tolerance = pow(tools::epsilon<T>(), T(1)/4.25f);
+ BOOST_MATH_INSTRUMENT_VARIABLE(tolerance);
+ }
+ else
+ {
+ tolerance = pow(4*tools::epsilon<T>(), T(1)/6);
+ BOOST_MATH_INSTRUMENT_VARIABLE(tolerance);
+ }
+
+ // duplication
+ k = 1;
+ do
+ {
+ u = (x + y + z) / 3;
+ X = (u - x) / u;
+ Y = (u - y) / u;
+ Z = (u - z) / u;
+
+ // Termination condition:
+ if ((tools::max)(abs(X), abs(Y), abs(Z)) < tolerance)
+ break;
+
+ T sx = sqrt(x);
+ T sy = sqrt(y);
+ T sz = sqrt(z);
+ lambda = sy * (sx + sz) + sz * sx;
+ x = (x + lambda) / 4;
+ y = (y + lambda) / 4;
+ z = (z + lambda) / 4;
+ ++k;
+ }
+ while(k < policies::get_max_series_iterations<Policy>());
+
+ // Check to see if we gave up too soon:
+ policies::check_series_iterations<T>(function, k, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(k);
+
+ // Taylor series expansion to the 5th order
+ E2 = X * Y - Z * Z;
+ E3 = X * Y * Z;
+ value = (1 + E2*(E2/24 - E3*T(3)/44 - T(0.1)) + E3/14) / sqrt(u);
+ BOOST_MATH_INSTRUMENT_VARIABLE(value);
+
+ return value;
+}
+
+} // namespace detail
+
+template <class T1, class T2, class T3, class Policy>
+inline typename tools::promote_args<T1, T2, T3>::type
+ ellint_rf(T1 x, T2 y, T3 z, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2, T3>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(
+ detail::ellint_rf_imp(
+ static_cast<value_type>(x),
+ static_cast<value_type>(y),
+ static_cast<value_type>(z), pol), "boost::math::ellint_rf<%1%>(%1%,%1%,%1%)");
+}
+
+template <class T1, class T2, class T3>
+inline typename tools::promote_args<T1, T2, T3>::type
+ ellint_rf(T1 x, T2 y, T3 z)
+{
+ return ellint_rf(x, y, z, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_ELLINT_RF_HPP
+
--- /dev/null
+// Copyright (c) 2006 Xiaogang Zhang
+// Use, modification and distribution are subject to 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)
+//
+// History:
+// XZ wrote the original of this file as part of the Google
+// Summer of Code 2006. JM modified it to fit into the
+// Boost.Math conceptual framework better, and to correctly
+// handle the p < 0 case.
+//
+
+#ifndef BOOST_MATH_ELLINT_RJ_HPP
+#define BOOST_MATH_ELLINT_RJ_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/tools/config.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/special_functions/ellint_rc.hpp>
+#include <boost/math/special_functions/ellint_rf.hpp>
+
+// Carlson's elliptic integral of the third kind
+// R_J(x, y, z, p) = 1.5 * \int_{0}^{\infty} (t+p)^{-1} [(t+x)(t+y)(t+z)]^{-1/2} dt
+// Carlson, Numerische Mathematik, vol 33, 1 (1979)
+
+namespace boost { namespace math { namespace detail{
+
+template <typename T, typename Policy>
+T ellint_rj_imp(T x, T y, T z, T p, const Policy& pol)
+{
+ T value, u, lambda, alpha, beta, sigma, factor, tolerance;
+ T X, Y, Z, P, EA, EB, EC, E2, E3, S1, S2, S3;
+ unsigned long k;
+
+ BOOST_MATH_STD_USING
+ using namespace boost::math::tools;
+
+ static const char* function = "boost::math::ellint_rj<%1%>(%1%,%1%,%1%)";
+
+ if (x < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Argument x must be non-negative, but got x = %1%", x, pol);
+ }
+ if(y < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Argument y must be non-negative, but got y = %1%", y, pol);
+ }
+ if(z < 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Argument z must be non-negative, but got z = %1%", z, pol);
+ }
+ if(p == 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "Argument p must not be zero, but got p = %1%", p, pol);
+ }
+ if (x + y == 0 || y + z == 0 || z + x == 0)
+ {
+ return policies::raise_domain_error<T>(function,
+ "At most one argument can be zero, "
+ "only possible result is %1%.", std::numeric_limits<T>::quiet_NaN(), pol);
+ }
+
+ // error scales as the 6th power of tolerance
+ tolerance = pow(T(1) * tools::epsilon<T>() / 3, T(1) / 6);
+
+ // for p < 0, the integral is singular, return Cauchy principal value
+ if (p < 0)
+ {
+ //
+ // We must ensure that (z - y) * (y - x) is positive.
+ // Since the integral is symmetrical in x, y and z
+ // we can just permute the values:
+ //
+ if(x > y)
+ std::swap(x, y);
+ if(y > z)
+ std::swap(y, z);
+ if(x > y)
+ std::swap(x, y);
+
+ T q = -p;
+ T pmy = (z - y) * (y - x) / (y + q); // p - y
+
+ BOOST_ASSERT(pmy >= 0);
+
+ p = pmy + y;
+ value = boost::math::ellint_rj(x, y, z, p, pol);
+ value *= pmy;
+ value -= 3 * boost::math::ellint_rf(x, y, z, pol);
+ value += 3 * sqrt((x * y * z) / (x * z + p * q)) * boost::math::ellint_rc(x * z + p * q, p * q, pol);
+ value /= (y + q);
+ return value;
+ }
+
+ // duplication
+ sigma = 0;
+ factor = 1;
+ k = 1;
+ do
+ {
+ u = (x + y + z + p + p) / 5;
+ X = (u - x) / u;
+ Y = (u - y) / u;
+ Z = (u - z) / u;
+ P = (u - p) / u;
+
+ if ((tools::max)(abs(X), abs(Y), abs(Z), abs(P)) < tolerance)
+ break;
+
+ T sx = sqrt(x);
+ T sy = sqrt(y);
+ T sz = sqrt(z);
+
+ lambda = sy * (sx + sz) + sz * sx;
+ alpha = p * (sx + sy + sz) + sx * sy * sz;
+ alpha *= alpha;
+ beta = p * (p + lambda) * (p + lambda);
+ sigma += factor * boost::math::ellint_rc(alpha, beta, pol);
+ factor /= 4;
+ x = (x + lambda) / 4;
+ y = (y + lambda) / 4;
+ z = (z + lambda) / 4;
+ p = (p + lambda) / 4;
+ ++k;
+ }
+ while(k < policies::get_max_series_iterations<Policy>());
+
+ // Check to see if we gave up too soon:
+ policies::check_series_iterations<T>(function, k, pol);
+
+ // Taylor series expansion to the 5th order
+ EA = X * Y + Y * Z + Z * X;
+ EB = X * Y * Z;
+ EC = P * P;
+ E2 = EA - 3 * EC;
+ E3 = EB + 2 * P * (EA - EC);
+ S1 = 1 + E2 * (E2 * T(9) / 88 - E3 * T(9) / 52 - T(3) / 14);
+ S2 = EB * (T(1) / 6 + P * (T(-6) / 22 + P * T(3) / 26));
+ S3 = P * ((EA - EC) / 3 - P * EA * T(3) / 22);
+ value = 3 * sigma + factor * (S1 + S2 + S3) / (u * sqrt(u));
+
+ return value;
+}
+
+} // namespace detail
+
+template <class T1, class T2, class T3, class T4, class Policy>
+inline typename tools::promote_args<T1, T2, T3, T4>::type
+ ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2, T3, T4>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(
+ detail::ellint_rj_imp(
+ static_cast<value_type>(x),
+ static_cast<value_type>(y),
+ static_cast<value_type>(z),
+ static_cast<value_type>(p),
+ pol), "boost::math::ellint_rj<%1%>(%1%,%1%,%1%,%1%)");
+}
+
+template <class T1, class T2, class T3, class T4>
+inline typename tools::promote_args<T1, T2, T3, T4>::type
+ ellint_rj(T1 x, T2 y, T3 z, T4 p)
+{
+ return ellint_rj(x, y, z, p, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_ELLINT_RJ_HPP
+
#include <boost/math/special_functions/gamma.hpp>
#include <boost/math/tools/roots.hpp>
#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/tools/big_constant.hpp>
namespace boost{ namespace math{
detail::erf_asympt_series_t<T> s(z);
boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
result = boost::math::tools::sum_series(s, policies::get_epsilon<T, Policy>(), max_iter, 1);
- policies::check_series_iterations("boost::math::erf<%1%>(%1%, %1%)", max_iter, pol);
+ policies::check_series_iterations<T>("boost::math::erf<%1%>(%1%, %1%)", max_iter, pol);
}
else
{
if(z < 0)
{
if(!invert)
- return -erf_imp(-z, invert, pol, t);
+ return -erf_imp(T(-z), invert, pol, t);
else if(z < -0.5)
- return 2 - erf_imp(-z, invert, pol, t);
+ return 2 - erf_imp(T(-z), invert, pol, t);
else
- return 1 + erf_imp(-z, false, pol, t);
+ return 1 + erf_imp(T(-z), false, pol, t);
}
T result;
}
else
{
- result = static_cast<T>(z * 1.125f + z * 0.003379167095512573896158903121545171688L);
+ static const T c = BOOST_MATH_BIG_CONSTANT(T, 53, 0.003379167095512573896158903121545171688);
+ result = static_cast<T>(z * 1.125f + z * c);
}
}
else
static const T Y = 1.044948577880859375f;
static const T P[] = {
- 0.0834305892146531832907L,
- -0.338165134459360935041L,
- -0.0509990735146777432841L,
- -0.00772758345802133288487L,
- -0.000322780120964605683831L,
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0834305892146531832907),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.338165134459360935041),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0509990735146777432841),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00772758345802133288487),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.000322780120964605683831),
};
static const T Q[] = {
- 1L,
- 0.455004033050794024546L,
- 0.0875222600142252549554L,
- 0.00858571925074406212772L,
- 0.000370900071787748000569L,
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.455004033050794024546),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0875222600142252549554),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00858571925074406212772),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.000370900071787748000569),
};
T zz = z * z;
result = z * (Y + tools::evaluate_polynomial(P, zz) / tools::evaluate_polynomial(Q, zz));
// Max Error found at double precision = 4.841816e-17
static const T Y = 0.405935764312744140625f;
static const T P[] = {
- -0.098090592216281240205L,
- 0.178114665841120341155L,
- 0.191003695796775433986L,
- 0.0888900368967884466578L,
- 0.0195049001251218801359L,
- 0.00180424538297014223957L,
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.098090592216281240205),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.178114665841120341155),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.191003695796775433986),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0888900368967884466578),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0195049001251218801359),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00180424538297014223957),
};
static const T Q[] = {
- 1L,
- 1.84759070983002217845L,
- 1.42628004845511324508L,
- 0.578052804889902404909L,
- 0.12385097467900864233L,
- 0.0113385233577001411017L,
- 0.337511472483094676155e-5L,
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.84759070983002217845),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.42628004845511324508),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.578052804889902404909),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.12385097467900864233),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0113385233577001411017),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.337511472483094676155e-5),
};
- result = Y + tools::evaluate_polynomial(P, z - 0.5) / tools::evaluate_polynomial(Q, z - 0.5);
+ BOOST_MATH_INSTRUMENT_VARIABLE(Y);
+ BOOST_MATH_INSTRUMENT_VARIABLE(P[0]);
+ BOOST_MATH_INSTRUMENT_VARIABLE(Q[0]);
+ BOOST_MATH_INSTRUMENT_VARIABLE(z);
+ result = Y + tools::evaluate_polynomial(P, T(z - 0.5)) / tools::evaluate_polynomial(Q, T(z - 0.5));
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
result *= exp(-z * z) / z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
}
else if(z < 2.5f)
{
// Maximum Relative Change in Control Points: 9.886e-05
static const T Y = 0.50672817230224609375f;
static const T P[] = {
- -0.0243500476207698441272L,
- 0.0386540375035707201728L,
- 0.04394818964209516296L,
- 0.0175679436311802092299L,
- 0.00323962406290842133584L,
- 0.000235839115596880717416L,
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0243500476207698441272),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0386540375035707201728),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.04394818964209516296),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0175679436311802092299),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00323962406290842133584),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.000235839115596880717416),
};
static const T Q[] = {
- 1L,
- 1.53991494948552447182L,
- 0.982403709157920235114L,
- 0.325732924782444448493L,
- 0.0563921837420478160373L,
- 0.00410369723978904575884L,
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.53991494948552447182),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.982403709157920235114),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.325732924782444448493),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0563921837420478160373),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00410369723978904575884),
};
- result = Y + tools::evaluate_polynomial(P, z - 1.5) / tools::evaluate_polynomial(Q, z - 1.5);
+ result = Y + tools::evaluate_polynomial(P, T(z - 1.5)) / tools::evaluate_polynomial(Q, T(z - 1.5));
result *= exp(-z * z) / z;
}
else if(z < 4.5f)
// Max Error found at double precision = 2.062515e-17
static const T Y = 0.5405750274658203125f;
static const T P[] = {
- 0.00295276716530971662634L,
- 0.0137384425896355332126L,
- 0.00840807615555585383007L,
- 0.00212825620914618649141L,
- 0.000250269961544794627958L,
- 0.113212406648847561139e-4L,
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00295276716530971662634),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0137384425896355332126),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00840807615555585383007),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00212825620914618649141),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.000250269961544794627958),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.113212406648847561139e-4),
};
static const T Q[] = {
- 1L,
- 1.04217814166938418171L,
- 0.442597659481563127003L,
- 0.0958492726301061423444L,
- 0.0105982906484876531489L,
- 0.000479411269521714493907L,
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.04217814166938418171),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.442597659481563127003),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0958492726301061423444),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0105982906484876531489),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.000479411269521714493907),
};
- result = Y + tools::evaluate_polynomial(P, z - 3.5) / tools::evaluate_polynomial(Q, z - 3.5);
+ result = Y + tools::evaluate_polynomial(P, T(z - 3.5)) / tools::evaluate_polynomial(Q, T(z - 3.5));
result *= exp(-z * z) / z;
}
else
// Maximum Relative Change in Control Points: 1.357e-05
static const T Y = 0.5579090118408203125f;
static const T P[] = {
- 0.00628057170626964891937L,
- 0.0175389834052493308818L,
- -0.212652252872804219852L,
- -0.687717681153649930619L,
- -2.5518551727311523996L,
- -3.22729451764143718517L,
- -2.8175401114513378771L,
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00628057170626964891937),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0175389834052493308818),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.212652252872804219852),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.687717681153649930619),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -2.5518551727311523996),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -3.22729451764143718517),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -2.8175401114513378771),
};
static const T Q[] = {
- 1L,
- 2.79257750980575282228L,
- 11.0567237927800161565L,
- 15.930646027911794143L,
- 22.9367376522880577224L,
- 13.5064170191802889145L,
- 5.48409182238641741584L,
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 2.79257750980575282228),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 11.0567237927800161565),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 15.930646027911794143),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 22.9367376522880577224),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 13.5064170191802889145),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 5.48409182238641741584),
};
- result = Y + tools::evaluate_polynomial(P, 1 / z) / tools::evaluate_polynomial(Q, 1 / z);
+ result = Y + tools::evaluate_polynomial(P, T(1 / z)) / tools::evaluate_polynomial(Q, T(1 / z));
result *= exp(-z * z) / z;
}
}
}
return result;
-} // template <class T, class L>T erf_imp(T z, bool invert, const L& l, const mpl::int_<53>& t)
+} // template <class T, class Lanczos>T erf_imp(T z, bool invert, const Lanczos& l, const mpl::int_<53>& t)
template <class T, class Policy>
if(z < 0)
{
if(!invert)
- return -erf_imp(-z, invert, pol, t);
+ return -erf_imp(T(-z), invert, pol, t);
else if(z < -0.5)
- return 2 - erf_imp(-z, invert, pol, t);
+ return 2 - erf_imp(T(-z), invert, pol, t);
else
- return 1 + erf_imp(-z, false, pol, t);
+ return 1 + erf_imp(T(-z), false, pol, t);
}
T result;
}
else if(z < 1e-10)
{
- result = z * 1.125 + z * 0.003379167095512573896158903121545171688L;
+ static const T c = BOOST_MATH_BIG_CONSTANT(T, 64, 0.003379167095512573896158903121545171688);
+ result = z * 1.125 + z * c;
}
else
{
// Maximum Relative Change in Control Points: 1.474e-04
static const T Y = 1.044948577880859375f;
static const T P[] = {
- 0.0834305892146531988966L,
- -0.338097283075565413695L,
- -0.0509602734406067204596L,
- -0.00904906346158537794396L,
- -0.000489468651464798669181L,
- -0.200305626366151877759e-4L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0834305892146531988966),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.338097283075565413695),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0509602734406067204596),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00904906346158537794396),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000489468651464798669181),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.200305626366151877759e-4),
};
static const T Q[] = {
- 1L,
- 0.455817300515875172439L,
- 0.0916537354356241792007L,
- 0.0102722652675910031202L,
- 0.000650511752687851548735L,
- 0.189532519105655496778e-4L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.455817300515875172439),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0916537354356241792007),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0102722652675910031202),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000650511752687851548735),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.189532519105655496778e-4),
};
- result = z * (Y + tools::evaluate_polynomial(P, z * z) / tools::evaluate_polynomial(Q, z * z));
+ result = z * (Y + tools::evaluate_polynomial(P, T(z * z)) / tools::evaluate_polynomial(Q, T(z * z)));
}
}
else if(invert ? (z < 110) : (z < 6.4f))
// Maximum Relative Change in Control Points: 5.110e-03
static const T Y = 0.405935764312744140625f;
static const T P[] = {
- -0.0980905922162812031672L,
- 0.159989089922969141329L,
- 0.222359821619935712378L,
- 0.127303921703577362312L,
- 0.0384057530342762400273L,
- 0.00628431160851156719325L,
- 0.000441266654514391746428L,
- 0.266689068336295642561e-7L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0980905922162812031672),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.159989089922969141329),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.222359821619935712378),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.127303921703577362312),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0384057530342762400273),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00628431160851156719325),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000441266654514391746428),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.266689068336295642561e-7),
};
static const T Q[] = {
- 1L,
- 2.03237474985469469291L,
- 1.78355454954969405222L,
- 0.867940326293760578231L,
- 0.248025606990021698392L,
- 0.0396649631833002269861L,
- 0.00279220237309449026796L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 2.03237474985469469291),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.78355454954969405222),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.867940326293760578231),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.248025606990021698392),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0396649631833002269861),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00279220237309449026796),
};
- result = Y + tools::evaluate_polynomial(P, z - 0.5f) / tools::evaluate_polynomial(Q, z - 0.5f);
+ result = Y + tools::evaluate_polynomial(P, T(z - 0.5f)) / tools::evaluate_polynomial(Q, T(z - 0.5f));
result *= exp(-z * z) / z;
}
else if(z < 2.5)
// Maximum Relative Change in Control Points: 1.793e-04
static const T Y = 0.50672817230224609375f;
static const T P[] = {
- -0.024350047620769840217L,
- 0.0343522687935671451309L,
- 0.0505420824305544949541L,
- 0.0257479325917757388209L,
- 0.00669349844190354356118L,
- 0.00090807914416099524444L,
- 0.515917266698050027934e-4L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.024350047620769840217),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0343522687935671451309),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0505420824305544949541),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0257479325917757388209),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00669349844190354356118),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00090807914416099524444),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.515917266698050027934e-4),
};
static const T Q[] = {
- 1L,
- 1.71657861671930336344L,
- 1.26409634824280366218L,
- 0.512371437838969015941L,
- 0.120902623051120950935L,
- 0.0158027197831887485261L,
- 0.000897871370778031611439L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.71657861671930336344),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.26409634824280366218),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.512371437838969015941),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.120902623051120950935),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0158027197831887485261),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000897871370778031611439),
};
- result = Y + tools::evaluate_polynomial(P, z - 1.5f) / tools::evaluate_polynomial(Q, z - 1.5f);
+ result = Y + tools::evaluate_polynomial(P, T(z - 1.5f)) / tools::evaluate_polynomial(Q, T(z - 1.5f));
result *= exp(-z * z) / z;
}
else if(z < 4.5)
// Max Error found at long double precision = 1.446908e-20
static const T Y = 0.5405750274658203125f;
static const T P[] = {
- 0.0029527671653097284033L,
- 0.0141853245895495604051L,
- 0.0104959584626432293901L,
- 0.00343963795976100077626L,
- 0.00059065441194877637899L,
- 0.523435380636174008685e-4L,
- 0.189896043050331257262e-5L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0029527671653097284033),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0141853245895495604051),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0104959584626432293901),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00343963795976100077626),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00059065441194877637899),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.523435380636174008685e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.189896043050331257262e-5),
};
static const T Q[] = {
- 1L,
- 1.19352160185285642574L,
- 0.603256964363454392857L,
- 0.165411142458540585835L,
- 0.0259729870946203166468L,
- 0.00221657568292893699158L,
- 0.804149464190309799804e-4L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.19352160185285642574),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.603256964363454392857),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.165411142458540585835),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0259729870946203166468),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00221657568292893699158),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.804149464190309799804e-4),
};
- result = Y + tools::evaluate_polynomial(P, z - 3.5f) / tools::evaluate_polynomial(Q, z - 3.5f);
+ result = Y + tools::evaluate_polynomial(P, T(z - 3.5f)) / tools::evaluate_polynomial(Q, T(z - 3.5f));
result *= exp(-z * z) / z;
}
else
// Maximum Relative Change in Control Points: 2.319e-05
static const T Y = 0.55825519561767578125f;
static const T P[] = {
- 0.00593438793008050214106L,
- 0.0280666231009089713937L,
- -0.141597835204583050043L,
- -0.978088201154300548842L,
- -5.47351527796012049443L,
- -13.8677304660245326627L,
- -27.1274948720539821722L,
- -29.2545152747009461519L,
- -16.8865774499799676937L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00593438793008050214106),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0280666231009089713937),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.141597835204583050043),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.978088201154300548842),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -5.47351527796012049443),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -13.8677304660245326627),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -27.1274948720539821722),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -29.2545152747009461519),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -16.8865774499799676937),
};
static const T Q[] = {
- 1L,
- 4.72948911186645394541L,
- 23.6750543147695749212L,
- 60.0021517335693186785L,
- 131.766251645149522868L,
- 178.167924971283482513L,
- 182.499390505915222699L,
- 104.365251479578577989L,
- 30.8365511891224291717L,
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 4.72948911186645394541),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 23.6750543147695749212),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 60.0021517335693186785),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 131.766251645149522868),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 178.167924971283482513),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 182.499390505915222699),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 104.365251479578577989),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 30.8365511891224291717),
};
- result = Y + tools::evaluate_polynomial(P, 1 / z) / tools::evaluate_polynomial(Q, 1 / z);
+ result = Y + tools::evaluate_polynomial(P, T(1 / z)) / tools::evaluate_polynomial(Q, T(1 / z));
result *= exp(-z * z) / z;
}
}
}
return result;
-} // template <class T, class L>T erf_imp(T z, bool invert, const L& l, const mpl::int_<64>& t)
+} // template <class T, class Lanczos>T erf_imp(T z, bool invert, const Lanczos& l, const mpl::int_<64>& t)
template <class T, class Policy>
if(z < 0)
{
if(!invert)
- return -erf_imp(-z, invert, pol, t);
+ return -erf_imp(T(-z), invert, pol, t);
else if(z < -0.5)
- return 2 - erf_imp(-z, invert, pol, t);
+ return 2 - erf_imp(T(-z), invert, pol, t);
else
- return 1 + erf_imp(-z, false, pol, t);
+ return 1 + erf_imp(T(-z), false, pol, t);
}
T result;
}
else if(z < 1e-20)
{
- result = z * 1.125 + z * 0.003379167095512573896158903121545171688L;
+ static const T c = BOOST_MATH_BIG_CONSTANT(T, 113, 0.003379167095512573896158903121545171688);
+ result = z * 1.125 + z * c;
}
else
{
// Maximum Relative Change in Control Points: 3.492e-10
static const T Y = 1.0841522216796875f;
static const T P[] = {
- 0.0442269454158250738961589031215451778L,
- -0.35549265736002144875335323556961233L,
- -0.0582179564566667896225454670863270393L,
- -0.0112694696904802304229950538453123925L,
- -0.000805730648981801146251825329609079099L,
- -0.566304966591936566229702842075966273e-4L,
- -0.169655010425186987820201021510002265e-5L,
- -0.344448249920445916714548295433198544e-7L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0442269454158250738961589031215451778),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.35549265736002144875335323556961233),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0582179564566667896225454670863270393),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0112694696904802304229950538453123925),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000805730648981801146251825329609079099),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.566304966591936566229702842075966273e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.169655010425186987820201021510002265e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.344448249920445916714548295433198544e-7),
};
static const T Q[] = {
- 1L,
- 0.466542092785657604666906909196052522L,
- 0.100005087012526447295176964142107611L,
- 0.0128341535890117646540050072234142603L,
- 0.00107150448466867929159660677016658186L,
- 0.586168368028999183607733369248338474e-4L,
- 0.196230608502104324965623171516808796e-5L,
- 0.313388521582925207734229967907890146e-7L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.466542092785657604666906909196052522),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.100005087012526447295176964142107611),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0128341535890117646540050072234142603),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00107150448466867929159660677016658186),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.586168368028999183607733369248338474e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.196230608502104324965623171516808796e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.313388521582925207734229967907890146e-7),
};
- result = z * (Y + tools::evaluate_polynomial(P, z * z) / tools::evaluate_polynomial(Q, z * z));
+ result = z * (Y + tools::evaluate_polynomial(P, T(z * z)) / tools::evaluate_polynomial(Q, T(z * z)));
}
}
else if(invert ? (z < 110) : (z < 8.65f))
// Maximum Relative Change in Control Points: 6.127e-05
static const T Y = 0.371877193450927734375f;
static const T P[] = {
- -0.0640320213544647969396032886581290455L,
- 0.200769874440155895637857443946706731L,
- 0.378447199873537170666487408805779826L,
- 0.30521399466465939450398642044975127L,
- 0.146890026406815277906781824723458196L,
- 0.0464837937749539978247589252732769567L,
- 0.00987895759019540115099100165904822903L,
- 0.00137507575429025512038051025154301132L,
- 0.0001144764551085935580772512359680516L,
- 0.436544865032836914773944382339900079e-5L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0640320213544647969396032886581290455),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.200769874440155895637857443946706731),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.378447199873537170666487408805779826),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.30521399466465939450398642044975127),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.146890026406815277906781824723458196),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0464837937749539978247589252732769567),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00987895759019540115099100165904822903),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00137507575429025512038051025154301132),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0001144764551085935580772512359680516),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.436544865032836914773944382339900079e-5),
};
static const T Q[] = {
- 1L,
- 2.47651182872457465043733800302427977L,
- 2.78706486002517996428836400245547955L,
- 1.87295924621659627926365005293130693L,
- 0.829375825174365625428280908787261065L,
- 0.251334771307848291593780143950311514L,
- 0.0522110268876176186719436765734722473L,
- 0.00718332151250963182233267040106902368L,
- 0.000595279058621482041084986219276392459L,
- 0.226988669466501655990637599399326874e-4L,
- 0.270666232259029102353426738909226413e-10L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.47651182872457465043733800302427977),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.78706486002517996428836400245547955),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.87295924621659627926365005293130693),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.829375825174365625428280908787261065),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.251334771307848291593780143950311514),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0522110268876176186719436765734722473),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00718332151250963182233267040106902368),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000595279058621482041084986219276392459),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.226988669466501655990637599399326874e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.270666232259029102353426738909226413e-10),
};
- result = Y + tools::evaluate_polynomial(P, z - 0.5f) / tools::evaluate_polynomial(Q, z - 0.5f);
+ result = Y + tools::evaluate_polynomial(P, T(z - 0.5f)) / tools::evaluate_polynomial(Q, T(z - 0.5f));
result *= exp(-z * z) / z;
}
else if(z < 1.5)
// Maximum Relative Change in Control Points: 6.104e-05
static const T Y = 0.45658016204833984375f;
static const T P[] = {
- -0.0289965858925328393392496555094848345L,
- 0.0868181194868601184627743162571779226L,
- 0.169373435121178901746317404936356745L,
- 0.13350446515949251201104889028133486L,
- 0.0617447837290183627136837688446313313L,
- 0.0185618495228251406703152962489700468L,
- 0.00371949406491883508764162050169531013L,
- 0.000485121708792921297742105775823900772L,
- 0.376494706741453489892108068231400061e-4L,
- 0.133166058052466262415271732172490045e-5L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0289965858925328393392496555094848345),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0868181194868601184627743162571779226),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.169373435121178901746317404936356745),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.13350446515949251201104889028133486),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0617447837290183627136837688446313313),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0185618495228251406703152962489700468),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00371949406491883508764162050169531013),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000485121708792921297742105775823900772),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.376494706741453489892108068231400061e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.133166058052466262415271732172490045e-5),
};
static const T Q[] = {
- 1L,
- 2.32970330146503867261275580968135126L,
- 2.46325715420422771961250513514928746L,
- 1.55307882560757679068505047390857842L,
- 0.644274289865972449441174485441409076L,
- 0.182609091063258208068606847453955649L,
- 0.0354171651271241474946129665801606795L,
- 0.00454060370165285246451879969534083997L,
- 0.000349871943711566546821198612518656486L,
- 0.123749319840299552925421880481085392e-4L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.32970330146503867261275580968135126),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.46325715420422771961250513514928746),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.55307882560757679068505047390857842),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.644274289865972449441174485441409076),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.182609091063258208068606847453955649),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0354171651271241474946129665801606795),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00454060370165285246451879969534083997),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000349871943711566546821198612518656486),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.123749319840299552925421880481085392e-4),
};
- result = Y + tools::evaluate_polynomial(P, z - 1.0f) / tools::evaluate_polynomial(Q, z - 1.0f);
+ result = Y + tools::evaluate_polynomial(P, T(z - 1.0f)) / tools::evaluate_polynomial(Q, T(z - 1.0f));
result *= exp(-z * z) / z;
}
else if(z < 2.25)
// Max Error found at long double precision = 1.998462e-35
static const T Y = 0.50250148773193359375f;
static const T P[] = {
- -0.0201233630504573402185161184151016606L,
- 0.0331864357574860196516686996302305002L,
- 0.0716562720864787193337475444413405461L,
- 0.0545835322082103985114927569724880658L,
- 0.0236692635189696678976549720784989593L,
- 0.00656970902163248872837262539337601845L,
- 0.00120282643299089441390490459256235021L,
- 0.000142123229065182650020762792081622986L,
- 0.991531438367015135346716277792989347e-5L,
- 0.312857043762117596999398067153076051e-6L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0201233630504573402185161184151016606),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0331864357574860196516686996302305002),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0716562720864787193337475444413405461),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0545835322082103985114927569724880658),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0236692635189696678976549720784989593),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00656970902163248872837262539337601845),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00120282643299089441390490459256235021),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000142123229065182650020762792081622986),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.991531438367015135346716277792989347e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.312857043762117596999398067153076051e-6),
};
static const T Q[] = {
- 1L,
- 2.13506082409097783827103424943508554L,
- 2.06399257267556230937723190496806215L,
- 1.18678481279932541314830499880691109L,
- 0.447733186643051752513538142316799562L,
- 0.11505680005657879437196953047542148L,
- 0.020163993632192726170219663831914034L,
- 0.00232708971840141388847728782209730585L,
- 0.000160733201627963528519726484608224112L,
- 0.507158721790721802724402992033269266e-5L,
- 0.18647774409821470950544212696270639e-12L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.13506082409097783827103424943508554),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.06399257267556230937723190496806215),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.18678481279932541314830499880691109),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.447733186643051752513538142316799562),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.11505680005657879437196953047542148),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.020163993632192726170219663831914034),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00232708971840141388847728782209730585),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000160733201627963528519726484608224112),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.507158721790721802724402992033269266e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.18647774409821470950544212696270639e-12),
};
- result = Y + tools::evaluate_polynomial(P, z - 1.5f) / tools::evaluate_polynomial(Q, z - 1.5f);
+ result = Y + tools::evaluate_polynomial(P, T(z - 1.5f)) / tools::evaluate_polynomial(Q, T(z - 1.5f));
result *= exp(-z * z) / z;
}
else if (z < 3)
// Max Error found at long double precision = 5.794737e-36
static const T Y = 0.52896785736083984375f;
static const T P[] = {
- -0.00902152521745813634562524098263360074L,
- 0.0145207142776691539346923710537580927L,
- 0.0301681239582193983824211995978678571L,
- 0.0215548540823305814379020678660434461L,
- 0.00864683476267958365678294164340749949L,
- 0.00219693096885585491739823283511049902L,
- 0.000364961639163319762492184502159894371L,
- 0.388174251026723752769264051548703059e-4L,
- 0.241918026931789436000532513553594321e-5L,
- 0.676586625472423508158937481943649258e-7L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00902152521745813634562524098263360074),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0145207142776691539346923710537580927),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0301681239582193983824211995978678571),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0215548540823305814379020678660434461),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00864683476267958365678294164340749949),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00219693096885585491739823283511049902),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000364961639163319762492184502159894371),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.388174251026723752769264051548703059e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.241918026931789436000532513553594321e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.676586625472423508158937481943649258e-7),
};
static const T Q[] = {
- 1L,
- 1.93669171363907292305550231764920001L,
- 1.69468476144051356810672506101377494L,
- 0.880023580986436640372794392579985511L,
- 0.299099106711315090710836273697708402L,
- 0.0690593962363545715997445583603382337L,
- 0.0108427016361318921960863149875360222L,
- 0.00111747247208044534520499324234317695L,
- 0.686843205749767250666787987163701209e-4L,
- 0.192093541425429248675532015101904262e-5L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.93669171363907292305550231764920001),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.69468476144051356810672506101377494),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.880023580986436640372794392579985511),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.299099106711315090710836273697708402),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0690593962363545715997445583603382337),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0108427016361318921960863149875360222),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00111747247208044534520499324234317695),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.686843205749767250666787987163701209e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.192093541425429248675532015101904262e-5),
};
- result = Y + tools::evaluate_polynomial(P, z - 2.25f) / tools::evaluate_polynomial(Q, z - 2.25f);
+ result = Y + tools::evaluate_polynomial(P, T(z - 2.25f)) / tools::evaluate_polynomial(Q, T(z - 2.25f));
result *= exp(-z * z) / z;
}
else if(z < 3.5)
// Max Error found at long double precision = 1.747062e-36
static const T Y = 0.54037380218505859375f;
static const T P[] = {
- -0.0033703486408887424921155540591370375L,
- 0.0104948043110005245215286678898115811L,
- 0.0148530118504000311502310457390417795L,
- 0.00816693029245443090102738825536188916L,
- 0.00249716579989140882491939681805594585L,
- 0.0004655591010047353023978045800916647L,
- 0.531129557920045295895085236636025323e-4L,
- 0.343526765122727069515775194111741049e-5L,
- 0.971120407556888763695313774578711839e-7L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0033703486408887424921155540591370375),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0104948043110005245215286678898115811),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0148530118504000311502310457390417795),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00816693029245443090102738825536188916),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00249716579989140882491939681805594585),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0004655591010047353023978045800916647),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.531129557920045295895085236636025323e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.343526765122727069515775194111741049e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.971120407556888763695313774578711839e-7),
};
static const T Q[] = {
- 1L,
- 1.59911256167540354915906501335919317L,
- 1.136006830764025173864831382946934L,
- 0.468565867990030871678574840738423023L,
- 0.122821824954470343413956476900662236L,
- 0.0209670914950115943338996513330141633L,
- 0.00227845718243186165620199012883547257L,
- 0.000144243326443913171313947613547085553L,
- 0.407763415954267700941230249989140046e-5L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.59911256167540354915906501335919317),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.136006830764025173864831382946934),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.468565867990030871678574840738423023),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.122821824954470343413956476900662236),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0209670914950115943338996513330141633),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00227845718243186165620199012883547257),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000144243326443913171313947613547085553),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.407763415954267700941230249989140046e-5),
};
- result = Y + tools::evaluate_polynomial(P, z - 3.0f) / tools::evaluate_polynomial(Q, z - 3.0f);
+ result = Y + tools::evaluate_polynomial(P, T(z - 3.0f)) / tools::evaluate_polynomial(Q, T(z - 3.0f));
result *= exp(-z * z) / z;
}
else if(z < 5.5)
// Max Error found at long double precision = 1.349545e-35
static const T Y = 0.55000019073486328125f;
static const T P[] = {
- 0.00118142849742309772151454518093813615L,
- 0.0072201822885703318172366893469382745L,
- 0.0078782276276860110721875733778481505L,
- 0.00418229166204362376187593976656261146L,
- 0.00134198400587769200074194304298642705L,
- 0.000283210387078004063264777611497435572L,
- 0.405687064094911866569295610914844928e-4L,
- 0.39348283801568113807887364414008292e-5L,
- 0.248798540917787001526976889284624449e-6L,
- 0.929502490223452372919607105387474751e-8L,
- 0.156161469668275442569286723236274457e-9L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00118142849742309772151454518093813615),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0072201822885703318172366893469382745),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0078782276276860110721875733778481505),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00418229166204362376187593976656261146),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00134198400587769200074194304298642705),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000283210387078004063264777611497435572),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.405687064094911866569295610914844928e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.39348283801568113807887364414008292e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.248798540917787001526976889284624449e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.929502490223452372919607105387474751e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.156161469668275442569286723236274457e-9),
};
static const T Q[] = {
- 1L,
- 1.52955245103668419479878456656709381L,
- 1.06263944820093830054635017117417064L,
- 0.441684612681607364321013134378316463L,
- 0.121665258426166960049773715928906382L,
- 0.0232134512374747691424978642874321434L,
- 0.00310778180686296328582860464875562636L,
- 0.000288361770756174705123674838640161693L,
- 0.177529187194133944622193191942300132e-4L,
- 0.655068544833064069223029299070876623e-6L,
- 0.11005507545746069573608988651927452e-7L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.52955245103668419479878456656709381),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.06263944820093830054635017117417064),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.441684612681607364321013134378316463),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.121665258426166960049773715928906382),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0232134512374747691424978642874321434),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00310778180686296328582860464875562636),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000288361770756174705123674838640161693),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.177529187194133944622193191942300132e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.655068544833064069223029299070876623e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.11005507545746069573608988651927452e-7),
};
- result = Y + tools::evaluate_polynomial(P, z - 4.5f) / tools::evaluate_polynomial(Q, z - 4.5f);
+ result = Y + tools::evaluate_polynomial(P, T(z - 4.5f)) / tools::evaluate_polynomial(Q, T(z - 4.5f));
result *= exp(-z * z) / z;
}
else if(z < 7.5)
// Max Error found at long double precision = 2.646420e-36
static const T Y = 0.5574436187744140625f;
static const T P[] = {
- 0.000293236907400849056269309713064107674L,
- 0.00225110719535060642692275221961480162L,
- 0.00190984458121502831421717207849429799L,
- 0.000747757733460111743833929141001680706L,
- 0.000170663175280949889583158597373928096L,
- 0.246441188958013822253071608197514058e-4L,
- 0.229818000860544644974205957895688106e-5L,
- 0.134886977703388748488480980637704864e-6L,
- 0.454764611880548962757125070106650958e-8L,
- 0.673002744115866600294723141176820155e-10L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000293236907400849056269309713064107674),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00225110719535060642692275221961480162),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00190984458121502831421717207849429799),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000747757733460111743833929141001680706),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000170663175280949889583158597373928096),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.246441188958013822253071608197514058e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.229818000860544644974205957895688106e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.134886977703388748488480980637704864e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.454764611880548962757125070106650958e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.673002744115866600294723141176820155e-10),
};
static const T Q[] = {
- 1L,
- 1.12843690320861239631195353379313367L,
- 0.569900657061622955362493442186537259L,
- 0.169094404206844928112348730277514273L,
- 0.0324887449084220415058158657252147063L,
- 0.00419252877436825753042680842608219552L,
- 0.00036344133176118603523976748563178578L,
- 0.204123895931375107397698245752850347e-4L,
- 0.674128352521481412232785122943508729e-6L,
- 0.997637501418963696542159244436245077e-8L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.12843690320861239631195353379313367),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.569900657061622955362493442186537259),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.169094404206844928112348730277514273),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0324887449084220415058158657252147063),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00419252877436825753042680842608219552),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00036344133176118603523976748563178578),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.204123895931375107397698245752850347e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.674128352521481412232785122943508729e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.997637501418963696542159244436245077e-8),
};
- result = Y + tools::evaluate_polynomial(P, z - 6.5f) / tools::evaluate_polynomial(Q, z - 6.5f);
+ result = Y + tools::evaluate_polynomial(P, T(z - 6.5f)) / tools::evaluate_polynomial(Q, T(z - 6.5f));
result *= exp(-z * z) / z;
}
else if(z < 11.5)
// Max Error found at long double precision = 9.849522e-36
static const T Y = 0.56083202362060546875f;
static const T P[] = {
- 0.000282420728751494363613829834891390121L,
- 0.00175387065018002823433704079355125161L,
- 0.0021344978564889819420775336322920375L,
- 0.00124151356560137532655039683963075661L,
- 0.000423600733566948018555157026862139644L,
- 0.914030340865175237133613697319509698e-4L,
- 0.126999927156823363353809747017945494e-4L,
- 0.110610959842869849776179749369376402e-5L,
- 0.55075079477173482096725348704634529e-7L,
- 0.119735694018906705225870691331543806e-8L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000282420728751494363613829834891390121),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00175387065018002823433704079355125161),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0021344978564889819420775336322920375),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00124151356560137532655039683963075661),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000423600733566948018555157026862139644),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.914030340865175237133613697319509698e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.126999927156823363353809747017945494e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.110610959842869849776179749369376402e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.55075079477173482096725348704634529e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.119735694018906705225870691331543806e-8),
};
static const T Q[] = {
- 1L,
- 1.69889613396167354566098060039549882L,
- 1.28824647372749624464956031163282674L,
- 0.572297795434934493541628008224078717L,
- 0.164157697425571712377043857240773164L,
- 0.0315311145224594430281219516531649562L,
- 0.00405588922155632380812945849777127458L,
- 0.000336929033691445666232029762868642417L,
- 0.164033049810404773469413526427932109e-4L,
- 0.356615210500531410114914617294694857e-6L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.69889613396167354566098060039549882),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.28824647372749624464956031163282674),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.572297795434934493541628008224078717),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.164157697425571712377043857240773164),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0315311145224594430281219516531649562),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00405588922155632380812945849777127458),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000336929033691445666232029762868642417),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.164033049810404773469413526427932109e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.356615210500531410114914617294694857e-6),
};
- result = Y + tools::evaluate_polynomial(P, z / 2 - 4.75f) / tools::evaluate_polynomial(Q, z / 2 - 4.75f);
+ result = Y + tools::evaluate_polynomial(P, T(z / 2 - 4.75f)) / tools::evaluate_polynomial(Q, T(z / 2 - 4.75f));
result *= exp(-z * z) / z;
}
else
// Max Error found at long double precision = 1.162590e-35
static const T Y = 0.5632686614990234375f;
static const T P[] = {
- 0.000920922048732849448079451574171836943L,
- 0.00321439044532288750501700028748922439L,
- -0.250455263029390118657884864261823431L,
- -0.906807635364090342031792404764598142L,
- -8.92233572835991735876688745989985565L,
- -21.7797433494422564811782116907878495L,
- -91.1451915251976354349734589601171659L,
- -144.1279109655993927069052125017673L,
- -313.845076581796338665519022313775589L,
- -273.11378811923343424081101235736475L,
- -271.651566205951067025696102600443452L,
- -60.0530577077238079968843307523245547L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000920922048732849448079451574171836943),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00321439044532288750501700028748922439),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.250455263029390118657884864261823431),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.906807635364090342031792404764598142),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -8.92233572835991735876688745989985565),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -21.7797433494422564811782116907878495),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -91.1451915251976354349734589601171659),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -144.1279109655993927069052125017673),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -313.845076581796338665519022313775589),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -273.11378811923343424081101235736475),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -271.651566205951067025696102600443452),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -60.0530577077238079968843307523245547),
};
static const T Q[] = {
- 1L,
- 3.49040448075464744191022350947892036L,
- 34.3563592467165971295915749548313227L,
- 84.4993232033879023178285731843850461L,
- 376.005865281206894120659401340373818L,
- 629.95369438888946233003926191755125L,
- 1568.35771983533158591604513304269098L,
- 1646.02452040831961063640827116581021L,
- 2299.96860633240298708910425594484895L,
- 1222.73204392037452750381340219906374L,
- 799.359797306084372350264298361110448L,
- 72.7415265778588087243442792401576737L,
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 3.49040448075464744191022350947892036),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 34.3563592467165971295915749548313227),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 84.4993232033879023178285731843850461),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 376.005865281206894120659401340373818),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 629.95369438888946233003926191755125),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1568.35771983533158591604513304269098),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1646.02452040831961063640827116581021),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2299.96860633240298708910425594484895),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1222.73204392037452750381340219906374),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 799.359797306084372350264298361110448),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 72.7415265778588087243442792401576737),
};
- result = Y + tools::evaluate_polynomial(P, 1 / z) / tools::evaluate_polynomial(Q, 1 / z);
+ result = Y + tools::evaluate_polynomial(P, T(1 / z)) / tools::evaluate_polynomial(Q, T(1 / z));
result *= exp(-z * z) / z;
}
}
}
return result;
-} // template <class T, class L>T erf_imp(T z, bool invert, const L& l, const mpl::int_<113>& t)
+} // template <class T, class Lanczos>T erf_imp(T z, bool invert, const Lanczos& l, const mpl::int_<113>& t)
+
+template <class T, class Policy, class tag>
+struct erf_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init(tag());
+ }
+ static void do_init(const mpl::int_<0>&){}
+ static void do_init(const mpl::int_<53>&)
+ {
+ boost::math::erf(static_cast<T>(1e-12), Policy());
+ boost::math::erf(static_cast<T>(0.25), Policy());
+ boost::math::erf(static_cast<T>(1.25), Policy());
+ boost::math::erf(static_cast<T>(2.25), Policy());
+ boost::math::erf(static_cast<T>(4.25), Policy());
+ boost::math::erf(static_cast<T>(5.25), Policy());
+ }
+ static void do_init(const mpl::int_<64>&)
+ {
+ boost::math::erf(static_cast<T>(1e-12), Policy());
+ boost::math::erf(static_cast<T>(0.25), Policy());
+ boost::math::erf(static_cast<T>(1.25), Policy());
+ boost::math::erf(static_cast<T>(2.25), Policy());
+ boost::math::erf(static_cast<T>(4.25), Policy());
+ boost::math::erf(static_cast<T>(5.25), Policy());
+ }
+ static void do_init(const mpl::int_<113>&)
+ {
+ boost::math::erf(static_cast<T>(1e-22), Policy());
+ boost::math::erf(static_cast<T>(0.25), Policy());
+ boost::math::erf(static_cast<T>(1.25), Policy());
+ boost::math::erf(static_cast<T>(2.125), Policy());
+ boost::math::erf(static_cast<T>(2.75), Policy());
+ boost::math::erf(static_cast<T>(3.25), Policy());
+ boost::math::erf(static_cast<T>(5.25), Policy());
+ boost::math::erf(static_cast<T>(7.25), Policy());
+ boost::math::erf(static_cast<T>(11.25), Policy());
+ boost::math::erf(static_cast<T>(12.5), Policy());
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy, class tag>
+const typename erf_initializer<T, Policy, tag>::init erf_initializer<T, Policy, tag>::initializer;
} // namespace detail
BOOST_MATH_INSTRUMENT_CODE("tag_type = " << typeid(tag_type).name());
+ detail::erf_initializer<value_type, forwarding_policy, tag_type>::force_instantiate(); // Force constants to be initialized before main
+
return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::erf_imp(
static_cast<value_type>(z),
false,
BOOST_MATH_INSTRUMENT_CODE("tag_type = " << typeid(tag_type).name());
+ detail::erf_initializer<value_type, forwarding_policy, tag_type>::force_instantiate(); // Force constants to be initialized before main
+
return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::erf_imp(
static_cast<value_type>(z),
true,
--- /dev/null
+// Copyright John Maddock 2007.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_EXPINT_HPP
+#define BOOST_MATH_EXPINT_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/precision.hpp>
+#include <boost/math/tools/promotion.hpp>
+#include <boost/math/tools/fraction.hpp>
+#include <boost/math/tools/series.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/special_functions/digamma.hpp>
+#include <boost/math/special_functions/log1p.hpp>
+#include <boost/math/special_functions/pow.hpp>
+
+namespace boost{ namespace math{
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type
+ expint(unsigned n, T z, const Policy& /*pol*/);
+
+namespace detail{
+
+template <class T>
+inline T expint_1_rational(const T& z, const mpl::int_<0>&)
+{
+ // this function is never actually called
+ BOOST_ASSERT(0);
+ return z;
+}
+
+template <class T>
+T expint_1_rational(const T& z, const mpl::int_<53>&)
+{
+ BOOST_MATH_STD_USING
+ T result;
+ if(z <= 1)
+ {
+ // Maximum Deviation Found: 2.006e-18
+ // Expected Error Term: 2.006e-18
+ // Max error found at double precision: 2.760e-17
+ static const T Y = 0.66373538970947265625F;
+ static const T P[6] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0865197248079397976498),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0320913665303559189999),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.245088216639761496153),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0368031736257943745142),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00399167106081113256961),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.000111507792921197858394)
+ };
+ static const T Q[6] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.37091387659397013215),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.056770677104207528384),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00427347600017103698101),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.000131049900798434683324),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.528611029520217142048e-6)
+ };
+ result = tools::evaluate_polynomial(P, z)
+ / tools::evaluate_polynomial(Q, z);
+ result += z - log(z) - Y;
+ }
+ else if(z < -boost::math::tools::log_min_value<T>())
+ {
+ // Maximum Deviation Found (interpolated): 1.444e-17
+ // Max error found at double precision: 3.119e-17
+ static const T P[11] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.121013190657725568138e-18),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.999999999999998811143),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -43.3058660811817946037),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -724.581482791462469795),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -6046.8250112711035463),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -27182.6254466733970467),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -66598.2652345418633509),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -86273.1567711649528784),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -54844.4587226402067411),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -14751.4895786128450662),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -1185.45720315201027667)
+ };
+ static const T Q[12] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 45.3058660811801465927),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 809.193214954550328455),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 7417.37624454689546708),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 38129.5594484818471461),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 113057.05869159631492),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 192104.047790227984431),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 180329.498380501819718),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 86722.3403467334749201),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 18455.4124737722049515),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1229.20784182403048905),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.776491285282330997549)
+ };
+ T recip = 1 / z;
+ result = 1 + tools::evaluate_polynomial(P, recip)
+ / tools::evaluate_polynomial(Q, recip);
+ result *= exp(-z) * recip;
+ }
+ else
+ {
+ result = 0;
+ }
+ return result;
+}
+
+template <class T>
+T expint_1_rational(const T& z, const mpl::int_<64>&)
+{
+ BOOST_MATH_STD_USING
+ T result;
+ if(z <= 1)
+ {
+ // Maximum Deviation Found: 3.807e-20
+ // Expected Error Term: 3.807e-20
+ // Max error found at long double precision: 6.249e-20
+
+ static const T Y = 0.66373538970947265625F;
+ static const T P[6] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0865197248079397956816),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0275114007037026844633),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.246594388074877139824),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0237624819878732642231),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00259113319641673986276),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.30853660894346057053e-4)
+ };
+ static const T Q[7] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.317978365797784100273),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0393622602554758722511),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00204062029115966323229),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.732512107100088047854e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.202872781770207871975e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.52779248094603709945e-7)
+ };
+ result = tools::evaluate_polynomial(P, z)
+ / tools::evaluate_polynomial(Q, z);
+ result += z - log(z) - Y;
+ }
+ else if(z < -boost::math::tools::log_min_value<T>())
+ {
+ // Maximum Deviation Found (interpolated): 2.220e-20
+ // Max error found at long double precision: 1.346e-19
+ static const T P[14] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.534401189080684443046e-23),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.999999999999999999905),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -62.1517806091379402505),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -1568.45688271895145277),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -21015.3431990874009619),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -164333.011755931661949),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -777917.270775426696103),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -2244188.56195255112937),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -3888702.98145335643429),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -3909822.65621952648353),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -2149033.9538897398457),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -584705.537139793925189),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -65815.2605361889477244),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -2038.82870680427258038)
+ };
+ static const T Q[14] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 64.1517806091379399478),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1690.76044393722763785),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 24035.9534033068949426),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 203679.998633572361706),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1074661.58459976978285),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 3586552.65020899358773),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 7552186.84989547621411),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 9853333.79353054111434),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 7689642.74550683631258),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 3385553.35146759180739),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 763218.072732396428725),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 73930.2995984054930821),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 2063.86994219629165937)
+ };
+ T recip = 1 / z;
+ result = 1 + tools::evaluate_polynomial(P, recip)
+ / tools::evaluate_polynomial(Q, recip);
+ result *= exp(-z) * recip;
+ }
+ else
+ {
+ result = 0;
+ }
+ return result;
+}
+
+template <class T>
+T expint_1_rational(const T& z, const mpl::int_<113>&)
+{
+ BOOST_MATH_STD_USING
+ T result;
+ if(z <= 1)
+ {
+ // Maximum Deviation Found: 2.477e-35
+ // Expected Error Term: 2.477e-35
+ // Max error found at long double precision: 6.810e-35
+
+ static const T Y = 0.66373538970947265625F;
+ static const T P[10] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0865197248079397956434879099175975937),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0369066175910795772830865304506087759),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.24272036838415474665971599314725545),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0502166331248948515282379137550178307),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00768384138547489410285101483730424919),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000612574337702109683505224915484717162),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.380207107950635046971492617061708534e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.136528159460768830763009294683628406e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.346839106212658259681029388908658618e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.340500302777838063940402160594523429e-9)
+ };
+ static const T Q[10] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.426568827778942588160423015589537302),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0841384046470893490592450881447510148),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0100557215850668029618957359471132995),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000799334870474627021737357294799839363),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.434452090903862735242423068552687688e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.15829674748799079874182885081231252e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.354406206738023762100882270033082198e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.369373328141051577845488477377890236e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.274149801370933606409282434677600112e-12)
+ };
+ result = tools::evaluate_polynomial(P, z)
+ / tools::evaluate_polynomial(Q, z);
+ result += z - log(z) - Y;
+ }
+ else if(z <= 4)
+ {
+ // Max error in interpolated form: 5.614e-35
+ // Max error found at long double precision: 7.979e-35
+
+ static const T Y = 0.70190334320068359375F;
+
+ static const T P[16] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.298096656795020369955077350585959794),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 12.9314045995266142913135497455971247),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 226.144334921582637462526628217345501),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2070.83670924261732722117682067381405),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 10715.1115684330959908244769731347186),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 30728.7876355542048019664777316053311),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 38520.6078609349855436936232610875297),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -27606.0780981527583168728339620565165),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -169026.485055785605958655247592604835),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -254361.919204983608659069868035092282),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -195765.706874132267953259272028679935),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -83352.6826013533205474990119962408675),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -19251.6828496869586415162597993050194),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -2226.64251774578542836725386936102339),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -109.009437301400845902228611986479816),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -1.51492042209561411434644938098833499)
+ };
+ static const T Q[16] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 46.734521442032505570517810766704587),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 908.694714348462269000247450058595655),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 9701.76053033673927362784882748513195),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 63254.2815292641314236625196594947774),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 265115.641285880437335106541757711092),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 732707.841188071900498536533086567735),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1348514.02492635723327306628712057794),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1649986.81455283047769673308781585991),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1326000.828522976970116271208812099),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 683643.09490612171772350481773951341),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 217640.505137263607952365685653352229),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 40288.3467237411710881822569476155485),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 3932.89353979531632559232883283175754),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 169.845369689596739824177412096477219),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.17607292280092201170768401876895354)
+ };
+ T recip = 1 / z;
+ result = Y + tools::evaluate_polynomial(P, recip)
+ / tools::evaluate_polynomial(Q, recip);
+ result *= exp(-z) * recip;
+ }
+ else if(z < -boost::math::tools::log_min_value<T>())
+ {
+ // Max error in interpolated form: 4.413e-35
+ // Max error found at long double precision: 8.928e-35
+
+ static const T P[19] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.559148411832951463689610809550083986e-40),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.999999999999999999999999999999999997),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -166.542326331163836642960118190147367),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -12204.639128796330005065904675153652),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -520807.069767086071806275022036146855),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -14435981.5242137970691490903863125326),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -274574945.737064301247496460758654196),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -3691611582.99810039356254671781473079),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -35622515944.8255047299363690814678763),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -248040014774.502043161750715548451142),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -1243190389769.53458416330946622607913),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -4441730126135.54739052731990368425339),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -11117043181899.7388524310281751971366),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -18976497615396.9717776601813519498961),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -21237496819711.1011661104761906067131),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -14695899122092.5161620333466757812848),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -5737221535080.30569711574295785864903),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -1077042281708.42654526404581272546244),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -68028222642.1941480871395695677675137)
+ };
+ static const T Q[20] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 168.542326331163836642960118190147311),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 12535.7237814586576783518249115343619),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 544891.263372016404143120911148640627),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 15454474.7241010258634446523045237762),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 302495899.896629522673410325891717381),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 4215565948.38886507646911672693270307),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 42552409471.7951815668506556705733344),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 313592377066.753173979584098301610186),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1688763640223.4541980740597514904542),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 6610992294901.59589748057620192145704),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 18601637235659.6059890851321772682606),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 36944278231087.2571020964163402941583),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 50425858518481.7497071917028793820058),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 45508060902865.0899967797848815980644),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 25649955002765.3817331501988304758142),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 8259575619094.6518520988612711292331),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1299981487496.12607474362723586264515),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 70242279152.8241187845178443118302693),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -37633302.9409263839042721539363416685)
+ };
+ T recip = 1 / z;
+ result = 1 + tools::evaluate_polynomial(P, recip)
+ / tools::evaluate_polynomial(Q, recip);
+ result *= exp(-z) * recip;
+ }
+ else
+ {
+ result = 0;
+ }
+ return result;
+}
+
+template <class T>
+struct expint_fraction
+{
+ typedef std::pair<T,T> result_type;
+ expint_fraction(unsigned n_, T z_) : b(n_ + z_), i(-1), n(n_){}
+ std::pair<T,T> operator()()
+ {
+ std::pair<T,T> result = std::make_pair(-static_cast<T>((i+1) * (n+i)), b);
+ b += 2;
+ ++i;
+ return result;
+ }
+private:
+ T b;
+ int i;
+ unsigned n;
+};
+
+template <class T, class Policy>
+inline T expint_as_fraction(unsigned n, T z, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ BOOST_MATH_INSTRUMENT_VARIABLE(z)
+ boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
+ expint_fraction<T> f(n, z);
+ T result = tools::continued_fraction_b(
+ f,
+ boost::math::policies::get_epsilon<T, Policy>(),
+ max_iter);
+ policies::check_series_iterations<T>("boost::math::expint_continued_fraction<%1%>(unsigned,%1%)", max_iter, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ BOOST_MATH_INSTRUMENT_VARIABLE(max_iter)
+ result = exp(-z) / result;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ return result;
+}
+
+template <class T>
+struct expint_series
+{
+ typedef T result_type;
+ expint_series(unsigned k_, T z_, T x_k_, T denom_, T fact_)
+ : k(k_), z(z_), x_k(x_k_), denom(denom_), fact(fact_){}
+ T operator()()
+ {
+ x_k *= -z;
+ denom += 1;
+ fact *= ++k;
+ return x_k / (denom * fact);
+ }
+private:
+ unsigned k;
+ T z;
+ T x_k;
+ T denom;
+ T fact;
+};
+
+template <class T, class Policy>
+inline T expint_as_series(unsigned n, T z, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
+
+ BOOST_MATH_INSTRUMENT_VARIABLE(z)
+
+ T result = 0;
+ T x_k = -1;
+ T denom = T(1) - n;
+ T fact = 1;
+ unsigned k = 0;
+ for(; k < n - 1;)
+ {
+ result += x_k / (denom * fact);
+ denom += 1;
+ x_k *= -z;
+ fact *= ++k;
+ }
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result += pow(-z, static_cast<T>(n - 1))
+ * (boost::math::digamma(static_cast<T>(n)) - log(z)) / fact;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+
+ expint_series<T> s(k, z, x_k, denom, fact);
+ result = tools::sum_series(s, policies::get_epsilon<T, Policy>(), max_iter, result);
+ policies::check_series_iterations<T>("boost::math::expint_series<%1%>(unsigned,%1%)", max_iter, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ BOOST_MATH_INSTRUMENT_VARIABLE(max_iter)
+ return result;
+}
+
+template <class T, class Policy, class Tag>
+T expint_imp(unsigned n, T z, const Policy& pol, const Tag& tag)
+{
+ BOOST_MATH_STD_USING
+ static const char* function = "boost::math::expint<%1%>(unsigned, %1%)";
+ if(z < 0)
+ return policies::raise_domain_error<T>(function, "Function requires z >= 0 but got %1%.", z, pol);
+ if(z == 0)
+ return n == 1 ? policies::raise_overflow_error<T>(function, 0, pol) : T(1 / (static_cast<T>(n - 1)));
+
+ T result;
+
+ bool f;
+ if(n < 3)
+ {
+ f = z < 0.5;
+ }
+ else
+ {
+ f = z < (static_cast<T>(n - 2) / static_cast<T>(n - 1));
+ }
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable:4127) // conditional expression is constant
+#endif
+ if(n == 0)
+ result = exp(-z) / z;
+ else if((n == 1) && (Tag::value))
+ {
+ result = expint_1_rational(z, tag);
+ }
+ else if(f)
+ result = expint_as_series(n, z, pol);
+ else
+ result = expint_as_fraction(n, z, pol);
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+ return result;
+}
+
+template <class T>
+struct expint_i_series
+{
+ typedef T result_type;
+ expint_i_series(T z_) : k(0), z_k(1), z(z_){}
+ T operator()()
+ {
+ z_k *= z / ++k;
+ return z_k / k;
+ }
+private:
+ unsigned k;
+ T z_k;
+ T z;
+};
+
+template <class T, class Policy>
+T expint_i_as_series(T z, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ T result = log(z); // (log(z) - log(1 / z)) / 2;
+ result += constants::euler<T>();
+ expint_i_series<T> s(z);
+ boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
+ result = tools::sum_series(s, policies::get_epsilon<T, Policy>(), max_iter, result);
+ policies::check_series_iterations<T>("boost::math::expint_i_series<%1%>(%1%)", max_iter, pol);
+ return result;
+}
+
+template <class T, class Policy, class Tag>
+T expint_i_imp(T z, const Policy& pol, const Tag& tag)
+{
+ static const char* function = "boost::math::expint<%1%>(%1%)";
+ if(z < 0)
+ return -expint_imp(1, T(-z), pol, tag);
+ if(z == 0)
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+ return expint_i_as_series(z, pol);
+}
+
+template <class T, class Policy>
+T expint_i_imp(T z, const Policy& pol, const mpl::int_<53>& tag)
+{
+ BOOST_MATH_STD_USING
+ static const char* function = "boost::math::expint<%1%>(%1%)";
+ if(z < 0)
+ return -expint_imp(1, T(-z), pol, tag);
+ if(z == 0)
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+
+ T result;
+
+ if(z <= 6)
+ {
+ // Maximum Deviation Found: 2.852e-18
+ // Expected Error Term: 2.852e-18
+ // Max Error found at double precision = Poly: 2.636335e-16 Cheb: 4.187027e-16
+ static const T P[10] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 2.98677224343598593013),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.356343618769377415068),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.780836076283730801839),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.114670926327032002811),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0499434773576515260534),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00726224593341228159561),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00115478237227804306827),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.000116419523609765200999),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.798296365679269702435e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.2777056254402008721e-6)
+ };
+ static const T Q[8] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -1.17090412365413911947),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.62215109846016746276),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.195114782069495403315),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0391523431392967238166),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00504800158663705747345),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.000389034007436065401822),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.138972589601781706598e-4)
+ };
+
+ static const T c1 = BOOST_MATH_BIG_CONSTANT(T, 53, 1677624236387711.0);
+ static const T c2 = BOOST_MATH_BIG_CONSTANT(T, 53, 4503599627370496.0);
+ static const T r1 = static_cast<T>(c1 / c2);
+ static const T r2 = BOOST_MATH_BIG_CONSTANT(T, 53, 0.131401834143860282009280387409357165515556574352422001206362e-16);
+ static const T r = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 53, 0.372507410781366634461991866580119133535689497771654051555657435242200120636201854384926049951548942392));
+ T t = (z / 3) - 1;
+ result = tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ t = (z - r1) - r2;
+ result *= t;
+ if(fabs(t) < 0.1)
+ {
+ result += boost::math::log1p(t / r);
+ }
+ else
+ {
+ result += log(z / r);
+ }
+ }
+ else if (z <= 10)
+ {
+ // Maximum Deviation Found: 6.546e-17
+ // Expected Error Term: 6.546e-17
+ // Max Error found at double precision = Poly: 6.890169e-17 Cheb: 6.772128e-17
+ static const T Y = 1.158985137939453125F;
+ static const T P[8] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00139324086199402804173),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0349921221823888744966),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0264095520754134848538),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00761224003005476438412),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00247496209592143627977),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.000374885917942100256775),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.554086272024881826253e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.396487648924804510056e-5)
+ };
+ static const T Q[8] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.744625566823272107711),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.329061095011767059236),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.100128624977313872323),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0223851099128506347278),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00365334190742316650106),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.000402453408512476836472),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.263649630720255691787e-4)
+ };
+ T t = z / 2 - 4;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ result *= exp(z) / z;
+ result += z;
+ }
+ else if(z <= 20)
+ {
+ // Maximum Deviation Found: 1.843e-17
+ // Expected Error Term: -1.842e-17
+ // Max Error found at double precision = Poly: 4.375868e-17 Cheb: 5.860967e-17
+
+ static const T Y = 1.0869731903076171875F;
+ static const T P[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00893891094356945667451),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0484607730127134045806),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0652810444222236895772),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0478447572647309671455),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0226059218923777094596),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00720603636917482065907),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00155941947035972031334),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.000209750022660200888349),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.138652200349182596186e-4)
+ };
+ static const T Q[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.97017214039061194971),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.86232465043073157508),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.09601437090337519977),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.438873285773088870812),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.122537731979686102756),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0233458478275769288159),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00278170769163303669021),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.000159150281166108755531)
+ };
+ T t = z / 5 - 3;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ result *= exp(z) / z;
+ result += z;
+ }
+ else if(z <= 40)
+ {
+ // Maximum Deviation Found: 5.102e-18
+ // Expected Error Term: 5.101e-18
+ // Max Error found at double precision = Poly: 1.441088e-16 Cheb: 1.864792e-16
+
+
+ static const T Y = 1.03937530517578125F;
+ static const T P[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00356165148914447597995),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0229930320357982333406),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0449814350482277917716),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0453759383048193402336),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0272050837209380717069),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00994403059883350813295),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.00207592267812291726961),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.000192178045857733706044),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.113161784705911400295e-9)
+ };
+ static const T Q[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 2.84354408840148561131),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 3.6599610090072393012),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 2.75088464344293083595),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1.2985244073998398643),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.383213198510794507409),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.0651165455496281337831),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.00488071077519227853585)
+ };
+ T t = z / 10 - 3;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ result *= exp(z) / z;
+ result += z;
+ }
+ else
+ {
+ // Max Error found at double precision = 3.381886e-17
+ static const T exp40 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 53, 2.35385266837019985407899910749034804508871617254555467236651e17));
+ static const T Y= 1.013065338134765625F;
+ static const T P[6] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, -0.0130653381347656243849),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 0.19029710559486576682),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 94.7365094537197236011),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -2516.35323679844256203),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 18932.0850014925993025),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -38703.1431362056714134)
+ };
+ static const T Q[7] = {
+ BOOST_MATH_BIG_CONSTANT(T, 53, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 61.9733592849439884145),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -2354.56211323420194283),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 22329.1459489893079041),
+ BOOST_MATH_BIG_CONSTANT(T, 53, -70126.245140396567133),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 54738.2833147775537106),
+ BOOST_MATH_BIG_CONSTANT(T, 53, 8297.16296356518409347)
+ };
+ T t = 1 / z;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ if(z < 41)
+ result *= exp(z) / z;
+ else
+ {
+ // Avoid premature overflow if we can:
+ t = z - 40;
+ if(t > tools::log_max_value<T>())
+ {
+ result = policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ else
+ {
+ result *= exp(z - 40) / z;
+ if(result > tools::max_value<T>() / exp40)
+ {
+ result = policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ else
+ {
+ result *= exp40;
+ }
+ }
+ }
+ result += z;
+ }
+ return result;
+}
+
+template <class T, class Policy>
+T expint_i_imp(T z, const Policy& pol, const mpl::int_<64>& tag)
+{
+ BOOST_MATH_STD_USING
+ static const char* function = "boost::math::expint<%1%>(%1%)";
+ if(z < 0)
+ return -expint_imp(1, T(-z), pol, tag);
+ if(z == 0)
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+
+ T result;
+
+ if(z <= 6)
+ {
+ // Maximum Deviation Found: 3.883e-21
+ // Expected Error Term: 3.883e-21
+ // Max Error found at long double precision = Poly: 3.344801e-19 Cheb: 4.989937e-19
+
+ static const T P[11] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 2.98677224343598593764),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.25891613550886736592),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.789323584998672832285),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.092432587824602399339),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0514236978728625906656),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00658477469745132977921),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00124914538197086254233),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000131429679565472408551),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.11293331317982763165e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.629499283139417444244e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.177833045143692498221e-7)
+ };
+ static const T Q[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -1.20352377969742325748),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.66707904942606479811),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.223014531629140771914),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0493340022262908008636),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00741934273050807310677),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00074353567782087939294),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.455861727069603367656e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.131515429329812837701e-5)
+ };
+
+ static const T c1 = BOOST_MATH_BIG_CONSTANT(T, 64, 1677624236387711.0);
+ static const T c2 = BOOST_MATH_BIG_CONSTANT(T, 64, 4503599627370496.0);
+ static const T r1 = c1 / c2;
+ static const T r2 = BOOST_MATH_BIG_CONSTANT(T, 64, 0.131401834143860282009280387409357165515556574352422001206362e-16);
+ static const T r = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.372507410781366634461991866580119133535689497771654051555657435242200120636201854384926049951548942392));
+ T t = (z / 3) - 1;
+ result = tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ t = (z - r1) - r2;
+ result *= t;
+ if(fabs(t) < 0.1)
+ {
+ result += boost::math::log1p(t / r);
+ }
+ else
+ {
+ result += log(z / r);
+ }
+ }
+ else if (z <= 10)
+ {
+ // Maximum Deviation Found: 2.622e-21
+ // Expected Error Term: -2.622e-21
+ // Max Error found at long double precision = Poly: 1.208328e-20 Cheb: 1.073723e-20
+
+ static const T Y = 1.158985137939453125F;
+ static const T P[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00139324086199409049399),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0345238388952337563247),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0382065278072592940767),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0156117003070560727392),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00383276012430495387102),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000697070540945496497992),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.877310384591205930343e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.623067256376494930067e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.377246883283337141444e-6)
+ };
+ static const T Q[10] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.08073635708902053767),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.553681133533942532909),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.176763647137553797451),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0387891748253869928121),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0060603004848394727017),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000670519492939992806051),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.4947357050100855646e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.204339282037446434827e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.146951181174930425744e-7)
+ };
+ T t = z / 2 - 4;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ result *= exp(z) / z;
+ result += z;
+ }
+ else if(z <= 20)
+ {
+ // Maximum Deviation Found: 3.220e-20
+ // Expected Error Term: 3.220e-20
+ // Max Error found at long double precision = Poly: 7.696841e-20 Cheb: 6.205163e-20
+
+
+ static const T Y = 1.0869731903076171875F;
+ static const T P[10] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00893891094356946995368),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0487562980088748775943),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0670568657950041926085),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0509577352851442932713),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.02551800927409034206),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00892913759760086687083),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00224469630207344379888),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000392477245911296982776),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.44424044184395578775e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.252788029251437017959e-5)
+ };
+ static const T Q[10] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 2.00323265503572414261),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.94688958187256383178),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.19733638134417472296),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.513137726038353385661),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.159135395578007264547),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0358233587351620919881),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0056716655597009417875),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000577048986213535829925),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.290976943033493216793e-4)
+ };
+ T t = z / 5 - 3;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ result *= exp(z) / z;
+ result += z;
+ }
+ else if(z <= 40)
+ {
+ // Maximum Deviation Found: 2.940e-21
+ // Expected Error Term: -2.938e-21
+ // Max Error found at long double precision = Poly: 3.419893e-19 Cheb: 3.359874e-19
+
+ static const T Y = 1.03937530517578125F;
+ static const T P[12] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00356165148914447278177),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0240235006148610849678),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0516699967278057976119),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0586603078706856245674),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0409960120868776180825),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0185485073689590665153),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00537842101034123222417),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000920988084778273760609),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.716742618812210980263e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.504623302166487346677e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.712662196671896837736e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.533769629702262072175e-11)
+ };
+ static const T Q[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 3.13286733695729715455),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 4.49281223045653491929),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 3.84900294427622911374),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 2.15205199043580378211),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.802912186540269232424),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.194793170017818925388),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0280128013584653182994),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00182034930799902922549)
+ };
+ T t = z / 10 - 3;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result *= exp(z) / z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result += z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ }
+ else
+ {
+ // Maximum Deviation Found: 3.536e-20
+ // Max Error found at long double precision = Poly: 1.310671e-19 Cheb: 8.630943e-11
+
+ static const T exp40 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.35385266837019985407899910749034804508871617254555467236651e17));
+ static const T Y= 1.013065338134765625F;
+ static const T P[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0130653381347656250004),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.644487780349757303739),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 143.995670348227433964),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -13918.9322758014173709),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 476260.975133624194484),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -7437102.15135982802122),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 53732298.8764767916542),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -160695051.957997452509),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 137839271.592778020028)
+ };
+ static const T Q[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 27.2103343964943718802),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -8785.48528692879413676),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 397530.290000322626766),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -7356441.34957799368252),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 63050914.5343400957524),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -246143779.638307701369),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 384647824.678554961174),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -166288297.874583961493)
+ };
+ T t = 1 / z;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ if(z < 41)
+ result *= exp(z) / z;
+ else
+ {
+ // Avoid premature overflow if we can:
+ t = z - 40;
+ if(t > tools::log_max_value<T>())
+ {
+ result = policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ else
+ {
+ result *= exp(z - 40) / z;
+ if(result > tools::max_value<T>() / exp40)
+ {
+ result = policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ else
+ {
+ result *= exp40;
+ }
+ }
+ }
+ result += z;
+ }
+ return result;
+}
+
+template <class T>
+void expint_i_imp_113a(T& result, const T& z)
+{
+ BOOST_MATH_STD_USING
+ // Maximum Deviation Found: 1.230e-36
+ // Expected Error Term: -1.230e-36
+ // Max Error found at long double precision = Poly: 4.355299e-34 Cheb: 7.512581e-34
+
+
+ static const T P[15] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.98677224343598593765287235997328555),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.333256034674702967028780537349334037),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.851831522798101228384971644036708463),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0657854833494646206186773614110374948),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0630065662557284456000060708977935073),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00311759191425309373327784154659649232),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00176213568201493949664478471656026771),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.491548660404172089488535218163952295e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.207764227621061706075562107748176592e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.225445398156913584846374273379402765e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.996939977231410319761273881672601592e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.212546902052178643330520878928100847e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.154646053060262871360159325115980023e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.143971277122049197323415503594302307e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.306243138978114692252817805327426657e-13)
+ };
+ static const T Q[15] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -1.40178870313943798705491944989231793),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.943810968269701047641218856758605284),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.405026631534345064600850391026113165),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.123924153524614086482627660399122762),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0286364505373369439591132549624317707),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00516148845910606985396596845494015963),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000738330799456364820380739850924783649),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.843737760991856114061953265870882637e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.767957673431982543213661388914587589e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.549136847313854595809952100614840031e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.299801381513743676764008325949325404e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.118419479055346106118129130945423483e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.30372295663095470359211949045344607e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.382742953753485333207877784720070523e-12)
+ };
+
+ static const T c1 = BOOST_MATH_BIG_CONSTANT(T, 113, 1677624236387711.0);
+ static const T c2 = BOOST_MATH_BIG_CONSTANT(T, 113, 4503599627370496.0);
+ static const T c3 = BOOST_MATH_BIG_CONSTANT(T, 113, 266514582277687.0);
+ static const T c4 = BOOST_MATH_BIG_CONSTANT(T, 113, 4503599627370496.0);
+ static const T c5 = BOOST_MATH_BIG_CONSTANT(T, 113, 4503599627370496.0);
+ static const T r1 = c1 / c2;
+ static const T r2 = c3 / c4 / c5;
+ static const T r3 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.283806480836357377069325311780969887585024578164571984232357e-31));
+ static const T r = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.372507410781366634461991866580119133535689497771654051555657435242200120636201854384926049951548942392));
+ T t = (z / 3) - 1;
+ result = tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ t = ((z - r1) - r2) - r3;
+ result *= t;
+ if(fabs(t) < 0.1)
+ {
+ result += boost::math::log1p(t / r);
+ }
+ else
+ {
+ result += log(z / r);
+ }
+}
+
+template <class T>
+void expint_i_113b(T& result, const T& z)
+{
+ BOOST_MATH_STD_USING
+ // Maximum Deviation Found: 7.779e-36
+ // Expected Error Term: -7.779e-36
+ // Max Error found at long double precision = Poly: 2.576723e-35 Cheb: 1.236001e-34
+
+ static const T Y = 1.158985137939453125F;
+ static const T P[15] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00139324086199409049282472239613554817),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0338173111691991289178779840307998955),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0555972290794371306259684845277620556),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0378677976003456171563136909186202177),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0152221583517528358782902783914356667),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00428283334203873035104248217403126905),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000922782631491644846511553601323435286),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000155513428088853161562660696055496696),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.205756580255359882813545261519317096e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.220327406578552089820753181821115181e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.189483157545587592043421445645377439e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.122426571518570587750898968123803867e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.635187358949437991465353268374523944e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.203015132965870311935118337194860863e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.384276705503357655108096065452950822e-12)
+ };
+ static const T Q[15] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.58784732785354597996617046880946257),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.18550755302279446339364262338114098),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.55598993549661368604527040349702836),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.184290888380564236919107835030984453),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0459658051803613282360464632326866113),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0089505064268613225167835599456014705),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00139042673882987693424772855926289077),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000174210708041584097450805790176479012),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.176324034009707558089086875136647376e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.142935845999505649273084545313710581e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.907502324487057260675816233312747784e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.431044337808893270797934621235918418e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.139007266881450521776529705677086902e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.234715286125516430792452741830364672e-11)
+ };
+ T t = z / 2 - 4;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ result *= exp(z) / z;
+ result += z;
+}
+
+template <class T>
+void expint_i_113c(T& result, const T& z)
+{
+ BOOST_MATH_STD_USING
+ // Maximum Deviation Found: 1.082e-34
+ // Expected Error Term: 1.080e-34
+ // Max Error found at long double precision = Poly: 1.958294e-34 Cheb: 2.472261e-34
+
+
+ static const T Y = 1.091579437255859375F;
+ static const T P[17] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00685089599550151282724924894258520532),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0443313550253580053324487059748497467),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.071538561252424027443296958795814874),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0622923153354102682285444067843300583),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0361631270264607478205393775461208794),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0153192826839624850298106509601033261),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00496967904961260031539602977748408242),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00126989079663425780800919171538920589),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000258933143097125199914724875206326698),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.422110326689204794443002330541441956e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.546004547590412661451073996127115221e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.546775260262202177131068692199272241e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.404157632825805803833379568956559215e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.200612596196561323832327013027419284e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.502538501472133913417609379765434153e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.326283053716799774936661568391296584e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.869226483473172853557775877908693647e-15)
+ };
+ static const T Q[15] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.23227220874479061894038229141871087),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.40221000361027971895657505660959863),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.65476320985936174728238416007084214),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.816828602963895720369875535001248227),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.306337922909446903672123418670921066),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0902400121654409267774593230720600752),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0212708882169429206498765100993228086),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00404442626252467471957713495828165491),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0006195601618842253612635241404054589),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.755930932686543009521454653994321843e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.716004532773778954193609582677482803e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.500881663076471627699290821742924233e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.233593219218823384508105943657387644e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.554900353169148897444104962034267682e-9)
+ };
+ T t = z / 4 - 3.5;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ result *= exp(z) / z;
+ result += z;
+}
+
+template <class T>
+void expint_i_113d(T& result, const T& z)
+{
+ BOOST_MATH_STD_USING
+ // Maximum Deviation Found: 3.163e-35
+ // Expected Error Term: 3.163e-35
+ // Max Error found at long double precision = Poly: 4.158110e-35 Cheb: 5.385532e-35
+
+ static const T Y = 1.051731109619140625F;
+ static const T P[14] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00144552494420652573815404828020593565),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0126747451594545338365684731262912741),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.01757394877502366717526779263438073),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0126838952395506921945756139424722588),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0060045057928894974954756789352443522),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00205349237147226126653803455793107903),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000532606040579654887676082220195624207),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000107344687098019891474772069139014662),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.169536802705805811859089949943435152e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.20863311729206543881826553010120078e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.195670358542116256713560296776654385e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.133291168587253145439184028259772437e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.595500337089495614285777067722823397e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.133141358866324100955927979606981328e-10)
+ };
+ static const T Q[14] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.72490783907582654629537013560044682),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.44524329516800613088375685659759765),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.778241785539308257585068744978050181),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.300520486589206605184097270225725584),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0879346899691339661394537806057953957),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0200802415843802892793583043470125006),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00362842049172586254520256100538273214),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000519731362862955132062751246769469957),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.584092147914050999895178697392282665e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.501851497707855358002773398333542337e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.313085677467921096644895738538865537e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.127552010539733113371132321521204458e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.25737310826983451144405899970774587e-9)
+ };
+ T t = z / 4 - 5.5;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result *= exp(z) / z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result += z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+}
+
+template <class T>
+void expint_i_113e(T& result, const T& z)
+{
+ BOOST_MATH_STD_USING
+ // Maximum Deviation Found: 7.972e-36
+ // Expected Error Term: 7.962e-36
+ // Max Error found at long double precision = Poly: 1.711721e-34 Cheb: 3.100018e-34
+
+ static const T Y = 1.032726287841796875F;
+ static const T P[15] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00141056919297307534690895009969373233),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0123384175302540291339020257071411437),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0298127270706864057791526083667396115),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0390686759471630584626293670260768098),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0338226792912607409822059922949035589),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0211659736179834946452561197559654582),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0100428887460879377373158821400070313),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00370717396015165148484022792801682932),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0010768667551001624764329000496561659),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000246127328761027039347584096573123531),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.437318110527818613580613051861991198e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.587532682329299591501065482317771497e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.565697065670893984610852937110819467e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.350233957364028523971768887437839573e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.105428907085424234504608142258423505e-8)
+ };
+ static const T Q[16] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 3.17261315255467581204685605414005525),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 4.85267952971640525245338392887217426),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 4.74341914912439861451492872946725151),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 3.31108463283559911602405970817931801),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.74657006336994649386607925179848899),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.718255607416072737965933040353653244),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.234037553177354542791975767960643864),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0607470145906491602476833515412605389),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0125048143774226921434854172947548724),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00201034366420433762935768458656609163),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000244823338417452367656368849303165721),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.213511655166983177960471085462540807e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.119323998465870686327170541547982932e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.322153582559488797803027773591727565e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.161635525318683508633792845159942312e-16)
+ };
+ T t = z / 8 - 4.25;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result *= exp(z) / z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result += z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+}
+
+template <class T>
+void expint_i_113f(T& result, const T& z)
+{
+ BOOST_MATH_STD_USING
+ // Maximum Deviation Found: 4.469e-36
+ // Expected Error Term: 4.468e-36
+ // Max Error found at long double precision = Poly: 1.288958e-35 Cheb: 2.304586e-35
+
+ static const T Y = 1.0216197967529296875F;
+ static const T P[12] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000322999116096627043476023926572650045),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00385606067447365187909164609294113346),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00686514524727568176735949971985244415),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00606260649593050194602676772589601799),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00334382362017147544335054575436194357),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00126108534260253075708625583630318043),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000337881489347846058951220431209276776),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.648480902304640018785370650254018022e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.87652644082970492211455290209092766e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.794712243338068631557849449519994144e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.434084023639508143975983454830954835e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.107839681938752337160494412638656696e-8)
+ };
+ static const T Q[12] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.09913805456661084097134805151524958),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.07041755535439919593503171320431849),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.26406517226052371320416108604874734),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.529689923703770353961553223973435569),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.159578150879536711042269658656115746),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0351720877642000691155202082629857131),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00565313621289648752407123620997063122),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000646920278540515480093843570291218295),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.499904084850091676776993523323213591e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.233740058688179614344680531486267142e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.498800627828842754845418576305379469e-7)
+ };
+ T t = z / 7 - 7;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result *= exp(z) / z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result += z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+}
+
+template <class T>
+void expint_i_113g(T& result, const T& z)
+{
+ BOOST_MATH_STD_USING
+ // Maximum Deviation Found: 5.588e-35
+ // Expected Error Term: -5.566e-35
+ // Max Error found at long double precision = Poly: 9.976345e-35 Cheb: 8.358865e-35
+
+ static const T Y = 1.015148162841796875F;
+ static const T P[11] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000435714784725086961464589957142615216),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00432114324353830636009453048419094314),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0100740363285526177522819204820582424),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0116744115827059174392383504427640362),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00816145387784261141360062395898644652),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00371380272673500791322744465394211508),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00112958263488611536502153195005736563),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000228316462389404645183269923754256664),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.29462181955852860250359064291292577e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.21972450610957417963227028788460299e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.720558173805289167524715527536874694e-7)
+ };
+ static const T Q[11] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 2.95918362458402597039366979529287095),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 3.96472247520659077944638411856748924),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 3.15563251550528513747923714884142131),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.64674612007093983894215359287448334),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.58695020129846594405856226787156424),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.144358385319329396231755457772362793),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.024146911506411684815134916238348063),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0026257132337460784266874572001650153),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000167479843750859222348869769094711093),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.475673638665358075556452220192497036e-5)
+ };
+ T t = z / 14 - 5;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result *= exp(z) / z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+ result += z;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result)
+}
+
+template <class T>
+void expint_i_113h(T& result, const T& z)
+{
+ BOOST_MATH_STD_USING
+ // Maximum Deviation Found: 4.448e-36
+ // Expected Error Term: 4.445e-36
+ // Max Error found at long double precision = Poly: 2.058532e-35 Cheb: 2.165465e-27
+
+ static const T Y= 1.00849151611328125F;
+ static const T P[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0084915161132812500000001440233607358),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.84479378737716028341394223076147872),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -130.431146923726715674081563022115568),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 4336.26945491571504885214176203512015),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -76279.0031974974730095170437591004177),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 729577.956271997673695191455111727774),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -3661928.69330208734947103004900349266),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 8570600.041606912735872059184527855),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -6758379.93672362080947905580906028645)
+ };
+ static const T Q[10] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -99.4868026047611434569541483506091713),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 3879.67753690517114249705089803055473),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -76495.82413252517165830203774900806),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 820773.726408311894342553758526282667),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -4803087.64956923577571031564909646579),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 14521246.227703545012713173740895477),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -19762752.0196769712258527849159393044),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 8354144.67882768405803322344185185517),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 355076.853106511136734454134915432571)
+ };
+ T t = 1 / z;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ result *= exp(z) / z;
+ result += z;
+}
+
+template <class T, class Policy>
+T expint_i_imp(T z, const Policy& pol, const mpl::int_<113>& tag)
+{
+ BOOST_MATH_STD_USING
+ static const char* function = "boost::math::expint<%1%>(%1%)";
+ if(z < 0)
+ return -expint_imp(1, T(-z), pol, tag);
+ if(z == 0)
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+
+ T result;
+
+ if(z <= 6)
+ {
+ expint_i_imp_113a(result, z);
+ }
+ else if (z <= 10)
+ {
+ expint_i_113b(result, z);
+ }
+ else if(z <= 18)
+ {
+ expint_i_113c(result, z);
+ }
+ else if(z <= 26)
+ {
+ expint_i_113d(result, z);
+ }
+ else if(z <= 42)
+ {
+ expint_i_113e(result, z);
+ }
+ else if(z <= 56)
+ {
+ expint_i_113f(result, z);
+ }
+ else if(z <= 84)
+ {
+ expint_i_113g(result, z);
+ }
+ else if(z <= 210)
+ {
+ expint_i_113h(result, z);
+ }
+ else // z > 210
+ {
+ // Maximum Deviation Found: 3.963e-37
+ // Expected Error Term: 3.963e-37
+ // Max Error found at long double precision = Poly: 1.248049e-36 Cheb: 2.843486e-29
+
+ static const T exp40 = static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2.35385266837019985407899910749034804508871617254555467236651e17));
+ static const T Y= 1.00252532958984375F;
+ static const T P[8] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00252532958984375000000000000000000085),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.16591386866059087390621952073890359),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -67.8483431314018462417456828499277579),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1567.68688154683822956359536287575892),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -17335.4683325819116482498725687644986),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 93632.6567462673524739954389166550069),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -225025.189335919133214440347510936787),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 175864.614717440010942804684741336853)
+ };
+ static const T Q[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -65.6998869881600212224652719706425129),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1642.73850032324014781607859416890077),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -19937.2610222467322481947237312818575),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 124136.267326632742667972126625064538),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -384614.251466704550678760562965502293),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 523355.035910385688578278384032026998),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -217809.552260834025885677791936351294),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -8555.81719551123640677261226549550872)
+ };
+ T t = 1 / z;
+ result = Y + tools::evaluate_polynomial(P, t)
+ / tools::evaluate_polynomial(Q, t);
+ if(z < 41)
+ result *= exp(z) / z;
+ else
+ {
+ // Avoid premature overflow if we can:
+ t = z - 40;
+ if(t > tools::log_max_value<T>())
+ {
+ result = policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ else
+ {
+ result *= exp(z - 40) / z;
+ if(result > tools::max_value<T>() / exp40)
+ {
+ result = policies::raise_overflow_error<T>(function, 0, pol);
+ }
+ else
+ {
+ result *= exp40;
+ }
+ }
+ }
+ result += z;
+ }
+ return result;
+}
+
+template <class T, class Policy, class tag>
+struct expint_i_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init(tag());
+ }
+ static void do_init(const mpl::int_<0>&){}
+ static void do_init(const mpl::int_<53>&)
+ {
+ boost::math::expint(T(5));
+ boost::math::expint(T(7));
+ boost::math::expint(T(18));
+ boost::math::expint(T(38));
+ boost::math::expint(T(45));
+ }
+ static void do_init(const mpl::int_<64>&)
+ {
+ boost::math::expint(T(5));
+ boost::math::expint(T(7));
+ boost::math::expint(T(18));
+ boost::math::expint(T(38));
+ boost::math::expint(T(45));
+ }
+ static void do_init(const mpl::int_<113>&)
+ {
+ boost::math::expint(T(5));
+ boost::math::expint(T(7));
+ boost::math::expint(T(17));
+ boost::math::expint(T(25));
+ boost::math::expint(T(40));
+ boost::math::expint(T(50));
+ boost::math::expint(T(80));
+ boost::math::expint(T(200));
+ boost::math::expint(T(220));
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy, class tag>
+const typename expint_i_initializer<T, Policy, tag>::init expint_i_initializer<T, Policy, tag>::initializer;
+
+template <class T, class Policy, class tag>
+struct expint_1_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init(tag());
+ }
+ static void do_init(const mpl::int_<0>&){}
+ static void do_init(const mpl::int_<53>&)
+ {
+ boost::math::expint(1, T(0.5));
+ boost::math::expint(1, T(2));
+ }
+ static void do_init(const mpl::int_<64>&)
+ {
+ boost::math::expint(1, T(0.5));
+ boost::math::expint(1, T(2));
+ }
+ static void do_init(const mpl::int_<113>&)
+ {
+ boost::math::expint(1, T(0.5));
+ boost::math::expint(1, T(2));
+ boost::math::expint(1, T(6));
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy, class tag>
+const typename expint_1_initializer<T, Policy, tag>::init expint_1_initializer<T, Policy, tag>::initializer;
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type
+ expint_forwarder(T z, const Policy& /*pol*/, mpl::true_ const&)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::precision<result_type, Policy>::type precision_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ typedef typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<0> >,
+ mpl::int_<0>,
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<53> >,
+ mpl::int_<53>, // double
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<64> >,
+ mpl::int_<64>, // 80-bit long double
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<113> >,
+ mpl::int_<113>, // 128-bit long double
+ mpl::int_<0> // too many bits, use generic version.
+ >::type
+ >::type
+ >::type
+ >::type tag_type;
+
+ expint_i_initializer<value_type, forwarding_policy, tag_type>::force_instantiate();
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::expint_i_imp(
+ static_cast<value_type>(z),
+ forwarding_policy(),
+ tag_type()), "boost::math::expint<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type
+expint_forwarder(unsigned n, T z, const mpl::false_&)
+{
+ return boost::math::expint(n, z, policies::policy<>());
+}
+
+} // namespace detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type
+ expint(unsigned n, T z, const Policy& /*pol*/)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::precision<result_type, Policy>::type precision_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ typedef typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<0> >,
+ mpl::int_<0>,
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<53> >,
+ mpl::int_<53>, // double
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<64> >,
+ mpl::int_<64>, // 80-bit long double
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<113> >,
+ mpl::int_<113>, // 128-bit long double
+ mpl::int_<0> // too many bits, use generic version.
+ >::type
+ >::type
+ >::type
+ >::type tag_type;
+
+ detail::expint_1_initializer<value_type, forwarding_policy, tag_type>::force_instantiate();
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::expint_imp(
+ n,
+ static_cast<value_type>(z),
+ forwarding_policy(),
+ tag_type()), "boost::math::expint<%1%>(unsigned, %1%)");
+}
+
+template <class T, class U>
+inline typename detail::expint_result<T, U>::type
+ expint(T const z, U const u)
+{
+ typedef typename policies::is_policy<U>::type tag_type;
+ return detail::expint_forwarder(z, u, tag_type());
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type
+ expint(T z)
+{
+ return expint(z, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_EXPINT_HPP
+
+
#include <boost/math/tools/config.hpp>
#include <boost/math/tools/series.hpp>
#include <boost/math/tools/precision.hpp>
+#include <boost/math/tools/big_constant.hpp>
#include <boost/math/policies/error_handling.hpp>
#include <boost/math/tools/rational.hpp>
#include <boost/math/special_functions/math_fwd.hpp>
expm1_series& operator=(const expm1_series&);
};
+template <class T, class Policy, class tag>
+struct expm1_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init(tag());
+ }
+ template <int N>
+ static void do_init(const mpl::int_<N>&){}
+ static void do_init(const mpl::int_<64>&)
+ {
+ expm1(T(0.5));
+ }
+ static void do_init(const mpl::int_<113>&)
+ {
+ expm1(T(0.5));
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy, class tag>
+const typename expm1_initializer<T, Policy, tag>::init expm1_initializer<T, Policy, tag>::initializer;
+
//
// Algorithm expm1 is part of C99, but is not yet provided by many compilers.
//
T zero = 0;
T result = tools::sum_series(s, policies::get_epsilon<T, Policy>(), max_iter, zero);
#endif
- policies::check_series_iterations("boost::math::expm1<%1%>(%1%)", max_iter, pol);
+ policies::check_series_iterations<T>("boost::math::expm1<%1%>(%1%)", max_iter, pol);
return result;
}
return x;
static const float Y = 0.10281276702880859e1f;
- static const T n[] = { -0.28127670288085937e-1, 0.51278186299064534e0, -0.6310029069350198e-1, 0.11638457975729296e-1, -0.52143390687521003e-3, 0.21491399776965688e-4 };
- static const T d[] = { 1, -0.45442309511354755e0, 0.90850389570911714e-1, -0.10088963629815502e-1, 0.63003407478692265e-3, -0.17976570003654402e-4 };
+ static const T n[] = { static_cast<T>(-0.28127670288085937e-1), static_cast<T>(0.51278186299064534e0), static_cast<T>(-0.6310029069350198e-1), static_cast<T>(0.11638457975729296e-1), static_cast<T>(-0.52143390687521003e-3), static_cast<T>(0.21491399776965688e-4) };
+ static const T d[] = { 1, static_cast<T>(-0.45442309511354755e0), static_cast<T>(0.90850389570911714e-1), static_cast<T>(-0.10088963629815502e-1), static_cast<T>(0.63003407478692265e-3), static_cast<T>(-0.17976570003654402e-4) };
T result = x * Y + x * tools::evaluate_polynomial(n, x) / tools::evaluate_polynomial(d, x);
return result;
static const float Y = 0.10281276702880859375e1f;
static const T n[] = {
- -0.281276702880859375e-1L,
- 0.512980290285154286358e0L,
- -0.667758794592881019644e-1L,
- 0.131432469658444745835e-1L,
- -0.72303795326880286965e-3L,
- 0.447441185192951335042e-4L,
- -0.714539134024984593011e-6L
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.281276702880859375e-1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.512980290285154286358e0),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.667758794592881019644e-1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.131432469658444745835e-1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.72303795326880286965e-3),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.447441185192951335042e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.714539134024984593011e-6)
};
static const T d[] = {
- 1,
- -0.461477618025562520389e0L,
- 0.961237488025708540713e-1L,
- -0.116483957658204450739e-1L,
- 0.873308008461557544458e-3L,
- -0.387922804997682392562e-4L,
- 0.807473180049193557294e-6L
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.461477618025562520389e0),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.961237488025708540713e-1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.116483957658204450739e-1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.873308008461557544458e-3),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.387922804997682392562e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.807473180049193557294e-6)
};
T result = x * Y + x * tools::evaluate_polynomial(n, x) / tools::evaluate_polynomial(d, x);
static const float Y = 0.10281276702880859375e1f;
static const T n[] = {
- -0.28127670288085937499999999999999999854e-1L,
- 0.51278156911210477556524452177540792214e0L,
- -0.63263178520747096729500254678819588223e-1L,
- 0.14703285606874250425508446801230572252e-1L,
- -0.8675686051689527802425310407898459386e-3L,
- 0.88126359618291165384647080266133492399e-4L,
- -0.25963087867706310844432390015463138953e-5L,
- 0.14226691087800461778631773363204081194e-6L,
- -0.15995603306536496772374181066765665596e-8L,
- 0.45261820069007790520447958280473183582e-10L
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.28127670288085937499999999999999999854e-1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.51278156911210477556524452177540792214e0),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.63263178520747096729500254678819588223e-1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.14703285606874250425508446801230572252e-1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.8675686051689527802425310407898459386e-3),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.88126359618291165384647080266133492399e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.25963087867706310844432390015463138953e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.14226691087800461778631773363204081194e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.15995603306536496772374181066765665596e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.45261820069007790520447958280473183582e-10)
};
static const T d[] = {
- 1,
- -0.45441264709074310514348137469214538853e0L,
- 0.96827131936192217313133611655555298106e-1L,
- -0.12745248725908178612540554584374876219e-1L,
- 0.11473613871583259821612766907781095472e-2L,
- -0.73704168477258911962046591907690764416e-4L,
- 0.34087499397791555759285503797256103259e-5L,
- -0.11114024704296196166272091230695179724e-6L,
- 0.23987051614110848595909588343223896577e-8L,
- -0.29477341859111589208776402638429026517e-10L,
- 0.13222065991022301420255904060628100924e-12L
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.45441264709074310514348137469214538853e0),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.96827131936192217313133611655555298106e-1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.12745248725908178612540554584374876219e-1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.11473613871583259821612766907781095472e-2),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.73704168477258911962046591907690764416e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.34087499397791555759285503797256103259e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.11114024704296196166272091230695179724e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.23987051614110848595909588343223896577e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.29477341859111589208776402638429026517e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.13222065991022301420255904060628100924e-12)
};
T result = x * Y + x * tools::evaluate_polynomial(n, x) / tools::evaluate_polynomial(d, x);
>::type
>::type tag_type;
+ detail::expm1_initializer<value_type, forwarding_policy, tag_type>::force_instantiate();
+
return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::expm1_imp(
static_cast<value_type>(x),
tag_type(), forwarding_policy()), "boost::math::expm1<%1%>(%1%)");
inline long double expm1(long double x, const policies::policy<>&){ return ::expm1l(x); }
# endif
# else
-inline float expm1(float x, const policies::policy<>&){ return ::expm1(x); }
+inline float expm1(float x, const policies::policy<>&){ return static_cast<float>(::expm1(x)); }
# endif
inline double expm1(double x, const policies::policy<>&){ return ::expm1(x); }
#endif
--- /dev/null
+// Copyright John Maddock 2006, 2010.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SP_FACTORIALS_HPP
+#define BOOST_MATH_SP_FACTORIALS_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/special_functions/detail/unchecked_factorial.hpp>
+#include <boost/array.hpp>
+#ifdef BOOST_MSVC
+#pragma warning(push) // Temporary until lexical cast fixed.
+#pragma warning(disable: 4127 4701)
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+#include <boost/config/no_tr1/cmath.hpp>
+
+namespace boost { namespace math
+{
+
+template <class T, class Policy>
+inline T factorial(unsigned i, const Policy& pol)
+{
+ BOOST_STATIC_ASSERT(!boost::is_integral<T>::value);
+ // factorial<unsigned int>(n) is not implemented
+ // because it would overflow integral type T for too small n
+ // to be useful. Use instead a floating-point type,
+ // and convert to an unsigned type if essential, for example:
+ // unsigned int nfac = static_cast<unsigned int>(factorial<double>(n));
+ // See factorial documentation for more detail.
+
+ BOOST_MATH_STD_USING // Aid ADL for floor.
+
+ if(i <= max_factorial<T>::value)
+ return unchecked_factorial<T>(i);
+ T result = boost::math::tgamma(static_cast<T>(i+1), pol);
+ if(result > tools::max_value<T>())
+ return result; // Overflowed value! (But tgamma will have signalled the error already).
+ return floor(result + 0.5f);
+}
+
+template <class T>
+inline T factorial(unsigned i)
+{
+ return factorial<T>(i, policies::policy<>());
+}
+/*
+// Can't have these in a policy enabled world?
+template<>
+inline float factorial<float>(unsigned i)
+{
+ if(i <= max_factorial<float>::value)
+ return unchecked_factorial<float>(i);
+ return tools::overflow_error<float>(BOOST_CURRENT_FUNCTION);
+}
+
+template<>
+inline double factorial<double>(unsigned i)
+{
+ if(i <= max_factorial<double>::value)
+ return unchecked_factorial<double>(i);
+ return tools::overflow_error<double>(BOOST_CURRENT_FUNCTION);
+}
+*/
+template <class T, class Policy>
+T double_factorial(unsigned i, const Policy& pol)
+{
+ BOOST_STATIC_ASSERT(!boost::is_integral<T>::value);
+ BOOST_MATH_STD_USING // ADL lookup of std names
+ if(i & 1)
+ {
+ // odd i:
+ if(i < max_factorial<T>::value)
+ {
+ unsigned n = (i - 1) / 2;
+ return ceil(unchecked_factorial<T>(i) / (ldexp(T(1), (int)n) * unchecked_factorial<T>(n)) - 0.5f);
+ }
+ //
+ // Fallthrough: i is too large to use table lookup, try the
+ // gamma function instead.
+ //
+ T result = boost::math::tgamma(static_cast<T>(i) / 2 + 1, pol) / sqrt(constants::pi<T>());
+ if(ldexp(tools::max_value<T>(), -static_cast<int>(i+1) / 2) > result)
+ return ceil(result * ldexp(T(1), static_cast<int>(i+1) / 2) - 0.5f);
+ }
+ else
+ {
+ // even i:
+ unsigned n = i / 2;
+ T result = factorial<T>(n, pol);
+ if(ldexp(tools::max_value<T>(), -(int)n) > result)
+ return result * ldexp(T(1), (int)n);
+ }
+ //
+ // If we fall through to here then the result is infinite:
+ //
+ return policies::raise_overflow_error<T>("boost::math::double_factorial<%1%>(unsigned)", 0, pol);
+}
+
+template <class T>
+inline T double_factorial(unsigned i)
+{
+ return double_factorial<T>(i, policies::policy<>());
+}
+
+namespace detail{
+
+template <class T, class Policy>
+T rising_factorial_imp(T x, int n, const Policy& pol)
+{
+ BOOST_STATIC_ASSERT(!boost::is_integral<T>::value);
+ if(x < 0)
+ {
+ //
+ // For x less than zero, we really have a falling
+ // factorial, modulo a possible change of sign.
+ //
+ // Note that the falling factorial isn't defined
+ // for negative n, so we'll get rid of that case
+ // first:
+ //
+ bool inv = false;
+ if(n < 0)
+ {
+ x += n;
+ n = -n;
+ inv = true;
+ }
+ T result = ((n&1) ? -1 : 1) * falling_factorial(-x, n, pol);
+ if(inv)
+ result = 1 / result;
+ return result;
+ }
+ if(n == 0)
+ return 1;
+ //
+ // We don't optimise this for small n, because
+ // tgamma_delta_ratio is alreay optimised for that
+ // use case:
+ //
+ return 1 / boost::math::tgamma_delta_ratio(x, static_cast<T>(n), pol);
+}
+
+template <class T, class Policy>
+inline T falling_factorial_imp(T x, unsigned n, const Policy& pol)
+{
+ BOOST_STATIC_ASSERT(!boost::is_integral<T>::value);
+ BOOST_MATH_STD_USING // ADL of std names
+ if(x == 0)
+ return 0;
+ if(x < 0)
+ {
+ //
+ // For x < 0 we really have a rising factorial
+ // modulo a possible change of sign:
+ //
+ return (n&1 ? -1 : 1) * rising_factorial(-x, n, pol);
+ }
+ if(n == 0)
+ return 1;
+ if(x < n-1)
+ {
+ //
+ // x+1-n will be negative and tgamma_delta_ratio won't
+ // handle it, split the product up into three parts:
+ //
+ T xp1 = x + 1;
+ unsigned n2 = itrunc((T)floor(xp1), pol);
+ if(n2 == xp1)
+ return 0;
+ T result = boost::math::tgamma_delta_ratio(xp1, -static_cast<T>(n2), pol);
+ x -= n2;
+ result *= x;
+ ++n2;
+ if(n2 < n)
+ result *= falling_factorial(x - 1, n - n2, pol);
+ return result;
+ }
+ //
+ // Simple case: just the ratio of two
+ // (positive argument) gamma functions.
+ // Note that we don't optimise this for small n,
+ // because tgamma_delta_ratio is alreay optimised
+ // for that use case:
+ //
+ return boost::math::tgamma_delta_ratio(x + 1, -static_cast<T>(n), pol);
+}
+
+} // namespace detail
+
+template <class RT>
+inline typename tools::promote_args<RT>::type
+ falling_factorial(RT x, unsigned n)
+{
+ typedef typename tools::promote_args<RT>::type result_type;
+ return detail::falling_factorial_imp(
+ static_cast<result_type>(x), n, policies::policy<>());
+}
+
+template <class RT, class Policy>
+inline typename tools::promote_args<RT>::type
+ falling_factorial(RT x, unsigned n, const Policy& pol)
+{
+ typedef typename tools::promote_args<RT>::type result_type;
+ return detail::falling_factorial_imp(
+ static_cast<result_type>(x), n, pol);
+}
+
+template <class RT>
+inline typename tools::promote_args<RT>::type
+ rising_factorial(RT x, int n)
+{
+ typedef typename tools::promote_args<RT>::type result_type;
+ return detail::rising_factorial_imp(
+ static_cast<result_type>(x), n, policies::policy<>());
+}
+
+template <class RT, class Policy>
+inline typename tools::promote_args<RT>::type
+ rising_factorial(RT x, int n, const Policy& pol)
+{
+ typedef typename tools::promote_args<RT>::type result_type;
+ return detail::rising_factorial_imp(
+ static_cast<result_type>(x), n, pol);
+}
+
+} // namespace math
+} // namespace boost
+
+#endif // BOOST_MATH_SP_FACTORIALS_HPP
+
a floating point type (float, double or long double) can be determined
at compile time, then the following algorithm is used:
- If all exponent bits, the flag bit (if there is one),
+ If all exponent bits, the flag bit (if there is one),
and all significand bits are 0, then the number is zero.
- If all exponent bits and the flag bit (if there is one) are 0,
+ If all exponent bits and the flag bit (if there is one) are 0,
and at least one significand bit is 1, then the number is subnormal.
- If all exponent bits are 1 and all significand bits are 0,
+ If all exponent bits are 1 and all significand bits are 0,
then the number is infinity.
If all exponent bits are 1 and at least one significand bit is 1,
Most formats have the structure
sign bit + exponent bits + significand bits.
-
+
A few have the structure
sign bit + exponent bits + flag bit + significand bits.
The flag bit is 0 for zero and subnormal numbers,
namespace std{ using ::abs; using ::fabs; }
#endif
-namespace boost{
+namespace boost{
-#if defined(BOOST_HAS_FPCLASSIFY) || defined(isnan)
//
// This must not be located in any namespace under boost::math
// otherwise we can get into an infinite loop if isnan is
//
namespace math_detail{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4800)
+#endif
+
template <class T>
inline bool is_nan_helper(T t, const boost::true_type&)
{
#ifdef isnan
return isnan(t);
+#elif defined(BOOST_MATH_DISABLE_STD_FPCLASSIFY) || !defined(BOOST_HAS_FPCLASSIFY)
+ (void)t;
+ return false;
#else // BOOST_HAS_FPCLASSIFY
return (BOOST_FPCLASSIFY_PREFIX fpclassify(t) == (int)FP_NAN);
#endif
}
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
template <class T>
inline bool is_nan_helper(T, const boost::false_type&)
{
}
-#endif // defined(BOOST_HAS_FPCLASSIFY) || defined(isnan)
-
namespace math{
namespace detail{
BOOST_MATH_INSTRUMENT_VARIABLE(t);
// whenever possible check for Nan's first:
-#ifdef BOOST_HAS_FPCLASSIFY
+#if defined(BOOST_HAS_FPCLASSIFY) && !defined(BOOST_MATH_DISABLE_STD_FPCLASSIFY)
if(::boost::math_detail::is_nan_helper(t, ::boost::is_floating_point<T>()))
return FP_NAN;
#elif defined(isnan)
{
#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
if(std::numeric_limits<T>::is_specialized)
- return fp_classify_imp(t, mpl::true_());
+ return fpclassify_imp(t, generic_tag<true>());
#endif
- //
+ //
// An unknown type with no numeric_limits support,
// so what are we supposed to do we do here?
//
return t == 0 ? FP_ZERO : FP_NORMAL;
}
-template<class T>
+template<class T>
int fpclassify_imp BOOST_NO_MACRO_EXPAND(T x, ieee_copy_all_bits_tag)
{
typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
return FP_NAN;
}
-template<class T>
+template<class T>
int fpclassify_imp BOOST_NO_MACRO_EXPAND(T x, ieee_copy_leading_bits_tag)
{
typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
BOOST_MATH_INSTRUMENT_VARIABLE(x);
BOOST_DEDUCED_TYPENAME traits::bits a;
- traits::get_bits(x,a);
+ traits::get_bits(x,a);
a &= traits::exponent | traits::flag | traits::significand;
if(a <= traits::significand) {
return FP_NAN;
}
-#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && defined(BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY)
-template <>
-inline int fpclassify_imp<long double> BOOST_NO_MACRO_EXPAND(long double t, const native_tag&)
+#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && (defined(BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY) || defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS))
+inline int fpclassify_imp BOOST_NO_MACRO_EXPAND(long double t, const native_tag&)
{
return boost::math::detail::fpclassify_imp(t, generic_tag<true>());
}
{
typedef typename detail::fp_traits<T>::type traits;
typedef typename traits::method method;
+ typedef typename tools::promote_args_permissive<T>::type value_type;
#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- if(std::numeric_limits<T>::is_specialized && detail::is_generic_tag_false(method()))
- return detail::fpclassify_imp(t, detail::generic_tag<true>());
- return detail::fpclassify_imp(t, method());
+ if(std::numeric_limits<T>::is_specialized && detail::is_generic_tag_false(static_cast<method*>(0)))
+ return detail::fpclassify_imp(static_cast<value_type>(t), detail::generic_tag<true>());
+ return detail::fpclassify_imp(static_cast<value_type>(t), method());
#else
- return detail::fpclassify_imp(t, method());
+ return detail::fpclassify_imp(static_cast<value_type>(t), method());
#endif
}
+#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+template <>
+inline int fpclassify<long double> BOOST_NO_MACRO_EXPAND(long double t)
+{
+ typedef detail::fp_traits<long double>::type traits;
+ typedef traits::method method;
+ typedef long double value_type;
+#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+ if(std::numeric_limits<long double>::is_specialized && detail::is_generic_tag_false(static_cast<method*>(0)))
+ return detail::fpclassify_imp(static_cast<value_type>(t), detail::generic_tag<true>());
+ return detail::fpclassify_imp(static_cast<value_type>(t), method());
+#else
+ return detail::fpclassify_imp(static_cast<value_type>(t), method());
+#endif
+}
+#endif
+
namespace detail {
#ifdef BOOST_MATH_USE_STD_FPCLASSIFY
- template<class T>
+ template<class T>
inline bool isfinite_impl(T x, native_tag const&)
{
return (std::isfinite)(x);
}
#endif
- template<class T>
+ template<class T>
inline bool isfinite_impl(T x, generic_tag<true> const&)
{
return x >= -(std::numeric_limits<T>::max)()
&& x <= (std::numeric_limits<T>::max)();
}
- template<class T>
+ template<class T>
inline bool isfinite_impl(T x, generic_tag<false> const&)
{
#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
if(std::numeric_limits<T>::is_specialized)
- return isfinite_impl(x, mpl::true_());
+ return isfinite_impl(x, generic_tag<true>());
#endif
(void)x; // warning supression.
return true;
}
- template<class T>
+ template<class T>
inline bool isfinite_impl(T x, ieee_tag const&)
{
typedef BOOST_DEDUCED_TYPENAME detail::fp_traits<T>::type traits;
}
#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && defined(BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY)
-template <>
-inline bool isfinite_impl<long double> BOOST_NO_MACRO_EXPAND(long double t, const native_tag&)
+inline bool isfinite_impl BOOST_NO_MACRO_EXPAND(long double t, const native_tag&)
{
return boost::math::detail::isfinite_impl(t, generic_tag<true>());
}
}
-template<class T>
+template<class T>
inline bool (isfinite)(T x)
{ //!< \brief return true if floating-point type t is finite.
typedef typename detail::fp_traits<T>::type traits;
typedef typename traits::method method;
- typedef typename boost::is_floating_point<T>::type fp_tag;
- return detail::isfinite_impl(x, method());
+ // typedef typename boost::is_floating_point<T>::type fp_tag;
+ typedef typename tools::promote_args_permissive<T>::type value_type;
+ return detail::isfinite_impl(static_cast<value_type>(x), method());
}
+#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+template<>
+inline bool (isfinite)(long double x)
+{ //!< \brief return true if floating-point type t is finite.
+ typedef detail::fp_traits<long double>::type traits;
+ typedef traits::method method;
+ typedef boost::is_floating_point<long double>::type fp_tag;
+ typedef long double value_type;
+ return detail::isfinite_impl(static_cast<value_type>(x), method());
+}
+#endif
+
//------------------------------------------------------------------------------
namespace detail {
#ifdef BOOST_MATH_USE_STD_FPCLASSIFY
- template<class T>
+ template<class T>
inline bool isnormal_impl(T x, native_tag const&)
{
return (std::isnormal)(x);
}
#endif
- template<class T>
+ template<class T>
inline bool isnormal_impl(T x, generic_tag<true> const&)
{
if(x < 0) x = -x;
&& x <= (std::numeric_limits<T>::max)();
}
- template<class T>
+ template<class T>
inline bool isnormal_impl(T x, generic_tag<false> const&)
{
#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
if(std::numeric_limits<T>::is_specialized)
- return isnormal_impl(x, mpl::true_());
+ return isnormal_impl(x, generic_tag<true>());
#endif
return !(x == 0);
}
- template<class T>
+ template<class T>
inline bool isnormal_impl(T x, ieee_tag const&)
{
typedef BOOST_DEDUCED_TYPENAME detail::fp_traits<T>::type traits;
}
#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && defined(BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY)
-template <>
-inline bool isnormal_impl<long double> BOOST_NO_MACRO_EXPAND(long double t, const native_tag&)
+inline bool isnormal_impl BOOST_NO_MACRO_EXPAND(long double t, const native_tag&)
{
return boost::math::detail::isnormal_impl(t, generic_tag<true>());
}
}
-template<class T>
+template<class T>
inline bool (isnormal)(T x)
{
typedef typename detail::fp_traits<T>::type traits;
typedef typename traits::method method;
- typedef typename boost::is_floating_point<T>::type fp_tag;
- return detail::isnormal_impl(x, method());
+ //typedef typename boost::is_floating_point<T>::type fp_tag;
+ typedef typename tools::promote_args_permissive<T>::type value_type;
+ return detail::isnormal_impl(static_cast<value_type>(x), method());
}
+#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+template<>
+inline bool (isnormal)(long double x)
+{
+ typedef detail::fp_traits<long double>::type traits;
+ typedef traits::method method;
+ typedef boost::is_floating_point<long double>::type fp_tag;
+ typedef long double value_type;
+ return detail::isnormal_impl(static_cast<value_type>(x), method());
+}
+#endif
+
//------------------------------------------------------------------------------
namespace detail {
#ifdef BOOST_MATH_USE_STD_FPCLASSIFY
- template<class T>
+ template<class T>
inline bool isinf_impl(T x, native_tag const&)
{
return (std::isinf)(x);
}
#endif
- template<class T>
+ template<class T>
inline bool isinf_impl(T x, generic_tag<true> const&)
{
(void)x; // in case the compiler thinks that x is unused because std::numeric_limits<T>::has_infinity is false
- return std::numeric_limits<T>::has_infinity
+ return std::numeric_limits<T>::has_infinity
&& ( x == std::numeric_limits<T>::infinity()
|| x == -std::numeric_limits<T>::infinity());
}
- template<class T>
+ template<class T>
inline bool isinf_impl(T x, generic_tag<false> const&)
{
#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
if(std::numeric_limits<T>::is_specialized)
- return isinf_impl(x, mpl::true_());
+ return isinf_impl(x, generic_tag<true>());
#endif
(void)x; // warning supression.
return false;
}
- template<class T>
+ template<class T>
inline bool isinf_impl(T x, ieee_copy_all_bits_tag const&)
{
typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
return a == traits::exponent;
}
- template<class T>
+ template<class T>
inline bool isinf_impl(T x, ieee_copy_leading_bits_tag const&)
{
typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
}
#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && defined(BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY)
-template <>
-inline bool isinf_impl<long double> BOOST_NO_MACRO_EXPAND(long double t, const native_tag&)
+inline bool isinf_impl BOOST_NO_MACRO_EXPAND(long double t, const native_tag&)
{
return boost::math::detail::isinf_impl(t, generic_tag<true>());
}
} // namespace detail
-template<class T>
+template<class T>
inline bool (isinf)(T x)
{
typedef typename detail::fp_traits<T>::type traits;
typedef typename traits::method method;
- typedef typename boost::is_floating_point<T>::type fp_tag;
- return detail::isinf_impl(x, method());
+ // typedef typename boost::is_floating_point<T>::type fp_tag;
+ typedef typename tools::promote_args_permissive<T>::type value_type;
+ return detail::isinf_impl(static_cast<value_type>(x), method());
}
+#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+template<>
+inline bool (isinf)(long double x)
+{
+ typedef detail::fp_traits<long double>::type traits;
+ typedef traits::method method;
+ typedef boost::is_floating_point<long double>::type fp_tag;
+ typedef long double value_type;
+ return detail::isinf_impl(static_cast<value_type>(x), method());
+}
+#endif
+
//------------------------------------------------------------------------------
namespace detail {
#ifdef BOOST_MATH_USE_STD_FPCLASSIFY
- template<class T>
+ template<class T>
inline bool isnan_impl(T x, native_tag const&)
{
return (std::isnan)(x);
}
#endif
- template<class T>
+ template<class T>
inline bool isnan_impl(T x, generic_tag<true> const&)
{
return std::numeric_limits<T>::has_infinity
: x != x;
}
- template<class T>
+ template<class T>
inline bool isnan_impl(T x, generic_tag<false> const&)
{
#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
if(std::numeric_limits<T>::is_specialized)
- return isnan_impl(x, mpl::true_());
+ return isnan_impl(x, generic_tag<true>());
#endif
(void)x; // warning supression
return false;
}
- template<class T>
+ template<class T>
inline bool isnan_impl(T x, ieee_copy_all_bits_tag const&)
{
typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
return a > traits::exponent;
}
- template<class T>
+ template<class T>
inline bool isnan_impl(T x, ieee_copy_leading_bits_tag const&)
{
typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
} // namespace detail
-template<class T> bool (isnan)(T x)
+template<class T>
+inline bool (isnan)(T x)
{ //!< \brief return true if floating-point type t is NaN (Not A Number).
typedef typename detail::fp_traits<T>::type traits;
typedef typename traits::method method;
- typedef typename boost::is_floating_point<T>::type fp_tag;
+ // typedef typename boost::is_floating_point<T>::type fp_tag;
return detail::isnan_impl(x, method());
}
template <> inline bool isnan BOOST_NO_MACRO_EXPAND<float>(float t){ return ::boost::math_detail::is_nan_helper(t, boost::true_type()); }
template <> inline bool isnan BOOST_NO_MACRO_EXPAND<double>(double t){ return ::boost::math_detail::is_nan_helper(t, boost::true_type()); }
template <> inline bool isnan BOOST_NO_MACRO_EXPAND<long double>(long double t){ return ::boost::math_detail::is_nan_helper(t, boost::true_type()); }
+#elif defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)
+template<>
+inline bool (isnan)(long double x)
+{ //!< \brief return true if floating-point type t is NaN (Not A Number).
+ typedef detail::fp_traits<long double>::type traits;
+ typedef traits::method method;
+ typedef boost::is_floating_point<long double>::type fp_tag;
+ return detail::isnan_impl(x, method());
+}
#endif
} // namespace math
+
// Copyright John Maddock 2006-7.
// Copyright Paul A. Bristow 2007.
#endif
#include <boost/config.hpp>
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4127 4701)
-// // For lexical_cast, until fixed in 1.35?
-// // conditional expression is constant &
-// // Potentially uninitialized local variable 'name' used
-#endif
-#include <boost/lexical_cast.hpp>
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
#include <boost/math/tools/series.hpp>
#include <boost/math/tools/fraction.hpp>
#include <boost/math/tools/precision.hpp>
#include <boost/config/no_tr1/cmath.hpp>
#include <algorithm>
-#ifdef BOOST_MATH_INSTRUMENT
-#include <iostream>
-#include <iomanip>
-#include <typeinfo>
-#endif
-
#ifdef BOOST_MSVC
# pragma warning(push)
# pragma warning(disable: 4702) // unreachable code (return after domain_error throw).
//
// tgamma(z), with Lanczos support:
//
-template <class T, class Policy, class L>
-T gamma_imp(T z, const Policy& pol, const L& l)
+template <class T, class Policy, class Lanczos>
+T gamma_imp(T z, const Policy& pol, const Lanczos& l)
{
BOOST_MATH_STD_USING
if(z <= -20)
{
result = gamma_imp(T(-z), pol, l) * sinpx(z);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
if((fabs(result) < 1) && (tools::max_value<T>() * fabs(result) < boost::math::constants::pi<T>()))
return policies::raise_overflow_error<T>(function, "Result of tgamma is too large to represent.", pol);
result = -boost::math::constants::pi<T>() / result;
return policies::raise_underflow_error<T>(function, "Result of tgamma is too small to represent.", pol);
if((boost::math::fpclassify)(result) == (int)FP_SUBNORMAL)
return policies::raise_denorm_error<T>(function, "Result of tgamma is denormalized.", result, pol);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
return result;
}
z += 1;
}
}
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
if((floor(z) == z) && (z < max_factorial<T>::value))
{
result *= unchecked_factorial<T>(itrunc(z, pol) - 1);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
}
else
{
- result *= L::lanczos_sum(z);
- if(z * log(z) > tools::log_max_value<T>())
+ result *= Lanczos::lanczos_sum(z);
+ T zgh = (z + static_cast<T>(Lanczos::g()) - boost::math::constants::half<T>());
+ T lzgh = log(zgh);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
+ BOOST_MATH_INSTRUMENT_VARIABLE(tools::log_max_value<T>());
+ if(z * lzgh > tools::log_max_value<T>())
{
// we're going to overflow unless this is done with care:
- T zgh = (z + static_cast<T>(L::g()) - boost::math::constants::half<T>());
- if(log(zgh) * z / 2 > tools::log_max_value<T>())
+ BOOST_MATH_INSTRUMENT_VARIABLE(zgh);
+ if(lzgh * z / 2 > tools::log_max_value<T>())
return policies::raise_overflow_error<T>(function, "Result of tgamma is too large to represent.", pol);
T hp = pow(zgh, (z / 2) - T(0.25));
+ BOOST_MATH_INSTRUMENT_VARIABLE(hp);
result *= hp / exp(zgh);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
if(tools::max_value<T>() / hp < result)
return policies::raise_overflow_error<T>(function, "Result of tgamma is too large to represent.", pol);
result *= hp;
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
}
else
{
- T zgh = (z + static_cast<T>(L::g()) - boost::math::constants::half<T>());
+ BOOST_MATH_INSTRUMENT_VARIABLE(zgh);
+ BOOST_MATH_INSTRUMENT_VARIABLE(pow(zgh, z - boost::math::constants::half<T>()));
+ BOOST_MATH_INSTRUMENT_VARIABLE(exp(zgh));
result *= pow(zgh, z - boost::math::constants::half<T>()) / exp(zgh);
+ BOOST_MATH_INSTRUMENT_VARIABLE(result);
}
}
return result;
//
// lgamma(z) with Lanczos support:
//
-template <class T, class Policy, class L>
-T lgamma_imp(T z, const Policy& pol, const L& l, int* sign = 0)
+template <class T, class Policy, class Lanczos>
+T lgamma_imp(T z, const Policy& pol, const Lanczos& l, int* sign = 0)
{
#ifdef BOOST_MATH_INSTRUMENT
static bool b = false;
>,
mpl::int_<113>, mpl::int_<0> >::type
>::type tag_type;
- result = lgamma_small_imp<T>(z, z - 1, z - 2, tag_type(), pol, l);
+ result = lgamma_small_imp<T>(z, T(z - 1), T(z - 2), tag_type(), pol, l);
}
- else if((z >= 3) && (z < 100))
+ else if((z >= 3) && (z < 100) && (std::numeric_limits<T>::max_exponent >= 1024))
{
// taking the log of tgamma reduces the error, no danger of overflow here:
result = log(gamma_imp(z, pol, l));
else
{
// regular evaluation:
- T zgh = static_cast<T>(z + L::g() - boost::math::constants::half<T>());
+ T zgh = static_cast<T>(z + Lanczos::g() - boost::math::constants::half<T>());
result = log(zgh) - 1;
result *= z - 0.5f;
- result += log(L::lanczos_sum_expG_scaled(z));
+ result += log(Lanczos::lanczos_sum_expG_scaled(z));
}
if(sign)
boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();
T factor = policies::get_epsilon<T, Policy>();
T result = boost::math::tools::sum_series(s, factor, max_iter, init_value);
- policies::check_series_iterations("boost::math::detail::lower_gamma_series<%1%>(%1%)", max_iter, pol);
+ policies::check_series_iterations<T>("boost::math::detail::lower_gamma_series<%1%>(%1%)", max_iter, pol);
return result;
}
return policies::raise_pole_error<T>(function, "Evaluation of tgamma at a negative integer %1%.", z, pol);
if(z <= -20)
{
- T result = gamma_imp(-z, pol, l) * sinpx(z);
+ T result = gamma_imp(T(-z), pol, l) * sinpx(z);
if((fabs(result) < 1) && (tools::max_value<T>() * fabs(result) < boost::math::constants::pi<T>()))
return policies::raise_overflow_error<T>(function, "Result of tgamma is too large to represent.", pol);
result = -boost::math::constants::pi<T>() / result;
}
else if((z != 1) && (z != 2))
{
- T limit = (std::max)(z+1, T(10));
+ T limit = (std::max)(T(z+1), T(10));
T prefix = z * log(limit) - limit;
T sum = detail::lower_gamma_series(z, limit, pol) / z;
sum += detail::upper_gamma_fraction(z, limit, ::boost::math::policies::get_epsilon<T, Policy>());
// This helper calculates tgamma(dz+1)-1 without cancellation errors,
// used by the upper incomplete gamma with z < 1:
//
-template <class T, class Policy, class L>
-T tgammap1m1_imp(T dz, Policy const& pol, const L& l)
+template <class T, class Policy, class Lanczos>
+T tgammap1m1_imp(T dz, Policy const& pol, const Lanczos& l)
{
BOOST_MATH_STD_USING
mpl::greater<precision_type, mpl::int_<113> >
>,
typename mpl::if_<
- is_same<L, lanczos::lanczos24m113>,
+ is_same<Lanczos, lanczos::lanczos24m113>,
mpl::int_<113>,
mpl::int_<0>
>::type,
// algebra isn't easy for the general case....
// Start by subracting 1 from tgamma:
//
- T result = gamma_imp(1 + dz, pol, l) - 1;
+ T result = gamma_imp(T(1 + dz), pol, l) - 1;
BOOST_MATH_INSTRUMENT_CODE(result);
//
// Test the level of cancellation error observed: we loose one bit
// Compute (z^a)(e^-z)/tgamma(a)
// most if the error occurs in this function:
//
-template <class T, class Policy, class L>
-T regularised_gamma_prefix(T a, T z, const Policy& pol, const L& l)
+template <class T, class Policy, class Lanczos>
+T regularised_gamma_prefix(T a, T z, const Policy& pol, const Lanczos& l)
{
BOOST_MATH_STD_USING
- T agh = a + static_cast<T>(L::g()) - T(0.5);
+ T agh = a + static_cast<T>(Lanczos::g()) - T(0.5);
T prefix;
- T d = ((z - a) - static_cast<T>(L::g()) + T(0.5)) / agh;
+ T d = ((z - a) - static_cast<T>(Lanczos::g()) + T(0.5)) / agh;
if(a < 1)
{
else if((fabs(d*d*a) <= 100) && (a > 150))
{
// special case for large a and a ~ z.
- prefix = a * boost::math::log1pmx(d, pol) + z * static_cast<T>(0.5 - L::g()) / agh;
+ prefix = a * boost::math::log1pmx(d, pol) + z * static_cast<T>(0.5 - Lanczos::g()) / agh;
prefix = exp(prefix);
}
else
prefix = pow(z / agh, a) * exp(amz);
}
}
- prefix *= sqrt(agh / boost::math::constants::e<T>()) / L::lanczos_sum_expG_scaled(a);
+ prefix *= sqrt(agh / boost::math::constants::e<T>()) / Lanczos::lanczos_sum_expG_scaled(a);
return prefix;
}
//
*pderivative = p / (*pgam * exp(x));
T init_value = invert ? *pgam : 0;
result = -p * tools::sum_series(s, boost::math::policies::get_epsilon<T, Policy>(), max_iter, (init_value - result) / p);
- policies::check_series_iterations("boost::math::tgamma_small_upper_part<%1%>(%1%, %1%)", max_iter, pol);
+ policies::check_series_iterations<T>("boost::math::tgamma_small_upper_part<%1%>(%1%, %1%)", max_iter, pol);
if(invert)
result = -result;
return result;
typedef typename lanczos::lanczos<T, Policy>::type lanczos_type;
- T result;
+ T result = 0; // Just to avoid warning C4701: potentially uninitialized local variable 'result' used
BOOST_ASSERT((p_derivative == 0) || (normalised == true));
bool is_int, is_half_int;
- bool is_small_a = (a < 30) && (a <= x + 1);
+ bool is_small_a = (a < 30) && (a <= x + 1) && (x < tools::log_max_value<T>());
if(is_small_a)
{
T fa = floor(a);
//
// Ratios of two gamma functions:
//
-template <class T, class Policy, class L>
-T tgamma_delta_ratio_imp_lanczos(T z, T delta, const Policy& pol, const L&)
+template <class T, class Policy, class Lanczos>
+T tgamma_delta_ratio_imp_lanczos(T z, T delta, const Policy& pol, const Lanczos&)
{
BOOST_MATH_STD_USING
- T zgh = z + L::g() - constants::half<T>();
+ T zgh = z + Lanczos::g() - constants::half<T>();
T result;
if(fabs(delta) < 10)
{
result = pow(zgh / (zgh + delta), z - constants::half<T>());
}
result *= pow(constants::e<T>() / (zgh + delta), delta);
- result *= L::lanczos_sum(z) / L::lanczos_sum(z + delta);
+ result *= Lanczos::lanczos_sum(z) / Lanczos::lanczos_sum(T(z + delta));
return result;
}
//
return tgamma_delta_ratio_imp_lanczos(z, delta, pol, lanczos_type());
}
+template <class T, class Policy>
+T tgamma_ratio_imp(T x, T y, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if((x <= tools::min_value<T>()) || (boost::math::isinf)(x))
+ policies::raise_domain_error<T>("boost::math::tgamma_ratio<%1%>(%1%, %1%)", "Gamma function ratios only implemented for positive arguments (got a=%1%).", x, pol);
+ if((y <= tools::min_value<T>()) || (boost::math::isinf)(y))
+ policies::raise_domain_error<T>("boost::math::tgamma_ratio<%1%>(%1%, %1%)", "Gamma function ratios only implemented for positive arguments (got b=%1%).", y, pol);
+
+ if((x < max_factorial<T>::value) && (y < max_factorial<T>::value))
+ {
+ // Rather than subtracting values, lets just call the gamma functions directly:
+ return boost::math::tgamma(x, pol) / boost::math::tgamma(y, pol);
+ }
+ T prefix = 1;
+ if(x < 1)
+ {
+ if(y < 2 * max_factorial<T>::value)
+ {
+ // We need to sidestep on x as well, otherwise we'll underflow
+ // before we get to factor in the prefix term:
+ prefix /= x;
+ x += 1;
+ while(y >= max_factorial<T>::value)
+ {
+ y -= 1;
+ prefix /= y;
+ }
+ return prefix * boost::math::tgamma(x, pol) / boost::math::tgamma(y, pol);
+ }
+ //
+ // result is almost certainly going to underflow to zero, try logs just in case:
+ //
+ return exp(boost::math::lgamma(x, pol) - boost::math::lgamma(y, pol));
+ }
+ if(y < 1)
+ {
+ if(x < 2 * max_factorial<T>::value)
+ {
+ // We need to sidestep on y as well, otherwise we'll overflow
+ // before we get to factor in the prefix term:
+ prefix *= y;
+ y += 1;
+ while(x >= max_factorial<T>::value)
+ {
+ x -= 1;
+ prefix *= x;
+ }
+ return prefix * boost::math::tgamma(x, pol) / boost::math::tgamma(y, pol);
+ }
+ //
+ // Result will almost certainly overflow, try logs just in case:
+ //
+ return exp(boost::math::lgamma(x, pol) - boost::math::lgamma(y, pol));
+ }
+ //
+ // Regular case, x and y both large and similar in magnitude:
+ //
+ return boost::math::tgamma_delta_ratio(x, y - x, pol);
+}
+
template <class T, class Policy>
T gamma_p_derivative_imp(T a, T x, const Policy& pol)
{
return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::gamma_imp(static_cast<value_type>(z), forwarding_policy(), evaluation_type()), "boost::math::tgamma<%1%>(%1%)");
}
+template <class T, class Policy>
+struct igamma_initializer
+{
+ struct init
+ {
+ init()
+ {
+ typedef typename policies::precision<T, Policy>::type precision_type;
+
+ typedef typename mpl::if_<
+ mpl::or_<mpl::equal_to<precision_type, mpl::int_<0> >,
+ mpl::greater<precision_type, mpl::int_<113> > >,
+ mpl::int_<0>,
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<53> >,
+ mpl::int_<53>,
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<64> >,
+ mpl::int_<64>,
+ mpl::int_<113>
+ >::type
+ >::type
+ >::type tag_type;
+
+ do_init(tag_type());
+ }
+ template <int N>
+ static void do_init(const mpl::int_<N>&)
+ {
+ boost::math::gamma_p(static_cast<T>(400), static_cast<T>(400), Policy());
+ }
+ static void do_init(const mpl::int_<53>&){}
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy>
+const typename igamma_initializer<T, Policy>::init igamma_initializer<T, Policy>::initializer;
+
+template <class T, class Policy>
+struct lgamma_initializer
+{
+ struct init
+ {
+ init()
+ {
+ typedef typename policies::precision<T, Policy>::type precision_type;
+ typedef typename mpl::if_<
+ mpl::and_<
+ mpl::less_equal<precision_type, mpl::int_<64> >,
+ mpl::greater<precision_type, mpl::int_<0> >
+ >,
+ mpl::int_<64>,
+ typename mpl::if_<
+ mpl::and_<
+ mpl::less_equal<precision_type, mpl::int_<113> >,
+ mpl::greater<precision_type, mpl::int_<0> >
+ >,
+ mpl::int_<113>, mpl::int_<0> >::type
+ >::type tag_type;
+ do_init(tag_type());
+ }
+ static void do_init(const mpl::int_<64>&)
+ {
+ boost::math::lgamma(static_cast<T>(2.5), Policy());
+ boost::math::lgamma(static_cast<T>(1.25), Policy());
+ boost::math::lgamma(static_cast<T>(1.75), Policy());
+ }
+ static void do_init(const mpl::int_<113>&)
+ {
+ boost::math::lgamma(static_cast<T>(2.5), Policy());
+ boost::math::lgamma(static_cast<T>(1.25), Policy());
+ boost::math::lgamma(static_cast<T>(1.5), Policy());
+ boost::math::lgamma(static_cast<T>(1.75), Policy());
+ }
+ static void do_init(const mpl::int_<0>&)
+ {
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy>
+const typename lgamma_initializer<T, Policy>::init lgamma_initializer<T, Policy>::initializer;
+
template <class T1, class T2, class Policy>
inline typename tools::promote_args<T1, T2>::type
tgamma(T1 a, T2 z, const Policy&, const mpl::false_)
BOOST_FPU_EXCEPTION_GUARD
typedef typename tools::promote_args<T1, T2>::type result_type;
typedef typename policies::evaluation<result_type, Policy>::type value_type;
- typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
+ // typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
typedef typename policies::normalise<
Policy,
policies::promote_float<false>,
policies::promote_double<false>,
policies::discrete_quantile<>,
policies::assert_undefined<> >::type forwarding_policy;
+
+ igamma_initializer<value_type, forwarding_policy>::force_instantiate();
+
return policies::checked_narrowing_cast<result_type, forwarding_policy>(
detail::gamma_incomplete_imp(static_cast<value_type>(a),
static_cast<value_type>(z), false, true,
return tgamma(a, z, policies::policy<>(), tag);
}
+
} // namespace detail
template <class T>
policies::promote_double<false>,
policies::discrete_quantile<>,
policies::assert_undefined<> >::type forwarding_policy;
+
+ detail::lgamma_initializer<value_type, forwarding_policy>::force_instantiate();
+
return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::lgamma_imp(static_cast<value_type>(z), forwarding_policy(), evaluation_type(), sign), "boost::math::lgamma<%1%>(%1%)");
}
BOOST_FPU_EXCEPTION_GUARD
typedef typename tools::promote_args<T1, T2>::type result_type;
typedef typename policies::evaluation<result_type, Policy>::type value_type;
- typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
+ // typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
typedef typename policies::normalise<
Policy,
policies::promote_float<false>,
policies::discrete_quantile<>,
policies::assert_undefined<> >::type forwarding_policy;
+ detail::igamma_initializer<value_type, forwarding_policy>::force_instantiate();
+
return policies::checked_narrowing_cast<result_type, forwarding_policy>(
detail::gamma_incomplete_imp(static_cast<value_type>(a),
static_cast<value_type>(z), false, false,
BOOST_FPU_EXCEPTION_GUARD
typedef typename tools::promote_args<T1, T2>::type result_type;
typedef typename policies::evaluation<result_type, Policy>::type value_type;
- typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
+ // typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
typedef typename policies::normalise<
Policy,
policies::promote_float<false>,
policies::discrete_quantile<>,
policies::assert_undefined<> >::type forwarding_policy;
+ detail::igamma_initializer<value_type, forwarding_policy>::force_instantiate();
+
return policies::checked_narrowing_cast<result_type, forwarding_policy>(
detail::gamma_incomplete_imp(static_cast<value_type>(a),
static_cast<value_type>(z), true, true,
BOOST_FPU_EXCEPTION_GUARD
typedef typename tools::promote_args<T1, T2>::type result_type;
typedef typename policies::evaluation<result_type, Policy>::type value_type;
- typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
+ // typedef typename lanczos::lanczos<value_type, Policy>::type evaluation_type;
typedef typename policies::normalise<
Policy,
policies::promote_float<false>,
policies::discrete_quantile<>,
policies::assert_undefined<> >::type forwarding_policy;
+ detail::igamma_initializer<value_type, forwarding_policy>::force_instantiate();
+
return policies::checked_narrowing_cast<result_type, forwarding_policy>(
detail::gamma_incomplete_imp(static_cast<value_type>(a),
static_cast<value_type>(z), true, false,
policies::discrete_quantile<>,
policies::assert_undefined<> >::type forwarding_policy;
- return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::tgamma_delta_ratio_imp(static_cast<value_type>(a), static_cast<value_type>(static_cast<value_type>(b) - static_cast<value_type>(a)), forwarding_policy()), "boost::math::tgamma_delta_ratio<%1%>(%1%, %1%)");
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::tgamma_ratio_imp(static_cast<value_type>(a), static_cast<value_type>(b), forwarding_policy()), "boost::math::tgamma_delta_ratio<%1%>(%1%, %1%)");
}
template <class T1, class T2>
inline typename tools::promote_args<T1, T2>::type
--- /dev/null
+// Copyright John Maddock 2012.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_HANKEL_HPP
+#define BOOST_MATH_HANKEL_HPP
+
+#include <boost/math/special_functions/bessel.hpp>
+
+namespace boost{ namespace math{
+
+namespace detail{
+
+template <class T, class Policy>
+std::complex<T> hankel_imp(T v, T x, const bessel_no_int_tag&, const Policy& pol, int sign)
+{
+ BOOST_MATH_STD_USING
+ static const char* function = "boost::math::cyl_hankel_1<%1%>(%1%,%1%)";
+
+ if(x < 0)
+ {
+ bool isint_v = floor(v) == v;
+ T j, y;
+ bessel_jy(v, -x, &j, &y, need_j | need_y, pol);
+ std::complex<T> cx(x), cv(v);
+ std::complex<T> j_result, y_result;
+ if(isint_v)
+ {
+ int s = (iround(v) & 1) ? -1 : 1;
+ j_result = j * s;
+ y_result = T(s) * (y - (2 / constants::pi<T>()) * (log(-x) - log(cx)) * j);
+ }
+ else
+ {
+ j_result = pow(cx, v) * pow(-cx, -v) * j;
+ T p1 = pow(-x, v);
+ std::complex<T> p2 = pow(cx, v);
+ y_result = p1 * y / p2
+ + (p2 / p1 - p1 / p2) * j / tan(constants::pi<T>() * v);
+ }
+ // multiply y_result by i:
+ y_result = std::complex<T>(-sign * y_result.imag(), sign * y_result.real());
+ return j_result + y_result;
+ }
+
+ if(x == 0)
+ {
+ if(v == 0)
+ {
+ // J is 1, Y is -INF
+ return std::complex<T>(1, sign * -policies::raise_overflow_error<T>(function, 0, pol));
+ }
+ else
+ {
+ // At least one of J and Y is complex infinity:
+ return std::complex<T>(policies::raise_overflow_error<T>(function, 0, pol), sign * policies::raise_overflow_error<T>(function, 0, pol));
+ }
+ }
+
+ T j, y;
+ bessel_jy(v, x, &j, &y, need_j | need_y, pol);
+ return std::complex<T>(j, sign * y);
+}
+
+template <class T, class Policy>
+std::complex<T> hankel_imp(int v, T x, const bessel_int_tag&, const Policy& pol, int sign);
+
+template <class T, class Policy>
+inline std::complex<T> hankel_imp(T v, T x, const bessel_maybe_int_tag&, const Policy& pol, int sign)
+{
+ BOOST_MATH_STD_USING // ADL of std names.
+ int ival = detail::iconv(v, pol);
+ if(0 == v - ival)
+ {
+ return hankel_imp(ival, x, bessel_int_tag(), pol, sign);
+ }
+ return hankel_imp(v, x, bessel_no_int_tag(), pol, sign);
+}
+
+template <class T, class Policy>
+inline std::complex<T> hankel_imp(int v, T x, const bessel_int_tag&, const Policy& pol, int sign)
+{
+ BOOST_MATH_STD_USING
+ if((std::abs(v) < 200) && (x > 0))
+ return std::complex<T>(bessel_jn(v, x, pol), sign * bessel_yn(v, x, pol));
+ return hankel_imp(static_cast<T>(v), x, bessel_no_int_tag(), pol, sign);
+}
+
+template <class T, class Policy>
+inline std::complex<T> sph_hankel_imp(T v, T x, const Policy& pol, int sign)
+{
+ BOOST_MATH_STD_USING
+ return constants::root_half_pi<T>() * hankel_imp(v + 0.5f, x, bessel_no_int_tag(), pol, sign) / sqrt(std::complex<T>(x));
+}
+
+} // namespace detail
+
+template <class T1, class T2, class Policy>
+inline std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_1(T1 v, T2 x, const Policy& pol)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename detail::bessel_traits<T1, T2, Policy>::optimisation_tag tag_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<std::complex<result_type>, Policy>(detail::hankel_imp<value_type>(v, static_cast<value_type>(x), tag_type(), pol, 1), "boost::math::cyl_hankel_1<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_1(T1 v, T2 x)
+{
+ return cyl_hankel_1(v, x, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_2(T1 v, T2 x, const Policy& pol)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename detail::bessel_traits<T1, T2, Policy>::optimisation_tag tag_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<std::complex<result_type>, Policy>(detail::hankel_imp<value_type>(v, static_cast<value_type>(x), tag_type(), pol, -1), "boost::math::cyl_hankel_1<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_2(T1 v, T2 x)
+{
+ return cyl_hankel_2(v, x, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> sph_hankel_1(T1 v, T2 x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<std::complex<result_type>, Policy>(detail::sph_hankel_imp<value_type>(static_cast<value_type>(v), static_cast<value_type>(x), forwarding_policy(), 1), "boost::math::sph_hankel_1<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_1(T1 v, T2 x)
+{
+ return sph_hankel_1(v, x, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> sph_hankel_2(T1 v, T2 x, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename detail::bessel_traits<T1, T2, Policy>::result_type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ return policies::checked_narrowing_cast<std::complex<result_type>, Policy>(detail::sph_hankel_imp<value_type>(static_cast<value_type>(v), static_cast<value_type>(x), forwarding_policy(), -1), "boost::math::sph_hankel_1<%1%>(%1%,%1%)");
+}
+
+template <class T1, class T2>
+inline std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_2(T1 v, T2 x)
+{
+ return sph_hankel_2(v, x, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_HANKEL_HPP
+
--- /dev/null
+
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SPECIAL_HERMITE_HPP
+#define BOOST_MATH_SPECIAL_HERMITE_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/tools/config.hpp>
+#include <boost/math/policies/error_handling.hpp>
+
+namespace boost{
+namespace math{
+
+// Recurrance relation for Hermite polynomials:
+template <class T1, class T2, class T3>
+inline typename tools::promote_args<T1, T2, T3>::type
+ hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1)
+{
+ return (2 * x * Hn - 2 * n * Hnm1);
+}
+
+namespace detail{
+
+// Implement Hermite polynomials via recurrance:
+template <class T>
+T hermite_imp(unsigned n, T x)
+{
+ T p0 = 1;
+ T p1 = 2 * x;
+
+ if(n == 0)
+ return p0;
+
+ unsigned c = 1;
+
+ while(c < n)
+ {
+ std::swap(p0, p1);
+ p1 = hermite_next(c, x, p0, p1);
+ ++c;
+ }
+ return p1;
+}
+
+} // namespace detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type
+ hermite(unsigned n, T x, const Policy&)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::hermite_imp(n, static_cast<value_type>(x)), "boost::math::hermite<%1%>(unsigned, %1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type
+ hermite(unsigned n, T x)
+{
+ return boost::math::hermite(n, x, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+
+#endif // BOOST_MATH_SPECIAL_HERMITE_HPP
+
+
+
--- /dev/null
+// (C) Copyright John Maddock 2005-2006.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_HYPOT_INCLUDED
+#define BOOST_MATH_HYPOT_INCLUDED
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/config.hpp>
+#include <boost/math/tools/precision.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/config/no_tr1/cmath.hpp>
+#include <algorithm> // for swap
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{ using ::sqrt; using ::fabs; }
+#endif
+
+namespace boost{ namespace math{ namespace detail{
+
+template <class T, class Policy>
+T hypot_imp(T x, T y, const Policy& pol)
+{
+ //
+ // Normalize x and y, so that both are positive and x >= y:
+ //
+ using std::fabs; using std::sqrt; // ADL of std names
+
+ x = fabs(x);
+ y = fabs(y);
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4127)
+#endif
+ // special case, see C99 Annex F:
+ if(std::numeric_limits<T>::has_infinity
+ && ((x == std::numeric_limits<T>::infinity())
+ || (y == std::numeric_limits<T>::infinity())))
+ return policies::raise_overflow_error<T>("boost::math::hypot<%1%>(%1%,%1%)", 0, pol);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+ if(y > x)
+ (std::swap)(x, y);
+
+ if(x * tools::epsilon<T>() >= y)
+ return x;
+
+ T rat = y / x;
+ return x * sqrt(1 + rat*rat);
+} // template <class T> T hypot(T x, T y)
+
+}
+
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type
+ hypot(T1 x, T2 y)
+{
+ typedef typename tools::promote_args<T1, T2>::type result_type;
+ return detail::hypot_imp(
+ static_cast<result_type>(x), static_cast<result_type>(y), policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline typename tools::promote_args<T1, T2>::type
+ hypot(T1 x, T2 y, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2>::type result_type;
+ return detail::hypot_imp(
+ static_cast<result_type>(x), static_cast<result_type>(y), pol);
+}
+
+} // namespace math
+} // namespace boost
+
+#endif // BOOST_MATH_HYPOT_INCLUDED
+
+
+
--- /dev/null
+// Copyright John Maddock 2012.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_JACOBI_ELLIPTIC_HPP
+#define BOOST_MATH_JACOBI_ELLIPTIC_HPP
+
+#include <boost/math/tools/precision.hpp>
+#include <boost/math/tools/promotion.hpp>
+#include <boost/math/policies/error_handling.hpp>
+
+namespace boost{ namespace math{
+
+namespace detail{
+
+template <class T, class Policy>
+T jacobi_recurse(const T& x, const T& k, T anm1, T bnm1, unsigned N, T* pTn, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ ++N;
+ T Tn;
+ T cn = (anm1 - bnm1) / 2;
+ T an = (anm1 + bnm1) / 2;
+ if(cn < policies::get_epsilon<T, Policy>())
+ {
+ Tn = ldexp(T(1), (int)N) * x * an;
+ }
+ else
+ Tn = jacobi_recurse<T>(x, k, an, sqrt(anm1 * bnm1), N, 0, pol);
+ if(pTn)
+ *pTn = Tn;
+ return (Tn + asin((cn / an) * sin(Tn))) / 2;
+}
+
+template <class T, class Policy>
+T jacobi_imp(const T& x, const T& k, T* cn, T* dn, const Policy& pol, const char* function)
+{
+ BOOST_MATH_STD_USING
+ if(k < 0)
+ {
+ *cn = policies::raise_domain_error<T>(function, "Modulus k must be positive but got %1%.", k, pol);
+ *dn = *cn;
+ return *cn;
+ }
+ if(k > 1)
+ {
+ T xp = x * k;
+ T kp = 1 / k;
+ T snp, cnp, dnp;
+ snp = jacobi_imp(xp, kp, &cnp, &dnp, pol, function);
+ *cn = dnp;
+ *dn = cnp;
+ return snp * kp;
+ }
+ //
+ // Special cases first:
+ //
+ if(x == 0)
+ {
+ *cn = *dn = 1;
+ return 0;
+ }
+ if(k == 0)
+ {
+ *cn = cos(x);
+ *dn = 1;
+ return sin(x);
+ }
+ if(k == 1)
+ {
+ *cn = *dn = 1 / cosh(x);
+ return tanh(x);
+ }
+ //
+ // Asymptotic forms from A&S 16.13:
+ //
+ if(k < tools::forth_root_epsilon<T>())
+ {
+ T su = sin(x);
+ T cu = cos(x);
+ T m = k * k;
+ *dn = 1 - m * su * su / 2;
+ *cn = cu + m * (x - su * cu) * su / 4;
+ return su - m * (x - su * cu) * cu / 4;
+ }
+ /* Can't get this to work to adequate precision - disabled for now...
+ //
+ // Asymptotic forms from A&S 16.15:
+ //
+ if(k > 1 - tools::root_epsilon<T>())
+ {
+ T tu = tanh(x);
+ T su = sinh(x);
+ T cu = cosh(x);
+ T sec = 1 / cu;
+ T kp = 1 - k;
+ T m1 = 2 * kp - kp * kp;
+ *dn = sec + m1 * (su * cu + x) * tu * sec / 4;
+ *cn = sec - m1 * (su * cu - x) * tu * sec / 4;
+ T sn = tu;
+ T sn2 = m1 * (x * sec * sec - tu) / 4;
+ T sn3 = (72 * x * cu + 4 * (8 * x * x - 5) * su - 19 * sinh(3 * x) + sinh(5 * x)) * sec * sec * sec * m1 * m1 / 512;
+ return sn + sn2 - sn3;
+ }*/
+ T T1;
+ T kc = 1 - k;
+ T k_prime = k < 0.5 ? T(sqrt(1 - k * k)) : T(sqrt(2 * kc - kc * kc));
+ T T0 = jacobi_recurse(x, k, T(1), k_prime, 0, &T1, pol);
+ *cn = cos(T0);
+ *dn = cos(T0) / cos(T1 - T0);
+ return sin(T0);
+}
+
+} // namespace detail
+
+template <class T, class U, class V, class Policy>
+inline typename tools::promote_args<T, U, V>::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn, const Policy&)
+{
+ BOOST_FPU_EXCEPTION_GUARD
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ static const char* function = "boost::math::jacobi_elliptic<%1%>(%1%)";
+
+ value_type sn, cn, dn;
+ sn = detail::jacobi_imp<value_type>(static_cast<value_type>(theta), static_cast<value_type>(k), &cn, &dn, forwarding_policy(), function);
+ if(pcn)
+ *pcn = policies::checked_narrowing_cast<result_type, Policy>(cn, function);
+ if(pdn)
+ *pdn = policies::checked_narrowing_cast<result_type, Policy>(dn, function);
+ return policies::checked_narrowing_cast<result_type, Policy>(sn, function);;
+}
+
+template <class T, class U, class V>
+inline typename tools::promote_args<T, U, V>::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn)
+{
+ return jacobi_elliptic(k, theta, pcn, pdn, policies::policy<>());
+}
+
+template <class U, class T, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_sn(U k, T theta, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ return jacobi_elliptic(static_cast<result_type>(k), static_cast<result_type>(theta), static_cast<result_type*>(0), static_cast<result_type*>(0), pol);
+}
+
+template <class U, class T>
+inline typename tools::promote_args<T, U>::type jacobi_sn(U k, T theta)
+{
+ return jacobi_sn(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_cn(T k, U theta, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ result_type cn;
+ jacobi_elliptic(static_cast<result_type>(k), static_cast<result_type>(theta), &cn, static_cast<result_type*>(0), pol);
+ return cn;
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_cn(T k, U theta)
+{
+ return jacobi_cn(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_dn(T k, U theta, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ result_type dn;
+ jacobi_elliptic(static_cast<result_type>(k), static_cast<result_type>(theta), static_cast<result_type*>(0), &dn, pol);
+ return dn;
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_dn(T k, U theta)
+{
+ return jacobi_dn(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_cd(T k, U theta, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ result_type cn, dn;
+ jacobi_elliptic(static_cast<result_type>(k), static_cast<result_type>(theta), &cn, &dn, pol);
+ return cn / dn;
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_cd(T k, U theta)
+{
+ return jacobi_cd(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_dc(T k, U theta, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ result_type cn, dn;
+ jacobi_elliptic(static_cast<result_type>(k), static_cast<result_type>(theta), &cn, &dn, pol);
+ return dn / cn;
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_dc(T k, U theta)
+{
+ return jacobi_dc(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_ns(T k, U theta, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ return 1 / jacobi_elliptic(static_cast<result_type>(k), static_cast<result_type>(theta), static_cast<result_type*>(0), static_cast<result_type*>(0), pol);
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_ns(T k, U theta)
+{
+ return jacobi_ns(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_sd(T k, U theta, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ result_type sn, dn;
+ sn = jacobi_elliptic(static_cast<result_type>(k), static_cast<result_type>(theta), static_cast<result_type*>(0), &dn, pol);
+ return sn / dn;
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_sd(T k, U theta)
+{
+ return jacobi_sd(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_ds(T k, U theta, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ result_type sn, dn;
+ sn = jacobi_elliptic(static_cast<result_type>(k), static_cast<result_type>(theta), static_cast<result_type*>(0), &dn, pol);
+ return dn / sn;
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_ds(T k, U theta)
+{
+ return jacobi_ds(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_nc(T k, U theta, const Policy& pol)
+{
+ return 1 / jacobi_cn(k, theta, pol);
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_nc(T k, U theta)
+{
+ return jacobi_nc(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_nd(T k, U theta, const Policy& pol)
+{
+ return 1 / jacobi_dn(k, theta, pol);
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_nd(T k, U theta)
+{
+ return jacobi_nd(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_sc(T k, U theta, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ result_type sn, cn;
+ sn = jacobi_elliptic(static_cast<result_type>(k), static_cast<result_type>(theta), &cn, static_cast<result_type*>(0), pol);
+ return sn / cn;
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_sc(T k, U theta)
+{
+ return jacobi_sc(k, theta, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type jacobi_cs(T k, U theta, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ result_type sn, cn;
+ sn = jacobi_elliptic(static_cast<result_type>(k), static_cast<result_type>(theta), &cn, static_cast<result_type*>(0), pol);
+ return cn / sn;
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type jacobi_cs(T k, U theta)
+{
+ return jacobi_cs(k, theta, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_JACOBI_ELLIPTIC_HPP
--- /dev/null
+
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SPECIAL_LAGUERRE_HPP
+#define BOOST_MATH_SPECIAL_LAGUERRE_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/tools/config.hpp>
+#include <boost/math/policies/error_handling.hpp>
+
+namespace boost{
+namespace math{
+
+// Recurrance relation for Laguerre polynomials:
+template <class T1, class T2, class T3>
+inline typename tools::promote_args<T1, T2, T3>::type
+ laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1)
+{
+ typedef typename tools::promote_args<T1, T2, T3>::type result_type;
+ return ((2 * n + 1 - result_type(x)) * result_type(Ln) - n * result_type(Lnm1)) / (n + 1);
+}
+
+namespace detail{
+
+// Implement Laguerre polynomials via recurrance:
+template <class T>
+T laguerre_imp(unsigned n, T x)
+{
+ T p0 = 1;
+ T p1 = 1 - x;
+
+ if(n == 0)
+ return p0;
+
+ unsigned c = 1;
+
+ while(c < n)
+ {
+ std::swap(p0, p1);
+ p1 = laguerre_next(c, x, p0, p1);
+ ++c;
+ }
+ return p1;
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type
+laguerre(unsigned n, T x, const Policy&, const mpl::true_&)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::laguerre_imp(n, static_cast<value_type>(x)), "boost::math::laguerre<%1%>(unsigned, %1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type
+ laguerre(unsigned n, unsigned m, T x, const mpl::false_&)
+{
+ return boost::math::laguerre(n, m, x, policies::policy<>());
+}
+
+} // namespace detail
+
+template <class T>
+inline typename tools::promote_args<T>::type
+ laguerre(unsigned n, T x)
+{
+ return laguerre(n, x, policies::policy<>());
+}
+
+// Recurrence for associated polynomials:
+template <class T1, class T2, class T3>
+inline typename tools::promote_args<T1, T2, T3>::type
+ laguerre_next(unsigned n, unsigned l, T1 x, T2 Pl, T3 Plm1)
+{
+ typedef typename tools::promote_args<T1, T2, T3>::type result_type;
+ return ((2 * n + l + 1 - result_type(x)) * result_type(Pl) - (n + l) * result_type(Plm1)) / (n+1);
+}
+
+namespace detail{
+// Laguerre Associated Polynomial:
+template <class T, class Policy>
+T laguerre_imp(unsigned n, unsigned m, T x, const Policy& pol)
+{
+ // Special cases:
+ if(m == 0)
+ return boost::math::laguerre(n, x, pol);
+
+ T p0 = 1;
+
+ if(n == 0)
+ return p0;
+
+ T p1 = m + 1 - x;
+
+ unsigned c = 1;
+
+ while(c < n)
+ {
+ std::swap(p0, p1);
+ p1 = laguerre_next(c, m, x, p0, p1);
+ ++c;
+ }
+ return p1;
+}
+
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type
+ laguerre(unsigned n, unsigned m, T x, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::laguerre_imp(n, m, static_cast<value_type>(x), pol), "boost::math::laguerre<%1%>(unsigned, unsigned, %1%)");
+}
+
+template <class T1, class T2>
+inline typename laguerre_result<T1, T2>::type
+ laguerre(unsigned n, T1 m, T2 x)
+{
+ typedef typename policies::is_policy<T2>::type tag_type;
+ return detail::laguerre(n, m, x, tag_type());
+}
+
+} // namespace math
+} // namespace boost
+
+#endif // BOOST_MATH_SPECIAL_LAGUERRE_HPP
+
+
+
#endif
#include <boost/config.hpp>
+#include <boost/math/tools/big_constant.hpp>
#include <boost/mpl/if.hpp>
#include <boost/limits.hpp>
#include <boost/cstdint.hpp>
// http://my.fit.edu/~gabdo/gamma.txt and elaborated by Toth at
// http://www.rskey.org/gamma.htm using NTL::RR at 1000 bit precision.
//
+// Begin with a small helper to force initialization of constants prior
+// to main. This makes the constant initialization thread safe, even
+// when called with a user-defined number type.
+//
+template <class Lanczos, class T>
+struct lanczos_initializer
+{
+ struct init
+ {
+ init()
+ {
+ T t(1);
+ Lanczos::lanczos_sum(t);
+ Lanczos::lanczos_sum_expG_scaled(t);
+ Lanczos::lanczos_sum_near_1(t);
+ Lanczos::lanczos_sum_near_2(t);
+ Lanczos::g();
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+template <class Lanczos, class T>
+typename lanczos_initializer<Lanczos, T>::init const lanczos_initializer<Lanczos, T>::initializer;
+//
// Lanczos Coefficients for N=6 G=5.581
// Max experimental error (with arbitary precision arithmetic) 9.516e-12
// Generated with compiler: Microsoft Visual C++ version 8.0 on Win32 at Mar 23 2006
template <class T>
static T lanczos_sum(const T& z)
{
+ lanczos_initializer<lanczos6, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[6] = {
- static_cast<T>(8706.349592549009182288174442774377925882L),
- static_cast<T>(8523.650341121874633477483696775067709735L),
- static_cast<T>(3338.029219476423550899999750161289306564L),
- static_cast<T>(653.6424994294008795995653541449610986791L),
- static_cast<T>(63.99951844938187085666201263218840287667L),
- static_cast<T>(2.506628274631006311133031631822390264407L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 8706.349592549009182288174442774377925882)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 8523.650341121874633477483696775067709735)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 3338.029219476423550899999750161289306564)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 653.6424994294008795995653541449610986791)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 63.99951844938187085666201263218840287667)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 2.506628274631006311133031631822390264407))
};
static const BOOST_MATH_INT_TABLE_TYPE(T, boost::uint16_t) denom[6] = {
static_cast<boost::uint16_t>(0u),
template <class T>
static T lanczos_sum_expG_scaled(const T& z)
{
+ lanczos_initializer<lanczos6, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[6] = {
- static_cast<T>(32.81244541029783471623665933780748627823L),
- static_cast<T>(32.12388941444332003446077108933558534361L),
- static_cast<T>(12.58034729455216106950851080138931470954L),
- static_cast<T>(2.463444478353241423633780693218408889251L),
- static_cast<T>(0.2412010548258800231126240760264822486599L),
- static_cast<T>(0.009446967704539249494420221613134244048319L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 32.81244541029783471623665933780748627823)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 32.12388941444332003446077108933558534361)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 12.58034729455216106950851080138931470954)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 2.463444478353241423633780693218408889251)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 0.2412010548258800231126240760264822486599)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 0.009446967704539249494420221613134244048319))
};
static const BOOST_MATH_INT_TABLE_TYPE(T, boost::uint16_t) denom[6] = {
static_cast<boost::uint16_t>(0u),
template<class T>
static T lanczos_sum_near_1(const T& dz)
{
+ lanczos_initializer<lanczos6, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[5] = {
- static_cast<T>(2.044879010930422922760429926121241330235L),
- static_cast<T>(-2.751366405578505366591317846728753993668L),
- static_cast<T>(1.02282965224225004296750609604264824677L),
- static_cast<T>(-0.09786124911582813985028889636665335893627L),
- static_cast<T>(0.0009829742267506615183144364420540766510112L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 2.044879010930422922760429926121241330235)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, -2.751366405578505366591317846728753993668)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 1.02282965224225004296750609604264824677)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, -0.09786124911582813985028889636665335893627)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 0.0009829742267506615183144364420540766510112)),
};
T result = 0;
for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
template<class T>
static T lanczos_sum_near_2(const T& dz)
{
+ lanczos_initializer<lanczos6, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[5] = {
- static_cast<T>(5.748142489536043490764289256167080091892L),
- static_cast<T>(-7.734074268282457156081021756682138251825L),
- static_cast<T>(2.875167944990511006997713242805893543947L),
- static_cast<T>(-0.2750873773533504542306766137703788781776L),
- static_cast<T>(0.002763134585812698552178368447708846850353L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 5.748142489536043490764289256167080091892)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, -7.734074268282457156081021756682138251825)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 2.875167944990511006997713242805893543947)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, -0.2750873773533504542306766137703788781776)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 35, 0.002763134585812698552178368447708846850353)),
};
T result = 0;
T z = dz + 2;
template <class T>
static T lanczos_sum(const T& z)
{
+ lanczos_initializer<lanczos11, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[11] = {
- static_cast<T>(38474670393.31776828316099004518914832218L),
- static_cast<T>(36857665043.51950660081971227404959150474L),
- static_cast<T>(15889202453.72942008945006665994637853242L),
- static_cast<T>(4059208354.298834770194507810788393801607L),
- static_cast<T>(680547661.1834733286087695557084801366446L),
- static_cast<T>(78239755.00312005289816041245285376206263L),
- static_cast<T>(6246580.776401795264013335510453568106366L),
- static_cast<T>(341986.3488721347032223777872763188768288L),
- static_cast<T>(12287.19451182455120096222044424100527629L),
- static_cast<T>(261.6140441641668190791708576058805625502L),
- static_cast<T>(2.506628274631000502415573855452633787834L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 38474670393.31776828316099004518914832218)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 36857665043.51950660081971227404959150474)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 15889202453.72942008945006665994637853242)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 4059208354.298834770194507810788393801607)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 680547661.1834733286087695557084801366446)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 78239755.00312005289816041245285376206263)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 6246580.776401795264013335510453568106366)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 341986.3488721347032223777872763188768288)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 12287.19451182455120096222044424100527629)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 261.6140441641668190791708576058805625502)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 2.506628274631000502415573855452633787834))
};
static const BOOST_MATH_INT_TABLE_TYPE(T, boost::uint32_t) denom[11] = {
static_cast<boost::uint32_t>(0u),
template <class T>
static T lanczos_sum_expG_scaled(const T& z)
{
+ lanczos_initializer<lanczos11, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[11] = {
- static_cast<T>(709811.662581657956893540610814842699825L),
- static_cast<T>(679979.847415722640161734319823103390728L),
- static_cast<T>(293136.785721159725251629480984140341656L),
- static_cast<T>(74887.5403291467179935942448101441897121L),
- static_cast<T>(12555.29058241386295096255111537516768137L),
- static_cast<T>(1443.42992444170669746078056942194198252L),
- static_cast<T>(115.2419459613734722083208906727972935065L),
- static_cast<T>(6.30923920573262762719523981992008976989L),
- static_cast<T>(0.2266840463022436475495508977579735223818L),
- static_cast<T>(0.004826466289237661857584712046231435101741L),
- static_cast<T>(0.4624429436045378766270459638520555557321e-4L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 709811.662581657956893540610814842699825)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 679979.847415722640161734319823103390728)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 293136.785721159725251629480984140341656)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 74887.5403291467179935942448101441897121)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 12555.29058241386295096255111537516768137)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 1443.42992444170669746078056942194198252)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 115.2419459613734722083208906727972935065)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 6.30923920573262762719523981992008976989)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 0.2266840463022436475495508977579735223818)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 0.004826466289237661857584712046231435101741)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 0.4624429436045378766270459638520555557321e-4))
};
static const BOOST_MATH_INT_TABLE_TYPE(T, boost::uint32_t) denom[11] = {
static_cast<boost::uint32_t>(0u),
template<class T>
static T lanczos_sum_near_1(const T& dz)
{
+ lanczos_initializer<lanczos11, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[10] = {
- static_cast<T>(4.005853070677940377969080796551266387954L),
- static_cast<T>(-13.17044315127646469834125159673527183164L),
- static_cast<T>(17.19146865350790353683895137079288129318L),
- static_cast<T>(-11.36446409067666626185701599196274701126L),
- static_cast<T>(4.024801119349323770107694133829772634737L),
- static_cast<T>(-0.7445703262078094128346501724255463005006L),
- static_cast<T>(0.06513861351917497265045550019547857713172L),
- static_cast<T>(-0.00217899958561830354633560009312512312758L),
- static_cast<T>(0.17655204574495137651670832229571934738e-4L),
- static_cast<T>(-0.1036282091079938047775645941885460820853e-7L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 4.005853070677940377969080796551266387954)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, -13.17044315127646469834125159673527183164)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 17.19146865350790353683895137079288129318)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, -11.36446409067666626185701599196274701126)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 4.024801119349323770107694133829772634737)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, -0.7445703262078094128346501724255463005006)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 0.06513861351917497265045550019547857713172)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, -0.00217899958561830354633560009312512312758)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 0.17655204574495137651670832229571934738e-4)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, -0.1036282091079938047775645941885460820853e-7)),
};
T result = 0;
for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
template<class T>
static T lanczos_sum_near_2(const T& dz)
{
+ lanczos_initializer<lanczos11, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[10] = {
- static_cast<T>(19.05889633808148715159575716844556056056L),
- static_cast<T>(-62.66183664701721716960978577959655644762L),
- static_cast<T>(81.7929198065004751699057192860287512027L),
- static_cast<T>(-54.06941772964234828416072865069196553015L),
- static_cast<T>(19.14904664790693019642068229478769661515L),
- static_cast<T>(-3.542488556926667589704590409095331790317L),
- static_cast<T>(0.3099140334815639910894627700232804503017L),
- static_cast<T>(-0.01036716187296241640634252431913030440825L),
- static_cast<T>(0.8399926504443119927673843789048514017761e-4L),
- static_cast<T>(-0.493038376656195010308610694048822561263e-7L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 19.05889633808148715159575716844556056056)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, -62.66183664701721716960978577959655644762)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 81.7929198065004751699057192860287512027)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, -54.06941772964234828416072865069196553015)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 19.14904664790693019642068229478769661515)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, -3.542488556926667589704590409095331790317)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 0.3099140334815639910894627700232804503017)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, -0.01036716187296241640634252431913030440825)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, 0.8399926504443119927673843789048514017761e-4)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 60, -0.493038376656195010308610694048822561263e-7)),
};
T result = 0;
T z = dz + 2;
template <class T>
static T lanczos_sum(const T& z)
{
+ lanczos_initializer<lanczos13, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[13] = {
- static_cast<T>(44012138428004.60895436261759919070125699L),
- static_cast<T>(41590453358593.20051581730723108131357995L),
- static_cast<T>(18013842787117.99677796276038389462742949L),
- static_cast<T>(4728736263475.388896889723995205703970787L),
- static_cast<T>(837910083628.4046470415724300225777912264L),
- static_cast<T>(105583707273.4299344907359855510105321192L),
- static_cast<T>(9701363618.494999493386608345339104922694L),
- static_cast<T>(654914397.5482052641016767125048538245644L),
- static_cast<T>(32238322.94213356530668889463945849409184L),
- static_cast<T>(1128514.219497091438040721811544858643121L),
- static_cast<T>(26665.79378459858944762533958798805525125L),
- static_cast<T>(381.8801248632926870394389468349331394196L),
- static_cast<T>(2.506628274631000502415763426076722427007L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 44012138428004.60895436261759919070125699)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 41590453358593.20051581730723108131357995)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 18013842787117.99677796276038389462742949)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 4728736263475.388896889723995205703970787)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 837910083628.4046470415724300225777912264)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 105583707273.4299344907359855510105321192)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 9701363618.494999493386608345339104922694)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 654914397.5482052641016767125048538245644)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 32238322.94213356530668889463945849409184)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 1128514.219497091438040721811544858643121)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 26665.79378459858944762533958798805525125)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 381.8801248632926870394389468349331394196)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 2.506628274631000502415763426076722427007))
};
static const BOOST_MATH_INT_TABLE_TYPE(T, boost::uint32_t) denom[13] = {
static_cast<boost::uint32_t>(0u),
template <class T>
static T lanczos_sum_expG_scaled(const T& z)
{
+ lanczos_initializer<lanczos13, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[13] = {
- static_cast<T>(86091529.53418537217994842267760536134841L),
- static_cast<T>(81354505.17858011242874285785316135398567L),
- static_cast<T>(35236626.38815461910817650960734605416521L),
- static_cast<T>(9249814.988024471294683815872977672237195L),
- static_cast<T>(1639024.216687146960253839656643518985826L),
- static_cast<T>(206530.8157641225032631778026076868855623L),
- static_cast<T>(18976.70193530288915698282139308582105936L),
- static_cast<T>(1281.068909912559479885759622791374106059L),
- static_cast<T>(63.06093343420234536146194868906771599354L),
- static_cast<T>(2.207470909792527638222674678171050209691L),
- static_cast<T>(0.05216058694613505427476207805814960742102L),
- static_cast<T>(0.0007469903808915448316510079585999893674101L),
- static_cast<T>(0.4903180573459871862552197089738373164184e-5L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 86091529.53418537217994842267760536134841)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 81354505.17858011242874285785316135398567)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 35236626.38815461910817650960734605416521)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 9249814.988024471294683815872977672237195)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 1639024.216687146960253839656643518985826)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 206530.8157641225032631778026076868855623)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 18976.70193530288915698282139308582105936)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 1281.068909912559479885759622791374106059)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 63.06093343420234536146194868906771599354)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 2.207470909792527638222674678171050209691)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 0.05216058694613505427476207805814960742102)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 0.0007469903808915448316510079585999893674101)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 0.4903180573459871862552197089738373164184e-5))
};
static const BOOST_MATH_INT_TABLE_TYPE(T, boost::uint32_t) denom[13] = {
static_cast<boost::uint32_t>(0u),
template<class T>
static T lanczos_sum_near_1(const T& dz)
{
+ lanczos_initializer<lanczos13, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[12] = {
- static_cast<T>(4.832115561461656947793029596285626840312L),
- static_cast<T>(-19.86441536140337740383120735104359034688L),
- static_cast<T>(33.9927422807443239927197864963170585331L),
- static_cast<T>(-31.41520692249765980987427413991250886138L),
- static_cast<T>(17.0270866009599345679868972409543597821L),
- static_cast<T>(-5.5077216950865501362506920516723682167L),
- static_cast<T>(1.037811741948214855286817963800439373362L),
- static_cast<T>(-0.106640468537356182313660880481398642811L),
- static_cast<T>(0.005276450526660653288757565778182586742831L),
- static_cast<T>(-0.0001000935625597121545867453746252064770029L),
- static_cast<T>(0.462590910138598083940803704521211569234e-6L),
- static_cast<T>(-0.1735307814426389420248044907765671743012e-9L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 4.832115561461656947793029596285626840312)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -19.86441536140337740383120735104359034688)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 33.9927422807443239927197864963170585331)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -31.41520692249765980987427413991250886138)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 17.0270866009599345679868972409543597821)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -5.5077216950865501362506920516723682167)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 1.037811741948214855286817963800439373362)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -0.106640468537356182313660880481398642811)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 0.005276450526660653288757565778182586742831)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -0.0001000935625597121545867453746252064770029)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 0.462590910138598083940803704521211569234e-6)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -0.1735307814426389420248044907765671743012e-9)),
};
T result = 0;
for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
template<class T>
static T lanczos_sum_near_2(const T& dz)
{
+ lanczos_initializer<lanczos13, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[12] = {
- static_cast<T>(26.96979819614830698367887026728396466395L),
- static_cast<T>(-110.8705424709385114023884328797900204863L),
- static_cast<T>(189.7258846119231466417015694690434770085L),
- static_cast<T>(-175.3397202971107486383321670769397356553L),
- static_cast<T>(95.03437648691551457087250340903980824948L),
- static_cast<T>(-30.7406022781665264273675797983497141978L),
- static_cast<T>(5.792405601630517993355102578874590410552L),
- static_cast<T>(-0.5951993240669148697377539518639997795831L),
- static_cast<T>(0.02944979359164017509944724739946255067671L),
- static_cast<T>(-0.0005586586555377030921194246330399163602684L),
- static_cast<T>(0.2581888478270733025288922038673392636029e-5L),
- static_cast<T>(-0.9685385411006641478305219367315965391289e-9L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 26.96979819614830698367887026728396466395)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -110.8705424709385114023884328797900204863)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 189.7258846119231466417015694690434770085)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -175.3397202971107486383321670769397356553)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 95.03437648691551457087250340903980824948)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -30.7406022781665264273675797983497141978)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 5.792405601630517993355102578874590410552)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -0.5951993240669148697377539518639997795831)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 0.02944979359164017509944724739946255067671)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -0.0005586586555377030921194246330399163602684)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, 0.2581888478270733025288922038673392636029e-5)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 72, -0.9685385411006641478305219367315965391289e-9)),
};
T result = 0;
- T z = z = 2;
+ T z = dz + 2;
for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
{
result += (-d[k-1]*dz)/(z + k*z + k*k - 1);
template <class T>
static T lanczos_sum(const T& z)
{
+ lanczos_initializer<lanczos22, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[22] = {
- static_cast<T>(46198410803245094237463011094.12173081986L),
- static_cast<T>(43735859291852324413622037436.321513777L),
- static_cast<T>(19716607234435171720534556386.97481377748L),
- static_cast<T>(5629401471315018442177955161.245623932129L),
- static_cast<T>(1142024910634417138386281569.245580222392L),
- static_cast<T>(175048529315951173131586747.695329230778L),
- static_cast<T>(21044290245653709191654675.41581372963167L),
- static_cast<T>(2033001410561031998451380.335553678782601L),
- static_cast<T>(160394318862140953773928.8736211601848891L),
- static_cast<T>(10444944438396359705707.48957290388740896L),
- static_cast<T>(565075825801617290121.1466393747967538948L),
- static_cast<T>(25475874292116227538.99448534450411942597L),
- static_cast<T>(957135055846602154.6720835535232270205725L),
- static_cast<T>(29874506304047462.23662392445173880821515L),
- static_cast<T>(769651310384737.2749087590725764959689181L),
- static_cast<T>(16193289100889.15989633624378404096011797L),
- static_cast<T>(273781151680.6807433264462376754578933261L),
- static_cast<T>(3630485900.32917021712188739762161583295L),
- static_cast<T>(36374352.05577334277856865691538582936484L),
- static_cast<T>(258945.7742115532455441786924971194951043L),
- static_cast<T>(1167.501919472435718934219997431551246996L),
- static_cast<T>(2.50662827463100050241576528481104525333L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 46198410803245094237463011094.12173081986)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 43735859291852324413622037436.321513777)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 19716607234435171720534556386.97481377748)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 5629401471315018442177955161.245623932129)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1142024910634417138386281569.245580222392)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 175048529315951173131586747.695329230778)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 21044290245653709191654675.41581372963167)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 2033001410561031998451380.335553678782601)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 160394318862140953773928.8736211601848891)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 10444944438396359705707.48957290388740896)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 565075825801617290121.1466393747967538948)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 25475874292116227538.99448534450411942597)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 957135055846602154.6720835535232270205725)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 29874506304047462.23662392445173880821515)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 769651310384737.2749087590725764959689181)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 16193289100889.15989633624378404096011797)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 273781151680.6807433264462376754578933261)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 3630485900.32917021712188739762161583295)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 36374352.05577334277856865691538582936484)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 258945.7742115532455441786924971194951043)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1167.501919472435718934219997431551246996)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 2.50662827463100050241576528481104525333))
};
static const BOOST_MATH_INT_TABLE_TYPE(T, boost::uint64_t) denom[22] = {
BOOST_MATH_INT_VALUE_SUFFIX(0, uLL),
template <class T>
static T lanczos_sum_expG_scaled(const T& z)
{
+ lanczos_initializer<lanczos22, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[22] = {
- static_cast<T>(6939996264376682180.277485395074954356211L),
- static_cast<T>(6570067992110214451.87201438870245659384L),
- static_cast<T>(2961859037444440551.986724631496417064121L),
- static_cast<T>(845657339772791245.3541226499766163431651L),
- static_cast<T>(171556737035449095.2475716923888737881837L),
- static_cast<T>(26296059072490867.7822441885603400926007L),
- static_cast<T>(3161305619652108.433798300149816829198706L),
- static_cast<T>(305400596026022.4774396904484542582526472L),
- static_cast<T>(24094681058862.55120507202622377623528108L),
- static_cast<T>(1569055604375.919477574824168939428328839L),
- static_cast<T>(84886558909.02047889339710230696942513159L),
- static_cast<T>(3827024985.166751989686050643579753162298L),
- static_cast<T>(143782298.9273215199098728674282885500522L),
- static_cast<T>(4487794.24541641841336786238909171265944L),
- static_cast<T>(115618.2025760830513505888216285273541959L),
- static_cast<T>(2432.580773108508276957461757328744780439L),
- static_cast<T>(41.12782532742893597168530008461874360191L),
- static_cast<T>(0.5453771709477689805460179187388702295792L),
- static_cast<T>(0.005464211062612080347167337964166505282809L),
- static_cast<T>(0.388992321263586767037090706042788910953e-4L),
- static_cast<T>(0.1753839324538447655939518484052327068859e-6L),
- static_cast<T>(0.3765495513732730583386223384116545391759e-9L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 6939996264376682180.277485395074954356211)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 6570067992110214451.87201438870245659384)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 2961859037444440551.986724631496417064121)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 845657339772791245.3541226499766163431651)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 171556737035449095.2475716923888737881837)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 26296059072490867.7822441885603400926007)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 3161305619652108.433798300149816829198706)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 305400596026022.4774396904484542582526472)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 24094681058862.55120507202622377623528108)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1569055604375.919477574824168939428328839)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 84886558909.02047889339710230696942513159)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 3827024985.166751989686050643579753162298)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 143782298.9273215199098728674282885500522)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 4487794.24541641841336786238909171265944)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 115618.2025760830513505888216285273541959)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 2432.580773108508276957461757328744780439)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 41.12782532742893597168530008461874360191)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.5453771709477689805460179187388702295792)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.005464211062612080347167337964166505282809)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.388992321263586767037090706042788910953e-4)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.1753839324538447655939518484052327068859e-6)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.3765495513732730583386223384116545391759e-9))
};
static const BOOST_MATH_INT_TABLE_TYPE(T, boost::uint64_t) denom[22] = {
BOOST_MATH_INT_VALUE_SUFFIX(0, uLL),
template<class T>
static T lanczos_sum_near_1(const T& dz)
{
+ lanczos_initializer<lanczos22, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[21] = {
- static_cast<T>(8.318998691953337183034781139546384476554L),
- static_cast<T>(-63.15415991415959158214140353299240638675L),
- static_cast<T>(217.3108224383632868591462242669081540163L),
- static_cast<T>(-448.5134281386108366899784093610397354889L),
- static_cast<T>(619.2903759363285456927248474593012711346L),
- static_cast<T>(-604.1630177420625418522025080080444177046L),
- static_cast<T>(428.8166750424646119935047118287362193314L),
- static_cast<T>(-224.6988753721310913866347429589434550302L),
- static_cast<T>(87.32181627555510833499451817622786940961L),
- static_cast<T>(-25.07866854821128965662498003029199058098L),
- static_cast<T>(5.264398125689025351448861011657789005392L),
- static_cast<T>(-0.792518936256495243383586076579921559914L),
- static_cast<T>(0.08317448364744713773350272460937904691566L),
- static_cast<T>(-0.005845345166274053157781068150827567998882L),
- static_cast<T>(0.0002599412126352082483326238522490030412391L),
- static_cast<T>(-0.6748102079670763884917431338234783496303e-5L),
- static_cast<T>(0.908824383434109002762325095643458603605e-7L),
- static_cast<T>(-0.5299325929309389890892469299969669579725e-9L),
- static_cast<T>(0.994306085859549890267983602248532869362e-12L),
- static_cast<T>(-0.3499893692975262747371544905820891835298e-15L),
- static_cast<T>(0.7260746353663365145454867069182884694961e-20L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 8.318998691953337183034781139546384476554)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -63.15415991415959158214140353299240638675)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 217.3108224383632868591462242669081540163)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -448.5134281386108366899784093610397354889)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 619.2903759363285456927248474593012711346)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -604.1630177420625418522025080080444177046)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 428.8166750424646119935047118287362193314)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -224.6988753721310913866347429589434550302)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 87.32181627555510833499451817622786940961)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -25.07866854821128965662498003029199058098)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 5.264398125689025351448861011657789005392)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -0.792518936256495243383586076579921559914)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.08317448364744713773350272460937904691566)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -0.005845345166274053157781068150827567998882)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.0002599412126352082483326238522490030412391)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -0.6748102079670763884917431338234783496303e-5)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.908824383434109002762325095643458603605e-7)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -0.5299325929309389890892469299969669579725e-9)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.994306085859549890267983602248532869362e-12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -0.3499893692975262747371544905820891835298e-15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.7260746353663365145454867069182884694961e-20)),
};
T result = 0;
for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
template<class T>
static T lanczos_sum_near_2(const T& dz)
{
+ lanczos_initializer<lanczos22, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[21] = {
- static_cast<T>(75.39272007105208086018421070699575462226L),
- static_cast<T>(-572.3481967049935412452681346759966390319L),
- static_cast<T>(1969.426202741555335078065370698955484358L),
- static_cast<T>(-4064.74968778032030891520063865996757519L),
- static_cast<T>(5612.452614138013929794736248384309574814L),
- static_cast<T>(-5475.357667500026172903620177988213902339L),
- static_cast<T>(3886.243614216111328329547926490398103492L),
- static_cast<T>(-2036.382026072125407192448069428134470564L),
- static_cast<T>(791.3727954936062108045551843636692287652L),
- static_cast<T>(-227.2808432388436552794021219198885223122L),
- static_cast<T>(47.70974355562144229897637024320739257284L),
- static_cast<T>(-7.182373807798293545187073539819697141572L),
- static_cast<T>(0.7537866989631514559601547530490976100468L),
- static_cast<T>(-0.05297470142240154822658739758236594717787L),
- static_cast<T>(0.00235577330936380542539812701472320434133L),
- static_cast<T>(-0.6115613067659273118098229498679502138802e-4L),
- static_cast<T>(0.8236417010170941915758315020695551724181e-6L),
- static_cast<T>(-0.4802628430993048190311242611330072198089e-8L),
- static_cast<T>(0.9011113376981524418952720279739624707342e-11L),
- static_cast<T>(-0.3171854152689711198382455703658589996796e-14L),
- static_cast<T>(0.6580207998808093935798753964580596673177e-19L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 75.39272007105208086018421070699575462226)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -572.3481967049935412452681346759966390319)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 1969.426202741555335078065370698955484358)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -4064.74968778032030891520063865996757519)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 5612.452614138013929794736248384309574814)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -5475.357667500026172903620177988213902339)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 3886.243614216111328329547926490398103492)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -2036.382026072125407192448069428134470564)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 791.3727954936062108045551843636692287652)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -227.2808432388436552794021219198885223122)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 47.70974355562144229897637024320739257284)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -7.182373807798293545187073539819697141572)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.7537866989631514559601547530490976100468)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -0.05297470142240154822658739758236594717787)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.00235577330936380542539812701472320434133)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -0.6115613067659273118098229498679502138802e-4)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.8236417010170941915758315020695551724181e-6)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -0.4802628430993048190311242611330072198089e-8)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.9011113376981524418952720279739624707342e-11)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, -0.3171854152689711198382455703658589996796e-14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 120, 0.6580207998808093935798753964580596673177e-19)),
};
T result = 0;
T z = dz + 2;
template <class T>
static T lanczos_sum(const T& z)
{
+ lanczos_initializer<lanczos17m64, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[17] = {
- static_cast<T>(553681095419291969.2230556393350368550504L),
- static_cast<T>(731918863887667017.2511276782146694632234L),
- static_cast<T>(453393234285807339.4627124634539085143364L),
- static_cast<T>(174701893724452790.3546219631779712198035L),
- static_cast<T>(46866125995234723.82897281620357050883077L),
- static_cast<T>(9281280675933215.169109622777099699054272L),
- static_cast<T>(1403600894156674.551057997617468721789536L),
- static_cast<T>(165345984157572.7305349809894046783973837L),
- static_cast<T>(15333629842677.31531822808737907246817024L),
- static_cast<T>(1123152927963.956626161137169462874517318L),
- static_cast<T>(64763127437.92329018717775593533620578237L),
- static_cast<T>(2908830362.657527782848828237106640944457L),
- static_cast<T>(99764700.56999856729959383751710026787811L),
- static_cast<T>(2525791.604886139959837791244686290089331L),
- static_cast<T>(44516.94034970167828580039370201346554872L),
- static_cast<T>(488.0063567520005730476791712814838113252L),
- static_cast<T>(2.50662827463100050241576877135758834683L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 553681095419291969.2230556393350368550504)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 731918863887667017.2511276782146694632234)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 453393234285807339.4627124634539085143364)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 174701893724452790.3546219631779712198035)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 46866125995234723.82897281620357050883077)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9281280675933215.169109622777099699054272)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1403600894156674.551057997617468721789536)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 165345984157572.7305349809894046783973837)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 15333629842677.31531822808737907246817024)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1123152927963.956626161137169462874517318)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 64763127437.92329018717775593533620578237)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2908830362.657527782848828237106640944457)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 99764700.56999856729959383751710026787811)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2525791.604886139959837791244686290089331)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 44516.94034970167828580039370201346554872)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 488.0063567520005730476791712814838113252)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2.50662827463100050241576877135758834683))
};
static const BOOST_MATH_INT_TABLE_TYPE(T, boost::uint64_t) denom[17] = {
BOOST_MATH_INT_VALUE_SUFFIX(0, uLL),
template <class T>
static T lanczos_sum_expG_scaled(const T& z)
{
+ lanczos_initializer<lanczos17m64, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[17] = {
- static_cast<T>(2715894658327.717377557655133124376674911L),
- static_cast<T>(3590179526097.912105038525528721129550434L),
- static_cast<T>(2223966599737.814969312127353235818710172L),
- static_cast<T>(856940834518.9562481809925866825485883417L),
- static_cast<T>(229885871668.749072933597446453399395469L),
- static_cast<T>(45526171687.54610815813502794395753410032L),
- static_cast<T>(6884887713.165178784550917647709216424823L),
- static_cast<T>(811048596.1407531864760282453852372777439L),
- static_cast<T>(75213915.96540822314499613623119501704812L),
- static_cast<T>(5509245.417224265151697527957954952830126L),
- static_cast<T>(317673.5368435419126714931842182369574221L),
- static_cast<T>(14268.27989845035520147014373320337523596L),
- static_cast<T>(489.3618720403263670213909083601787814792L),
- static_cast<T>(12.38941330038454449295883217865458609584L),
- static_cast<T>(0.2183627389504614963941574507281683147897L),
- static_cast<T>(0.002393749522058449186690627996063983095463L),
- static_cast<T>(0.1229541408909435212800785616808830746135e-4L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2715894658327.717377557655133124376674911)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 3590179526097.912105038525528721129550434)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 2223966599737.814969312127353235818710172)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 856940834518.9562481809925866825485883417)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 229885871668.749072933597446453399395469)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 45526171687.54610815813502794395753410032)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 6884887713.165178784550917647709216424823)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 811048596.1407531864760282453852372777439)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 75213915.96540822314499613623119501704812)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 5509245.417224265151697527957954952830126)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 317673.5368435419126714931842182369574221)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 14268.27989845035520147014373320337523596)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 489.3618720403263670213909083601787814792)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 12.38941330038454449295883217865458609584)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.2183627389504614963941574507281683147897)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.002393749522058449186690627996063983095463)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.1229541408909435212800785616808830746135e-4))
};
static const BOOST_MATH_INT_TABLE_TYPE(T, boost::uint64_t) denom[17] = {
BOOST_MATH_INT_VALUE_SUFFIX(0, uLL),
template<class T>
static T lanczos_sum_near_1(const T& dz)
{
+ lanczos_initializer<lanczos17m64, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[16] = {
- static_cast<T>(4.493645054286536365763334986866616581265L),
- static_cast<T>(-16.95716370392468543800733966378143997694L),
- static_cast<T>(26.19196892983737527836811770970479846644L),
- static_cast<T>(-21.3659076437988814488356323758179283908L),
- static_cast<T>(9.913992596774556590710751047594507535764L),
- static_cast<T>(-2.62888300018780199210536267080940382158L),
- static_cast<T>(0.3807056693542503606384861890663080735588L),
- static_cast<T>(-0.02714647489697685807340312061034730486958L),
- static_cast<T>(0.0007815484715461206757220527133967191796747L),
- static_cast<T>(-0.6108630817371501052576880554048972272435e-5L),
- static_cast<T>(0.5037380238864836824167713635482801545086e-8L),
- static_cast<T>(-0.1483232144262638814568926925964858237006e-13L),
- static_cast<T>(0.1346609158752142460943888149156716841693e-14L),
- static_cast<T>(-0.660492688923978805315914918995410340796e-15L),
- static_cast<T>(0.1472114697343266749193617793755763792681e-15L),
- static_cast<T>(-0.1410901942033374651613542904678399264447e-16L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 4.493645054286536365763334986866616581265)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -16.95716370392468543800733966378143997694)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 26.19196892983737527836811770970479846644)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -21.3659076437988814488356323758179283908)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 9.913992596774556590710751047594507535764)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -2.62888300018780199210536267080940382158)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.3807056693542503606384861890663080735588)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.02714647489697685807340312061034730486958)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.0007815484715461206757220527133967191796747)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.6108630817371501052576880554048972272435e-5)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.5037380238864836824167713635482801545086e-8)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.1483232144262638814568926925964858237006e-13)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.1346609158752142460943888149156716841693e-14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.660492688923978805315914918995410340796e-15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.1472114697343266749193617793755763792681e-15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.1410901942033374651613542904678399264447e-16)),
};
T result = 0;
for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
template<class T>
static T lanczos_sum_near_2(const T& dz)
{
+ lanczos_initializer<lanczos17m64, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[16] = {
- static_cast<T>(23.56409085052261327114594781581930373708L),
- static_cast<T>(-88.92116338946308797946237246006238652361L),
- static_cast<T>(137.3472822086847596961177383569603988797L),
- static_cast<T>(-112.0400438263562152489272966461114852861L),
- static_cast<T>(51.98768915202973863076166956576777843805L),
- static_cast<T>(-13.78552090862799358221343319574970124948L),
- static_cast<T>(1.996371068830872830250406773917646121742L),
- static_cast<T>(-0.1423525874909934506274738563671862576161L),
- static_cast<T>(0.004098338646046865122459664947239111298524L),
- static_cast<T>(-0.3203286637326511000882086573060433529094e-4L),
- static_cast<T>(0.2641536751640138646146395939004587594407e-7L),
- static_cast<T>(-0.7777876663062235617693516558976641009819e-13L),
- static_cast<T>(0.7061443477097101636871806229515157914789e-14L),
- static_cast<T>(-0.3463537849537988455590834887691613484813e-14L),
- static_cast<T>(0.7719578215795234036320348283011129450595e-15L),
- static_cast<T>(-0.7398586479708476329563577384044188912075e-16L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 23.56409085052261327114594781581930373708)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -88.92116338946308797946237246006238652361)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 137.3472822086847596961177383569603988797)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -112.0400438263562152489272966461114852861)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 51.98768915202973863076166956576777843805)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -13.78552090862799358221343319574970124948)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 1.996371068830872830250406773917646121742)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.1423525874909934506274738563671862576161)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.004098338646046865122459664947239111298524)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.3203286637326511000882086573060433529094e-4)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.2641536751640138646146395939004587594407e-7)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.7777876663062235617693516558976641009819e-13)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.7061443477097101636871806229515157914789e-14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.3463537849537988455590834887691613484813e-14)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, 0.7719578215795234036320348283011129450595e-15)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 64, -0.7398586479708476329563577384044188912075e-16)),
};
T result = 0;
T z = dz + 2;
template <class T>
static T lanczos_sum(const T& z)
{
+ lanczos_initializer<lanczos24m113, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[24] = {
- static_cast<T>(2029889364934367661624137213253.22102954656825019111612712252027267955023987678816620961507L),
- static_cast<T>(2338599599286656537526273232565.2727349714338768161421882478417543004440597874814359063158L),
- static_cast<T>(1288527989493833400335117708406.3953711906175960449186720680201425446299360322830739180195L),
- static_cast<T>(451779745834728745064649902914.550539158066332484594436145043388809847364393288132164411521L),
- static_cast<T>(113141284461097964029239556815.291212318665536114012605167994061291631013303788706545334708L),
- static_cast<T>(21533689802794625866812941616.7509064680880468667055339259146063256555368135236149614592432L),
- static_cast<T>(3235510315314840089932120340.71494940111731241353655381919722177496659303550321056514776757L),
- static_cast<T>(393537392344185475704891959.081297108513472083749083165179784098220158201055270548272414314L),
- static_cast<T>(39418265082950435024868801.5005452240816902251477336582325944930252142622315101857742955673L),
- static_cast<T>(3290158764187118871697791.05850632319194734270969161036889516414516566453884272345518372696L),
- static_cast<T>(230677110449632078321772.618245845856640677845629174549731890660612368500786684333975350954L),
- static_cast<T>(13652233645509183190158.5916189185218250859402806777406323001463296297553612462737044693697L),
- static_cast<T>(683661466754325350495.216655026531202476397782296585200982429378069417193575896602446904762L),
- static_cast<T>(28967871782219334117.0122379171041074970463982134039409352925258212207710168851968215545064L),
- static_cast<T>(1036104088560167006.2022834098572346459442601718514554488352117620272232373622553429728555L),
- static_cast<T>(31128490785613152.8380102669349814751268126141105475287632676569913936040772990253369753962L),
- static_cast<T>(779327504127342.536207878988196814811198475410572992436243686674896894543126229424358472541L),
- static_cast<T>(16067543181294.643350688789124777020407337133926174150582333950666044399234540521336771876L),
- static_cast<T>(268161795520.300916569439413185778557212729611517883948634711190170998896514639936969855484L),
- static_cast<T>(3533216359.10528191668842486732408440112703691790824611391987708562111396961696753452085068L),
- static_cast<T>(35378979.5479656110614685178752543826919239614088343789329169535932709470588426584501652577L),
- static_cast<T>(253034.881362204346444503097491737872930637147096453940375713745904094735506180552724766444L),
- static_cast<T>(1151.61895453463992438325318456328526085882924197763140514450975619271382783957699017875304L),
- static_cast<T>(2.50662827463100050241576528481104515966515623051532908941425544355490413900497467936202516L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2029889364934367661624137213253.22102954656825019111612712252027267955023987678816620961507)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2338599599286656537526273232565.2727349714338768161421882478417543004440597874814359063158)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1288527989493833400335117708406.3953711906175960449186720680201425446299360322830739180195)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 451779745834728745064649902914.550539158066332484594436145043388809847364393288132164411521)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 113141284461097964029239556815.291212318665536114012605167994061291631013303788706545334708)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 21533689802794625866812941616.7509064680880468667055339259146063256555368135236149614592432)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 3235510315314840089932120340.71494940111731241353655381919722177496659303550321056514776757)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 393537392344185475704891959.081297108513472083749083165179784098220158201055270548272414314)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 39418265082950435024868801.5005452240816902251477336582325944930252142622315101857742955673)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 3290158764187118871697791.05850632319194734270969161036889516414516566453884272345518372696)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 230677110449632078321772.618245845856640677845629174549731890660612368500786684333975350954)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 13652233645509183190158.5916189185218250859402806777406323001463296297553612462737044693697)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 683661466754325350495.216655026531202476397782296585200982429378069417193575896602446904762)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 28967871782219334117.0122379171041074970463982134039409352925258212207710168851968215545064)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1036104088560167006.2022834098572346459442601718514554488352117620272232373622553429728555)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 31128490785613152.8380102669349814751268126141105475287632676569913936040772990253369753962)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 779327504127342.536207878988196814811198475410572992436243686674896894543126229424358472541)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 16067543181294.643350688789124777020407337133926174150582333950666044399234540521336771876)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 268161795520.300916569439413185778557212729611517883948634711190170998896514639936969855484)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 3533216359.10528191668842486732408440112703691790824611391987708562111396961696753452085068)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 35378979.5479656110614685178752543826919239614088343789329169535932709470588426584501652577)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 253034.881362204346444503097491737872930637147096453940375713745904094735506180552724766444)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1151.61895453463992438325318456328526085882924197763140514450975619271382783957699017875304)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2.50662827463100050241576528481104515966515623051532908941425544355490413900497467936202516))
};
static const T denom[24] = {
- static_cast<T>(0L),
- static_cast<T>(0.112400072777760768e22L),
- static_cast<T>(0.414847677933545472e22L),
- static_cast<T>(6756146673770930688000.0L),
- static_cast<T>(6548684852703068697600.0L),
- static_cast<T>(4280722865357147142912.0L),
- static_cast<T>(2021687376910682741568.0L),
- static_cast<T>(720308216440924653696.0L),
- static_cast<T>(199321978221066137360.0L),
- static_cast<T>(43714229649594412832.0L),
- static_cast<T>(7707401101297361068.0L),
- static_cast<T>(1103230881185949736.0L),
- static_cast<T>(129006659818331295.0L),
- static_cast<T>(12363045847086207.0L),
- static_cast<T>(971250460939913.0L),
- static_cast<T>(62382416421941.0L),
- static_cast<T>(3256091103430.0L),
- static_cast<T>(136717357942.0L),
- static_cast<T>(4546047198.0L),
- static_cast<T>(116896626L),
- static_cast<T>(2240315L),
- static_cast<T>(30107L),
- static_cast<T>(253L),
- static_cast<T>(1L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.112400072777760768e22)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.414847677933545472e22)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 6756146673770930688000.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 6548684852703068697600.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 4280722865357147142912.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2021687376910682741568.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 720308216440924653696.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 199321978221066137360.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 43714229649594412832.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 7707401101297361068.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1103230881185949736.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 129006659818331295.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 12363045847086207.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 971250460939913.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 62382416421941.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 3256091103430.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 136717357942.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 4546047198.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 116896626)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2240315)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 30107)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 253)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1))
};
return boost::math::tools::evaluate_rational(num, denom, z);
}
template <class T>
static T lanczos_sum_expG_scaled(const T& z)
{
+ lanczos_initializer<lanczos24m113, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T num[24] = {
- static_cast<T>(3035162425359883494754.02878223286972654682199012688209026810841953293372712802258398358538L),
- static_cast<T>(3496756894406430103600.16057175075063458536101374170860226963245118484234495645518505519827L),
- static_cast<T>(1926652656689320888654.01954015145958293168365236755537645929361841917596501251362171653478L),
- static_cast<T>(675517066488272766316.083023742440619929434602223726894748181327187670231286180156444871912L),
- static_cast<T>(169172853104918752780.086262749564831660238912144573032141700464995906149421555926000038492L),
- static_cast<T>(32197935167225605785.6444116302160245528783954573163541751756353183343357329404208062043808L),
- static_cast<T>(4837849542714083249.37587447454818124327561966323276633775195138872820542242539845253171632L),
- static_cast<T>(588431038090493242.308438203986649553459461798968819276505178004064031201740043314534404158L),
- static_cast<T>(58939585141634058.6206417889192563007809470547755357240808035714047014324843817783741669733L),
- static_cast<T>(4919561837722192.82991866530802080996138070630296720420704876654726991998309206256077395868L),
- static_cast<T>(344916580244240.407442753122831512004021081677987651622305356145640394384006997569631719101L),
- static_cast<T>(20413302960687.8250598845969238472629322716685686993835561234733641729957841485003560103066L),
- static_cast<T>(1022234822943.78400752460970689311934727763870970686747383486600540378889311406851534545789L),
- static_cast<T>(43313787191.9821354846952908076307094286897439975815501673706144217246093900159173598852503L),
- static_cast<T>(1549219505.59667418528481770869280437577581951167003505825834192510436144666564648361001914L),
- static_cast<T>(46544421.1998761919380541579358096705925369145324466147390364674998568485110045455014967149L),
- static_cast<T>(1165278.06807504975090675074910052763026564833951579556132777702952882101173607903881127542L),
- static_cast<T>(24024.759267256769471083727721827405338569868270177779485912486668586611981795179894572115L),
- static_cast<T>(400.965008113421955824358063769761286758463521789765880962939528760888853281920872064838918L),
- static_cast<T>(5.28299015654478269617039029170846385138134929147421558771949982217659507918482272439717603L),
- static_cast<T>(0.0528999024412510102409256676599360516359062802002483877724963720047531347449011629466149805L),
- static_cast<T>(0.000378346710654740685454266569593414561162134092347356968516522170279688139165340746957511115L),
- static_cast<T>(0.172194142179211139195966608011235161516824700287310869949928393345257114743230967204370963e-5L),
- static_cast<T>(0.374799931707148855771381263542708435935402853962736029347951399323367765509988401336565436e-8L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 3035162425359883494754.02878223286972654682199012688209026810841953293372712802258398358538)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 3496756894406430103600.16057175075063458536101374170860226963245118484234495645518505519827)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1926652656689320888654.01954015145958293168365236755537645929361841917596501251362171653478)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 675517066488272766316.083023742440619929434602223726894748181327187670231286180156444871912)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 169172853104918752780.086262749564831660238912144573032141700464995906149421555926000038492)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 32197935167225605785.6444116302160245528783954573163541751756353183343357329404208062043808)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 4837849542714083249.37587447454818124327561966323276633775195138872820542242539845253171632)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 588431038090493242.308438203986649553459461798968819276505178004064031201740043314534404158)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 58939585141634058.6206417889192563007809470547755357240808035714047014324843817783741669733)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 4919561837722192.82991866530802080996138070630296720420704876654726991998309206256077395868)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 344916580244240.407442753122831512004021081677987651622305356145640394384006997569631719101)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 20413302960687.8250598845969238472629322716685686993835561234733641729957841485003560103066)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1022234822943.78400752460970689311934727763870970686747383486600540378889311406851534545789)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 43313787191.9821354846952908076307094286897439975815501673706144217246093900159173598852503)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1549219505.59667418528481770869280437577581951167003505825834192510436144666564648361001914)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 46544421.1998761919380541579358096705925369145324466147390364674998568485110045455014967149)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1165278.06807504975090675074910052763026564833951579556132777702952882101173607903881127542)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 24024.759267256769471083727721827405338569868270177779485912486668586611981795179894572115)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 400.965008113421955824358063769761286758463521789765880962939528760888853281920872064838918)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 5.28299015654478269617039029170846385138134929147421558771949982217659507918482272439717603)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.0528999024412510102409256676599360516359062802002483877724963720047531347449011629466149805)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.000378346710654740685454266569593414561162134092347356968516522170279688139165340746957511115)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.172194142179211139195966608011235161516824700287310869949928393345257114743230967204370963e-5)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.374799931707148855771381263542708435935402853962736029347951399323367765509988401336565436e-8))
};
static const T denom[24] = {
- static_cast<T>(0L),
- static_cast<T>(0.112400072777760768e22L),
- static_cast<T>(0.414847677933545472e22L),
- static_cast<T>(6756146673770930688000.0L),
- static_cast<T>(6548684852703068697600.0L),
- static_cast<T>(4280722865357147142912.0L),
- static_cast<T>(2021687376910682741568.0L),
- static_cast<T>(720308216440924653696.0L),
- static_cast<T>(199321978221066137360.0L),
- static_cast<T>(43714229649594412832.0L),
- static_cast<T>(7707401101297361068.0L),
- static_cast<T>(1103230881185949736.0L),
- static_cast<T>(129006659818331295.0L),
- static_cast<T>(12363045847086207.0L),
- static_cast<T>(971250460939913.0L),
- static_cast<T>(62382416421941.0L),
- static_cast<T>(3256091103430.0L),
- static_cast<T>(136717357942.0L),
- static_cast<T>(4546047198.0L),
- static_cast<T>(116896626L),
- static_cast<T>(2240315L),
- static_cast<T>(30107L),
- static_cast<T>(253L),
- static_cast<T>(1L)
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.112400072777760768e22)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.414847677933545472e22)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 6756146673770930688000.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 6548684852703068697600.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 4280722865357147142912.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2021687376910682741568.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 720308216440924653696.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 199321978221066137360.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 43714229649594412832.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 7707401101297361068.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1103230881185949736.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 129006659818331295.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 12363045847086207.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 971250460939913.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 62382416421941.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 3256091103430.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 136717357942.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 4546047198.0)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 116896626)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2240315)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 30107)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 253)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1))
};
return boost::math::tools::evaluate_rational(num, denom, z);
}
template<class T>
static T lanczos_sum_near_1(const T& dz)
{
+ lanczos_initializer<lanczos24m113, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[23] = {
- static_cast<T>(7.4734083002469026177867421609938203388868806387315406134072298925733950040583068760685908L),
- static_cast<T>(-50.4225805042247530267317342133388132970816607563062253708655085754357843064134941138154171L),
- static_cast<T>(152.288200621747008570784082624444625293884063492396162110698238568311211546361189979357019L),
- static_cast<T>(-271.894959539150384169327513139846971255640842175739337449692360299099322742181325023644769L),
- static_cast<T>(319.240102980202312307047586791116902719088581839891008532114107693294261542869734803906793L),
- static_cast<T>(-259.493144143048088289689500935518073716201741349569864988870534417890269467336454358361499L),
- static_cast<T>(149.747518319689708813209645403067832020714660918583227716408482877303972685262557460145835L),
- static_cast<T>(-61.9261301009341333289187201425188698128684426428003249782448828881580630606817104372760037L),
- static_cast<T>(18.3077524177286961563937379403377462608113523887554047531153187277072451294845795496072365L),
- static_cast<T>(-3.82011322251948043097070160584761236869363471824695092089556195047949392738162970152230254L),
- static_cast<T>(0.549382685505691522516705902336780999493262538301283190963770663549981309645795228539620711L),
- static_cast<T>(-0.0524814679715180697633723771076668718265358076235229045603747927518423453658004287459638024L),
- static_cast<T>(0.00315392664003333528534120626687784812050217700942910879712808180705014754163256855643360698L),
- static_cast<T>(-0.000110098373127648510519799564665442121339511198561008748083409549601095293123407080388658329L),
- static_cast<T>(0.19809382866681658224945717689377373458866950897791116315219376038432014207446832310901893e-5L),
- static_cast<T>(-0.152278977408600291408265615203504153130482270424202400677280558181047344681214058227949755e-7L),
- static_cast<T>(0.364344768076106268872239259083188037615571711218395765792787047015406264051536972018235217e-10L),
- static_cast<T>(-0.148897510480440424971521542520683536298361220674662555578951242811522959610991621951203526e-13L),
- static_cast<T>(0.261199241161582662426512749820666625442516059622425213340053324061794752786482115387573582e-18L),
- static_cast<T>(-0.780072664167099103420998436901014795601783313858454665485256897090476089641613851903791529e-24L),
- static_cast<T>(0.303465867587106629530056603454807425512962762653755513440561256044986695349304176849392735e-24L),
- static_cast<T>(-0.615420597971283870342083342286977366161772327800327789325710571275345878439656918541092056e-25L),
- static_cast<T>(0.499641233843540749369110053005439398774706583601830828776209650445427083113181961630763702e-26L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 7.4734083002469026177867421609938203388868806387315406134072298925733950040583068760685908)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -50.4225805042247530267317342133388132970816607563062253708655085754357843064134941138154171)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 152.288200621747008570784082624444625293884063492396162110698238568311211546361189979357019)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -271.894959539150384169327513139846971255640842175739337449692360299099322742181325023644769)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 319.240102980202312307047586791116902719088581839891008532114107693294261542869734803906793)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -259.493144143048088289689500935518073716201741349569864988870534417890269467336454358361499)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 149.747518319689708813209645403067832020714660918583227716408482877303972685262557460145835)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -61.9261301009341333289187201425188698128684426428003249782448828881580630606817104372760037)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 18.3077524177286961563937379403377462608113523887554047531153187277072451294845795496072365)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -3.82011322251948043097070160584761236869363471824695092089556195047949392738162970152230254)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.549382685505691522516705902336780999493262538301283190963770663549981309645795228539620711)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.0524814679715180697633723771076668718265358076235229045603747927518423453658004287459638024)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.00315392664003333528534120626687784812050217700942910879712808180705014754163256855643360698)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.000110098373127648510519799564665442121339511198561008748083409549601095293123407080388658329)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.19809382866681658224945717689377373458866950897791116315219376038432014207446832310901893e-5)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.152278977408600291408265615203504153130482270424202400677280558181047344681214058227949755e-7)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.364344768076106268872239259083188037615571711218395765792787047015406264051536972018235217e-10)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.148897510480440424971521542520683536298361220674662555578951242811522959610991621951203526e-13)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.261199241161582662426512749820666625442516059622425213340053324061794752786482115387573582e-18)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.780072664167099103420998436901014795601783313858454665485256897090476089641613851903791529e-24)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.303465867587106629530056603454807425512962762653755513440561256044986695349304176849392735e-24)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.615420597971283870342083342286977366161772327800327789325710571275345878439656918541092056e-25)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.499641233843540749369110053005439398774706583601830828776209650445427083113181961630763702e-26)),
};
T result = 0;
for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)
template<class T>
static T lanczos_sum_near_2(const T& dz)
{
+ lanczos_initializer<lanczos24m113, T>::force_instantiate(); // Ensure our constants get initialized before main()
static const T d[23] = {
- static_cast<T>(61.4165001061101455341808888883960361969557848005400286332291451422461117307237198559485365L),
- static_cast<T>(-414.372973678657049667308134761613915623353625332248315105320470271523320700386200587519147L),
- static_cast<T>(1251.50505818554680171298972755376376836161706773644771875668053742215217922228357204561873L),
- static_cast<T>(-2234.43389421602399514176336175766511311493214354568097811220122848998413358085613880612158L),
- static_cast<T>(2623.51647746991904821899989145639147785427273427135380151752779100215839537090464785708684L),
- static_cast<T>(-2132.51572435428751962745870184529534443305617818870214348386131243463614597272260797772423L),
- static_cast<T>(1230.62572059218405766499842067263311220019173335523810725664442147670956427061920234820189L),
- static_cast<T>(-508.90919151163744999377586956023909888833335885805154492270846381061182696305011395981929L),
- static_cast<T>(150.453184562246579758706538566480316921938628645961177699894388251635886834047343195475395L),
- static_cast<T>(-31.3937061525822497422230490071156186113405446381476081565548185848237169870395131828731397L),
- static_cast<T>(4.51482916590287954234936829724231512565732528859217337795452389161322923867318809206313688L),
- static_cast<T>(-0.431292919341108177524462194102701868233551186625103849565527515201492276412231365776131952L),
- static_cast<T>(0.0259189820815586225636729971503340447445001375909094681698918294680345547092233915092128323L),
- static_cast<T>(-0.000904788882557558697594884691337532557729219389814315972435534723829065673966567231504429712L),
- static_cast<T>(0.162793589759218213439218473348810982422449144393340433592232065020562974405674317564164312e-4L),
- static_cast<T>(-0.125142926178202562426432039899709511761368233479483128438847484617555752948755923647214487e-6L),
- static_cast<T>(0.299418680048132583204152682950097239197934281178261879500770485862852229898797687301941982e-9L),
- static_cast<T>(-0.122364035267809278675627784883078206654408225276233049012165202996967011873995261617995421e-12L),
- static_cast<T>(0.21465364366598631597052073538883430194257709353929022544344097235100199405814005393447785e-17L),
- static_cast<T>(-0.641064035802907518396608051803921688237330857546406669209280666066685733941549058513986818e-23L),
- static_cast<T>(0.249388374622173329690271566855185869111237201309011956145463506483151054813346819490278951e-23L),
- static_cast<T>(-0.505752900177513489906064295001851463338022055787536494321532352380960774349054239257683149e-24L),
- static_cast<T>(0.410605371184590959139968810080063542546949719163227555918846829816144878123034347778284006e-25L),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 61.4165001061101455341808888883960361969557848005400286332291451422461117307237198559485365)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -414.372973678657049667308134761613915623353625332248315105320470271523320700386200587519147)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1251.50505818554680171298972755376376836161706773644771875668053742215217922228357204561873)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -2234.43389421602399514176336175766511311493214354568097811220122848998413358085613880612158)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 2623.51647746991904821899989145639147785427273427135380151752779100215839537090464785708684)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -2132.51572435428751962745870184529534443305617818870214348386131243463614597272260797772423)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 1230.62572059218405766499842067263311220019173335523810725664442147670956427061920234820189)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -508.90919151163744999377586956023909888833335885805154492270846381061182696305011395981929)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 150.453184562246579758706538566480316921938628645961177699894388251635886834047343195475395)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -31.3937061525822497422230490071156186113405446381476081565548185848237169870395131828731397)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 4.51482916590287954234936829724231512565732528859217337795452389161322923867318809206313688)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.431292919341108177524462194102701868233551186625103849565527515201492276412231365776131952)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.0259189820815586225636729971503340447445001375909094681698918294680345547092233915092128323)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.000904788882557558697594884691337532557729219389814315972435534723829065673966567231504429712)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.162793589759218213439218473348810982422449144393340433592232065020562974405674317564164312e-4)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.125142926178202562426432039899709511761368233479483128438847484617555752948755923647214487e-6)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.299418680048132583204152682950097239197934281178261879500770485862852229898797687301941982e-9)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.122364035267809278675627784883078206654408225276233049012165202996967011873995261617995421e-12)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.21465364366598631597052073538883430194257709353929022544344097235100199405814005393447785e-17)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.641064035802907518396608051803921688237330857546406669209280666066685733941549058513986818e-23)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.249388374622173329690271566855185869111237201309011956145463506483151054813346819490278951e-23)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, -0.505752900177513489906064295001851463338022055787536494321532352380960774349054239257683149e-24)),
+ static_cast<T>(BOOST_MATH_BIG_CONSTANT(T, 113, 0.410605371184590959139968810080063542546949719163227555918846829816144878123034347778284006e-25)),
};
T result = 0;
T z = dz + 2;
} // namespace math
} // namespace boost
+#if !defined(_CRAYC) && !defined(__CUDACC__) && (!defined(__GNUC__) || (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 3)))
#if (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || defined(__SSE2__)
#include <boost/math/special_functions/detail/lanczos_sse2.hpp>
#endif
+#endif
#endif // BOOST_MATH_SPECIAL_FUNCTIONS_LANCZOS
--- /dev/null
+
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SPECIAL_LEGENDRE_HPP
+#define BOOST_MATH_SPECIAL_LEGENDRE_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/math/special_functions/factorials.hpp>
+#include <boost/math/tools/config.hpp>
+
+namespace boost{
+namespace math{
+
+// Recurrance relation for legendre P and Q polynomials:
+template <class T1, class T2, class T3>
+inline typename tools::promote_args<T1, T2, T3>::type
+ legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1)
+{
+ typedef typename tools::promote_args<T1, T2, T3>::type result_type;
+ return ((2 * l + 1) * result_type(x) * result_type(Pl) - l * result_type(Plm1)) / (l + 1);
+}
+
+namespace detail{
+
+// Implement Legendre P and Q polynomials via recurrance:
+template <class T, class Policy>
+T legendre_imp(unsigned l, T x, const Policy& pol, bool second = false)
+{
+ static const char* function = "boost::math::legrendre_p<%1%>(unsigned, %1%)";
+ // Error handling:
+ if((x < -1) || (x > 1))
+ return policies::raise_domain_error<T>(
+ function,
+ "The Legendre Polynomial is defined for"
+ " -1 <= x <= 1, but got x = %1%.", x, pol);
+
+ T p0, p1;
+ if(second)
+ {
+ // A solution of the second kind (Q):
+ p0 = (boost::math::log1p(x, pol) - boost::math::log1p(-x, pol)) / 2;
+ p1 = x * p0 - 1;
+ }
+ else
+ {
+ // A solution of the first kind (P):
+ p0 = 1;
+ p1 = x;
+ }
+ if(l == 0)
+ return p0;
+
+ unsigned n = 1;
+
+ while(n < l)
+ {
+ std::swap(p0, p1);
+ p1 = boost::math::legendre_next(n, x, p0, p1);
+ ++n;
+ }
+ return p1;
+}
+
+} // namespace detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type
+ legendre_p(int l, T x, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ static const char* function = "boost::math::legendre_p<%1%>(unsigned, %1%)";
+ if(l < 0)
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::legendre_imp(-l-1, static_cast<value_type>(x), pol, false), function);
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::legendre_imp(l, static_cast<value_type>(x), pol, false), function);
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type
+ legendre_p(int l, T x)
+{
+ return boost::math::legendre_p(l, x, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type
+ legendre_q(unsigned l, T x, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::legendre_imp(l, static_cast<value_type>(x), pol, true), "boost::math::legendre_q<%1%>(unsigned, %1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type
+ legendre_q(unsigned l, T x)
+{
+ return boost::math::legendre_q(l, x, policies::policy<>());
+}
+
+// Recurrence for associated polynomials:
+template <class T1, class T2, class T3>
+inline typename tools::promote_args<T1, T2, T3>::type
+ legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1)
+{
+ typedef typename tools::promote_args<T1, T2, T3>::type result_type;
+ return ((2 * l + 1) * result_type(x) * result_type(Pl) - (l + m) * result_type(Plm1)) / (l + 1 - m);
+}
+
+namespace detail{
+// Legendre P associated polynomial:
+template <class T, class Policy>
+T legendre_p_imp(int l, int m, T x, T sin_theta_power, const Policy& pol)
+{
+ // Error handling:
+ if((x < -1) || (x > 1))
+ return policies::raise_domain_error<T>(
+ "boost::math::legendre_p<%1%>(int, int, %1%)",
+ "The associated Legendre Polynomial is defined for"
+ " -1 <= x <= 1, but got x = %1%.", x, pol);
+ // Handle negative arguments first:
+ if(l < 0)
+ return legendre_p_imp(-l-1, m, x, sin_theta_power, pol);
+ if(m < 0)
+ {
+ int sign = (m&1) ? -1 : 1;
+ return sign * boost::math::tgamma_ratio(static_cast<T>(l+m+1), static_cast<T>(l+1-m), pol) * legendre_p_imp(l, -m, x, sin_theta_power, pol);
+ }
+ // Special cases:
+ if(m > l)
+ return 0;
+ if(m == 0)
+ return boost::math::legendre_p(l, x, pol);
+
+ T p0 = boost::math::double_factorial<T>(2 * m - 1, pol) * sin_theta_power;
+
+ if(m&1)
+ p0 *= -1;
+ if(m == l)
+ return p0;
+
+ T p1 = x * (2 * m + 1) * p0;
+
+ int n = m + 1;
+
+ while(n < l)
+ {
+ std::swap(p0, p1);
+ p1 = boost::math::legendre_next(n, m, x, p0, p1);
+ ++n;
+ }
+ return p1;
+}
+
+template <class T, class Policy>
+inline T legendre_p_imp(int l, int m, T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ // TODO: we really could use that mythical "pow1p" function here:
+ return legendre_p_imp(l, m, x, static_cast<T>(pow(1 - x*x, T(abs(m))/2)), pol);
+}
+
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type
+ legendre_p(int l, int m, T x, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::legendre_p_imp(l, m, static_cast<value_type>(x), pol), "bost::math::legendre_p<%1%>(int, int, %1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type
+ legendre_p(int l, int m, T x)
+{
+ return boost::math::legendre_p(l, m, x, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+
+#endif // BOOST_MATH_SPECIAL_LEGENDRE_HPP
+
+
+
#include <boost/math/tools/config.hpp>
#include <boost/math/tools/series.hpp>
#include <boost/math/tools/rational.hpp>
+#include <boost/math/tools/big_constant.hpp>
#include <boost/math/policies/error_handling.hpp>
#include <boost/math/special_functions/math_fwd.hpp>
result_type zero = 0;
result_type result = tools::sum_series(s, policies::get_epsilon<result_type, Policy>(), max_iter, zero);
#endif
- policies::check_series_iterations(function, max_iter, pol);
+ policies::check_series_iterations<T>(function, max_iter, pol);
return result;
}
// Maximum Relative Change in Control Points: 9.648e-05
// Max Error found at long double precision = 2.242324e-19
static const T P[] = {
- -0.807533446680736736712e-19L,
- -0.490881544804798926426e-18L,
- 0.333333333333333373941L,
- 1.17141290782087994162L,
- 1.62790522814926264694L,
- 1.13156411870766876113L,
- 0.408087379932853785336L,
- 0.0706537026422828914622L,
- 0.00441709903782239229447L
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.807533446680736736712e-19),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.490881544804798926426e-18),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.333333333333333373941),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.17141290782087994162),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.62790522814926264694),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.13156411870766876113),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.408087379932853785336),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0706537026422828914622),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00441709903782239229447)
};
static const T Q[] = {
- 1L,
- 4.26423872346263928361L,
- 7.48189472704477708962L,
- 6.94757016732904280913L,
- 3.6493508622280767304L,
- 1.06884863623790638317L,
- 0.158292216998514145947L,
- 0.00885295524069924328658L,
- -0.560026216133415663808e-6L
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 4.26423872346263928361),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 7.48189472704477708962),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 6.94757016732904280913),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 3.6493508622280767304),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.06884863623790638317),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.158292216998514145947),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00885295524069924328658),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.560026216133415663808e-6)
};
T result = 1 - x / 2 + tools::evaluate_polynomial(P, x) / tools::evaluate_polynomial(Q, x);
return result;
}
+template <class T, class Policy, class tag>
+struct log1p_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init(tag());
+ }
+ template <int N>
+ static void do_init(const mpl::int_<N>&){}
+ static void do_init(const mpl::int_<64>&)
+ {
+ boost::math::log1p(static_cast<T>(0.25), Policy());
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy, class tag>
+const typename log1p_initializer<T, Policy, tag>::init log1p_initializer<T, Policy, tag>::initializer;
+
+
} // namespace detail
template <class T, class Policy>
>::type
>::type
>::type tag_type;
+
+ detail::log1p_initializer<value_type, forwarding_policy, tag_type>::force_instantiate();
+
return policies::checked_narrowing_cast<result_type, forwarding_policy>(
detail::log1p_imp(static_cast<value_type>(x), forwarding_policy(), tag_type()), "boost::math::log1p<%1%>(%1%)");
}
{
return static_cast<float>(boost::math::log1p(static_cast<double>(x), pol));
}
+#ifndef _WIN32_WCE
+//
+// For some reason this fails to compile under WinCE...
+// Needs more investigation.
+//
template <class Policy>
inline long double log1p(long double x, const Policy& pol)
{
return ::logl(u)*(x/(u-1.0));
}
#endif
+#endif
template <class T>
inline typename tools::promote_args<T>::type log1p(T x)
#else
T result = boost::math::tools::sum_series(s, policies::get_epsilon<T, Policy>(), max_iter);
#endif
- policies::check_series_iterations(function, max_iter, pol);
+ policies::check_series_iterations<T>(function, max_iter, pol);
return result;
}
// IT = Integer type.
// RT = Real type (built-in floating-point types, float, double, long double) & User Defined Types
-// AT = Integer or Real type
+// AT = Integer or Real type
#ifndef BOOST_MATH_SPECIAL_MATH_FWD_HPP
#define BOOST_MATH_SPECIAL_MATH_FWD_HPP
// Beta functions.
template <class RT1, class RT2>
- typename tools::promote_args<RT1, RT2>::type
+ typename tools::promote_args<RT1, RT2>::type
beta(RT1 a, RT2 b); // Beta function (2 arguments).
template <class RT1, class RT2, class A>
- typename tools::promote_args<RT1, RT2, A>::type
+ typename tools::promote_args<RT1, RT2, A>::type
beta(RT1 a, RT2 b, A x); // Beta function (3 arguments).
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
beta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Beta function (3 arguments).
template <class RT1, class RT2, class RT3>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
betac(RT1 a, RT2 b, RT3 x);
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
betac(RT1 a, RT2 b, RT3 x, const Policy& pol);
template <class RT1, class RT2, class RT3>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibeta(RT1 a, RT2 b, RT3 x); // Incomplete beta function.
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibeta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta function.
template <class RT1, class RT2, class RT3>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibetac(RT1 a, RT2 b, RT3 x); // Incomplete beta complement function.
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibetac(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta complement function.
template <class T1, class T2, class T3, class T4>
- typename tools::promote_args<T1, T2, T3, T4>::type
+ typename tools::promote_args<T1, T2, T3, T4>::type
ibeta_inv(T1 a, T2 b, T3 p, T4* py);
template <class T1, class T2, class T3, class T4, class Policy>
- typename tools::promote_args<T1, T2, T3, T4>::type
+ typename tools::promote_args<T1, T2, T3, T4>::type
ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy& pol);
template <class RT1, class RT2, class RT3>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibeta_inv(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibeta_inv(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
template <class RT1, class RT2, class RT3>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibeta_inva(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibeta_inva(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
template <class RT1, class RT2, class RT3>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibeta_invb(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibeta_invb(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
template <class T1, class T2, class T3, class T4>
- typename tools::promote_args<T1, T2, T3, T4>::type
+ typename tools::promote_args<T1, T2, T3, T4>::type
ibetac_inv(T1 a, T2 b, T3 q, T4* py);
template <class T1, class T2, class T3, class T4, class Policy>
- typename tools::promote_args<T1, T2, T3, T4>::type
+ typename tools::promote_args<T1, T2, T3, T4>::type
ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy& pol);
template <class RT1, class RT2, class RT3>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibetac_inv(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibetac_inv(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
template <class RT1, class RT2, class RT3>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibetac_inva(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibetac_inva(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
template <class RT1, class RT2, class RT3>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibetac_invb(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibetac_invb(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
template <class RT1, class RT2, class RT3>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibeta_derivative(RT1 a, RT2 b, RT3 x); // derivative of incomplete beta
template <class RT1, class RT2, class RT3, class Policy>
- typename tools::promote_args<RT1, RT2, RT3>::type
+ typename tools::promote_args<RT1, RT2, RT3>::type
ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy& pol); // derivative of incomplete beta
// erf & erfc error functions.
// Polynomials:
template <class T1, class T2, class T3>
- typename tools::promote_args<T1, T2, T3>::type
+ typename tools::promote_args<T1, T2, T3>::type
legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
template <class T>
- typename tools::promote_args<T>::type
+ typename tools::promote_args<T>::type
legendre_p(int l, T x);
template <class T, class Policy>
- typename tools::promote_args<T>::type
+ typename tools::promote_args<T>::type
legendre_p(int l, T x, const Policy& pol);
template <class T>
- typename tools::promote_args<T>::type
+ typename tools::promote_args<T>::type
legendre_q(unsigned l, T x);
template <class T, class Policy>
- typename tools::promote_args<T>::type
+ typename tools::promote_args<T>::type
legendre_q(unsigned l, T x, const Policy& pol);
template <class T1, class T2, class T3>
- typename tools::promote_args<T1, T2, T3>::type
+ typename tools::promote_args<T1, T2, T3>::type
legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
template <class T>
- typename tools::promote_args<T>::type
+ typename tools::promote_args<T>::type
legendre_p(int l, int m, T x);
template <class T, class Policy>
- typename tools::promote_args<T>::type
+ typename tools::promote_args<T>::type
legendre_p(int l, int m, T x, const Policy& pol);
template <class T1, class T2, class T3>
- typename tools::promote_args<T1, T2, T3>::type
+ typename tools::promote_args<T1, T2, T3>::type
laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
template <class T1, class T2, class T3>
- typename tools::promote_args<T1, T2, T3>::type
+ typename tools::promote_args<T1, T2, T3>::type
laguerre_next(unsigned n, unsigned l, T1 x, T2 Pl, T3 Plm1);
template <class T>
- typename tools::promote_args<T>::type
+ typename tools::promote_args<T>::type
laguerre(unsigned n, T x);
template <class T, class Policy>
- typename tools::promote_args<T>::type
+ typename tools::promote_args<T>::type
laguerre(unsigned n, unsigned m, T x, const Policy& pol);
template <class T1, class T2>
};
template <class T1, class T2>
- typename laguerre_result<T1, T2>::type
+ typename laguerre_result<T1, T2>::type
laguerre(unsigned n, T1 m, T2 x);
template <class T>
- typename tools::promote_args<T>::type
+ typename tools::promote_args<T>::type
hermite(unsigned n, T x);
template <class T, class Policy>
- typename tools::promote_args<T>::type
+ typename tools::promote_args<T>::type
hermite(unsigned n, T x, const Policy& pol);
template <class T1, class T2, class T3>
- typename tools::promote_args<T1, T2, T3>::type
+ typename tools::promote_args<T1, T2, T3>::type
hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
template <class T1, class T2>
- std::complex<typename tools::promote_args<T1, T2>::type>
+ std::complex<typename tools::promote_args<T1, T2>::type>
spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
template <class T1, class T2, class Policy>
- std::complex<typename tools::promote_args<T1, T2>::type>
+ std::complex<typename tools::promote_args<T1, T2>::type>
spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
template <class T1, class T2>
- typename tools::promote_args<T1, T2>::type
+ typename tools::promote_args<T1, T2>::type
spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
template <class T1, class T2, class Policy>
- typename tools::promote_args<T1, T2>::type
+ typename tools::promote_args<T1, T2>::type
spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
template <class T1, class T2>
- typename tools::promote_args<T1, T2>::type
+ typename tools::promote_args<T1, T2>::type
spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
template <class T1, class T2, class Policy>
- typename tools::promote_args<T1, T2>::type
+ typename tools::promote_args<T1, T2>::type
spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
// Elliptic integrals:
template <class T1, class T2, class T3>
- typename tools::promote_args<T1, T2, T3>::type
+ typename tools::promote_args<T1, T2, T3>::type
ellint_rf(T1 x, T2 y, T3 z);
template <class T1, class T2, class T3, class Policy>
- typename tools::promote_args<T1, T2, T3>::type
+ typename tools::promote_args<T1, T2, T3>::type
ellint_rf(T1 x, T2 y, T3 z, const Policy& pol);
template <class T1, class T2, class T3>
- typename tools::promote_args<T1, T2, T3>::type
+ typename tools::promote_args<T1, T2, T3>::type
ellint_rd(T1 x, T2 y, T3 z);
template <class T1, class T2, class T3, class Policy>
- typename tools::promote_args<T1, T2, T3>::type
+ typename tools::promote_args<T1, T2, T3>::type
ellint_rd(T1 x, T2 y, T3 z, const Policy& pol);
template <class T1, class T2>
- typename tools::promote_args<T1, T2>::type
+ typename tools::promote_args<T1, T2>::type
ellint_rc(T1 x, T2 y);
template <class T1, class T2, class Policy>
- typename tools::promote_args<T1, T2>::type
+ typename tools::promote_args<T1, T2>::type
ellint_rc(T1 x, T2 y, const Policy& pol);
template <class T1, class T2, class T3, class T4>
- typename tools::promote_args<T1, T2, T3, T4>::type
+ typename tools::promote_args<T1, T2, T3, T4>::type
ellint_rj(T1 x, T2 y, T3 z, T4 p);
template <class T1, class T2, class T3, class T4, class Policy>
- typename tools::promote_args<T1, T2, T3, T4>::type
+ typename tools::promote_args<T1, T2, T3, T4>::type
ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol);
template <typename T>
template <class RT, class Policy>
RT factorial(unsigned int, const Policy& pol);
template <class RT>
- RT unchecked_factorial(unsigned int BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(RT));
+ RT unchecked_factorial(unsigned int BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(RT));
template <class RT>
RT double_factorial(unsigned i);
template <class RT, class Policy>
// Hypotenuse function sqrt(x ^ 2 + y ^ 2).
template <class T1, class T2>
- typename tools::promote_args<T1, T2>::type
+ typename tools::promote_args<T1, T2>::type
hypot(T1 x, T2 y);
template <class T1, class T2, class Policy>
- typename tools::promote_args<T1, T2>::type
+ typename tools::promote_args<T1, T2>::type
hypot(T1 x, T2 y, const Policy&);
// cbrt - cube root.
// Power - 1
template <class T1, class T2>
- typename tools::promote_args<T1, T2>::type
+ typename tools::promote_args<T1, T2>::type
powm1(const T1 a, const T2 z);
template <class T1, class T2, class Policy>
- typename tools::promote_args<T1, T2>::type
+ typename tools::promote_args<T1, T2>::type
powm1(const T1 a, const T2 z, const Policy&);
// sqrt(1+x) - 1
template <class T>
typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann(unsigned v, T x);
+ template <class T, class Policy>
+ typename detail::bessel_traits<T, T, Policy>::result_type cyl_bessel_j_zero(T v, int m, const Policy& pol);
+
+ template <class T>
+ typename detail::bessel_traits<T, T, policies::policy<> >::result_type cyl_bessel_j_zero(T v, int m);
+
+ template <class T, class OutputIterator>
+ OutputIterator cyl_bessel_j_zero(T v,
+ int start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it);
+
+ template <class T, class OutputIterator, class Policy>
+ OutputIterator cyl_bessel_j_zero(T v,
+ int start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it,
+ const Policy&);
+
+ template <class T, class Policy>
+ typename detail::bessel_traits<T, T, Policy>::result_type cyl_neumann_zero(T v, int m, const Policy& pol);
+
+ template <class T>
+ typename detail::bessel_traits<T, T, policies::policy<> >::result_type cyl_neumann_zero(T v, int m);
+
+ template <class T, class OutputIterator>
+ OutputIterator cyl_neumann_zero(T v,
+ int start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it);
+
+ template <class T, class OutputIterator, class Policy>
+ OutputIterator cyl_neumann_zero(T v,
+ int start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it,
+ const Policy&);
+
+ template <class T1, class T2>
+ std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_1(T1 v, T2 x);
+
+ template <class T1, class T2, class Policy>
+ std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_1(T1 v, T2 x, const Policy& pol);
+
+ template <class T1, class T2, class Policy>
+ std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_2(T1 v, T2 x, const Policy& pol);
+
+ template <class T1, class T2>
+ std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_2(T1 v, T2 x);
+
+ template <class T1, class T2, class Policy>
+ std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> sph_hankel_1(T1 v, T2 x, const Policy& pol);
+
+ template <class T1, class T2>
+ std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_1(T1 v, T2 x);
+
+ template <class T1, class T2, class Policy>
+ std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> sph_hankel_2(T1 v, T2 x, const Policy& pol);
+
+ template <class T1, class T2>
+ std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_2(T1 v, T2 x);
+
+ template <class T, class Policy>
+ typename tools::promote_args<T>::type airy_ai(T x, const Policy&);
+
+ template <class T>
+ typename tools::promote_args<T>::type airy_ai(T x);
+
+ template <class T, class Policy>
+ typename tools::promote_args<T>::type airy_bi(T x, const Policy&);
+
+ template <class T>
+ typename tools::promote_args<T>::type airy_bi(T x);
+
+ template <class T, class Policy>
+ typename tools::promote_args<T>::type airy_ai_prime(T x, const Policy&);
+
+ template <class T>
+ typename tools::promote_args<T>::type airy_ai_prime(T x);
+
+ template <class T, class Policy>
+ typename tools::promote_args<T>::type airy_bi_prime(T x, const Policy&);
+
+ template <class T>
+ typename tools::promote_args<T>::type airy_bi_prime(T x);
+
+ template <class T>
+ T airy_ai_zero(unsigned m);
+ template <class T, class Policy>
+ T airy_ai_zero(unsigned m, const Policy&);
+
+ template <class OutputIterator>
+ OutputIterator airy_ai_zero(
+ unsigned start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it);
+ template <class OutputIterator, class Policy>
+ OutputIterator airy_ai_zero(
+ unsigned start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it,
+ const Policy&);
+
+ template <class T>
+ T airy_bi_zero(unsigned m);
+ template <class T, class Policy>
+ T airy_bi_zero(unsigned m, const Policy&);
+
+ template <class OutputIterator>
+ OutputIterator airy_bi_zero(
+ unsigned start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it);
+ template <class OutputIterator, class Policy>
+ OutputIterator airy_bi_zero(
+ unsigned start_index,
+ unsigned number_of_zeros,
+ OutputIterator out_it,
+ const Policy&);
+
template <class T, class Policy>
typename tools::promote_args<T>::type sin_pi(T x, const Policy&);
template <class T>
bool isnormal BOOST_NO_MACRO_EXPAND(T t);
+ template<class T>
+ int signbit BOOST_NO_MACRO_EXPAND(T x);
+
+ template <class T>
+ int sign BOOST_NO_MACRO_EXPAND(const T& z);
+
+ template <class T, class U>
+ typename tools::promote_args_permissive<T, U>::type copysign BOOST_NO_MACRO_EXPAND(const T& x, const U& y);
+
+ template <class T>
+ typename tools::promote_args_permissive<T>::type changesign BOOST_NO_MACRO_EXPAND(const T& z);
+
// Exponential integrals:
namespace detail{
template <class T, class Policy>
typename tools::promote_args<T>::type zeta(T s, const Policy&);
+ // Owen's T function:
+ template <class T1, class T2, class Policy>
+ typename tools::promote_args<T1, T2>::type owens_t(T1 h, T2 a, const Policy& pol);
+
+ template <class T1, class T2>
+ typename tools::promote_args<T1, T2>::type owens_t(T1 h, T2 a);
+
+ // Jacobi Functions:
+ template <class T, class U, class V, class Policy>
+ typename tools::promote_args<T, U, V>::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn, const Policy&);
+
+ template <class T, class U, class V>
+ typename tools::promote_args<T, U, V>::type jacobi_elliptic(T k, U theta, V* pcn = 0, V* pdn = 0);
+
+ template <class U, class T, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_sn(U k, T theta, const Policy& pol);
+
+ template <class U, class T>
+ typename tools::promote_args<T, U>::type jacobi_sn(U k, T theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_cn(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_cn(T k, U theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_dn(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_dn(T k, U theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_cd(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_cd(T k, U theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_dc(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_dc(T k, U theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_ns(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_ns(T k, U theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_sd(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_sd(T k, U theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_ds(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_ds(T k, U theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_nc(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_nc(T k, U theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_nd(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_nd(T k, U theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_sc(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_sc(T k, U theta);
+
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type jacobi_cs(T k, U theta, const Policy& pol);
+
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type jacobi_cs(T k, U theta);
+
+
template <class T>
typename tools::promote_args<T>::type zeta(T s);
typename tools::promote_args<T>::type pow(T base);
// next:
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type nextafter(const T&, const U&, const Policy&);
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type nextafter(const T&, const U&);
template <class T, class Policy>
- T nextafter(const T&, const T&, const Policy&);
- template <class T>
- T nextafter(const T&, const T&);
- template <class T, class Policy>
- T float_next(const T&, const Policy&);
+ typename tools::promote_args<T>::type float_next(const T&, const Policy&);
template <class T>
- T float_next(const T&);
+ typename tools::promote_args<T>::type float_next(const T&);
template <class T, class Policy>
- T float_prior(const T&, const Policy&);
+ typename tools::promote_args<T>::type float_prior(const T&, const Policy&);
template <class T>
- T float_prior(const T&);
+ typename tools::promote_args<T>::type float_prior(const T&);
+ template <class T, class U, class Policy>
+ typename tools::promote_args<T, U>::type float_distance(const T&, const U&, const Policy&);
+ template <class T, class U>
+ typename tools::promote_args<T, U>::type float_distance(const T&, const U&);
template <class T, class Policy>
- T float_distance(const T&, const T&, const Policy&);
+ typename tools::promote_args<T>::type float_advance(T val, int distance, const Policy& pol);
template <class T>
- T float_distance(const T&, const T&);
+ typename tools::promote_args<T>::type float_advance(const T& val, int distance);
} // namespace math
} // namespace boost
inline typename boost::math::tools::promote_args<RT>::type falling_factorial(RT x, unsigned n){ return boost::math::falling_factorial(x, n, Policy()); }\
template <class RT>\
inline typename boost::math::tools::promote_args<RT>::type rising_factorial(RT x, unsigned n){ return boost::math::rising_factorial(x, n, Policy()); }\
- using boost::math::fpclassify;\
\
template <class RT>\
inline typename boost::math::tools::promote_args<RT>::type tgamma(RT z){ return boost::math::tgamma(z, Policy()); }\
template <class T>\
inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type \
sph_neumann(unsigned v, T x){ return boost::math::sph_neumann(v, x, Policy()); }\
+\
+ template <class T>\
+ inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type cyl_bessel_j_zero(T v, int m)\
+ { return boost::math::cyl_bessel_j_zero(v, m, Policy()); }\
+\
+template <class OutputIterator, class T>\
+ inline void cyl_bessel_j_zero(T v,\
+ int start_index,\
+ unsigned number_of_zeros,\
+ OutputIterator out_it)\
+ { boost::math::cyl_bessel_j_zero(v, start_index, number_of_zeros, out_it, Policy()); }\
+\
+ template <class T>\
+ inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type cyl_neumann_zero(T v, int m)\
+ { return boost::math::cyl_neumann_zero(v, m, Policy()); }\
+\
+template <class OutputIterator, class T>\
+ inline void cyl_neumann_zero(T v,\
+ int start_index,\
+ unsigned number_of_zeros,\
+ OutputIterator out_it)\
+ { boost::math::cyl_neumann_zero(v, start_index, number_of_zeros, out_it, Policy()); }\
\
template <class T>\
inline typename boost::math::tools::promote_args<T>::type sin_pi(T x){ return boost::math::sin_pi(x); }\
using boost::math::isinf;\
using boost::math::isnan;\
using boost::math::isnormal;\
+ using boost::math::signbit;\
+ using boost::math::sign;\
+ using boost::math::copysign;\
+ using boost::math::changesign;\
\
template <class T, class U>\
inline typename boost::math::tools::promote_args<T,U>::type expint(T const& z, U const& u)\
template <class T> T float_next(const T& a){ return boost::math::float_next(a, Policy()); }\
template <class T> T float_prior(const T& a){ return boost::math::float_prior(a, Policy()); }\
template <class T> T float_distance(const T& a, const T& b){ return boost::math::float_distance(a, b, Policy()); }\
+ \
+ template <class RT1, class RT2>\
+ inline typename boost::math::tools::promote_args<RT1, RT2>::type owens_t(RT1 a, RT2 z){ return boost::math::owens_t(a, z, Policy()); }\
+ \
+ template <class T1, class T2>\
+ inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> cyl_hankel_1(T1 v, T2 x)\
+ { return boost::math::cyl_hankel_1(v, x, Policy()); }\
+ \
+ template <class T1, class T2>\
+ inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> cyl_hankel_2(T1 v, T2 x)\
+ { return boost::math::cyl_hankel_2(v, x, Policy()); }\
+ \
+ template <class T1, class T2>\
+ inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> sph_hankel_1(T1 v, T2 x)\
+ { return boost::math::sph_hankel_1(v, x, Policy()); }\
+ \
+ template <class T1, class T2>\
+ inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> sph_hankel_2(T1 v, T2 x)\
+ { return boost::math::sph_hankel_2(v, x, Policy()); }\
+ \
+ template <class T>\
+ inline typename boost::math::tools::promote_args<T>::type jacobi_elliptic(T k, T theta, T* pcn, T* pdn)\
+ { return boost::math::jacobi_elliptic(k, theta, pcn, pdn, Policy()); }\
+ \
+ template <class U, class T>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_sn(U k, T theta)\
+ { return boost::math::jacobi_sn(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_cn(T k, U theta)\
+ { return boost::math::jacobi_cn(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_dn(T k, U theta)\
+ { return boost::math::jacobi_dn(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_cd(T k, U theta)\
+ { return boost::math::jacobi_cd(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_dc(T k, U theta)\
+ { return boost::math::jacobi_dc(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_ns(T k, U theta)\
+ { return boost::math::jacobi_ns(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_sd(T k, U theta)\
+ { return boost::math::jacobi_sd(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_ds(T k, U theta)\
+ { return boost::math::jacobi_ds(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_nc(T k, U theta)\
+ { return boost::math::jacobi_nc(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_nd(T k, U theta)\
+ { return boost::math::jacobi_nd(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_sc(T k, U theta)\
+ { return boost::math::jacobi_sc(k, theta, Policy()); }\
+ \
+ template <class T, class U>\
+ inline typename boost::math::tools::promote_args<T, U>::type jacobi_cs(T k, U theta)\
+ { return boost::math::jacobi_cs(k, theta, Policy()); }\
+ \
+ template <class T>\
+ inline typename boost::math::tools::promote_args<T>::type airy_ai(T x)\
+ { return boost::math::airy_ai(x, Policy()); }\
+ \
+ template <class T>\
+ inline typename boost::math::tools::promote_args<T>::type airy_bi(T x)\
+ { return boost::math::airy_bi(x, Policy()); }\
+ \
+ template <class T>\
+ inline typename boost::math::tools::promote_args<T>::type airy_ai_prime(T x)\
+ { return boost::math::airy_ai_prime(x, Policy()); }\
+ \
+ template <class T>\
+ inline typename boost::math::tools::promote_args<T>::type airy_bi_prime(T x)\
+ { return boost::math::airy_bi_prime(x, Policy()); }\
+ \
+ template <class T>\
+ inline T airy_ai_zero(int m)\
+ { return boost::math::airy_ai_zero<T>(m, Policy()); }\
+ template <class T, class OutputIterator>\
+ OutputIterator airy_ai_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it)\
+ { return boost::math::airy_ai_zero<T>(start_index, number_of_zeros, out_it, Policy()); }\
+ \
+ template <class T>\
+ inline T airy_bi_zero(int m)\
+ { return boost::math::airy_bi_zero<T>(m, Policy()); }\
+ template <class T, class OutputIterator>\
+ OutputIterator airy_bi_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it)\
+ { return boost::math::airy_bi_zero<T>(start_index, number_of_zeros, out_it, Policy()); }\
+ \
+
+
+
#endif // BOOST_MATH_SPECIAL_MATH_FWD_HPP
--- /dev/null
+// Copyright John Maddock 2007.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_MODF_HPP
+#define BOOST_MATH_MODF_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/config.hpp>
+#include <boost/math/special_functions/trunc.hpp>
+
+namespace boost{ namespace math{
+
+template <class T, class Policy>
+inline T modf(const T& v, T* ipart, const Policy& pol)
+{
+ *ipart = trunc(v, pol);
+ return v - *ipart;
+}
+template <class T>
+inline T modf(const T& v, T* ipart)
+{
+ return modf(v, ipart, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline T modf(const T& v, int* ipart, const Policy& pol)
+{
+ *ipart = itrunc(v, pol);
+ return v - *ipart;
+}
+template <class T>
+inline T modf(const T& v, int* ipart)
+{
+ return modf(v, ipart, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline T modf(const T& v, long* ipart, const Policy& pol)
+{
+ *ipart = ltrunc(v, pol);
+ return v - *ipart;
+}
+template <class T>
+inline T modf(const T& v, long* ipart)
+{
+ return modf(v, ipart, policies::policy<>());
+}
+
+#ifdef BOOST_HAS_LONG_LONG
+template <class T, class Policy>
+inline T modf(const T& v, boost::long_long_type* ipart, const Policy& pol)
+{
+ *ipart = lltrunc(v, pol);
+ return v - *ipart;
+}
+template <class T>
+inline T modf(const T& v, boost::long_long_type* ipart)
+{
+ return modf(v, ipart, policies::policy<>());
+}
+#endif
+
+}} // namespaces
+
+#endif // BOOST_MATH_MODF_HPP
--- /dev/null
+// (C) Copyright John Maddock 2008.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SPECIAL_NEXT_HPP
+#define BOOST_MATH_SPECIAL_NEXT_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/special_functions/fpclassify.hpp>
+#include <boost/math/special_functions/sign.hpp>
+#include <boost/math/special_functions/trunc.hpp>
+
+#ifdef BOOST_MSVC
+#include <float.h>
+#endif
+
+namespace boost{ namespace math{
+
+namespace detail{
+
+template <class T>
+inline T get_smallest_value(mpl::true_ const&)
+{
+ //
+ // numeric_limits lies about denorms being present - particularly
+ // when this can be turned on or off at runtime, as is the case
+ // when using the SSE2 registers in DAZ or FTZ mode.
+ //
+ static const T m = std::numeric_limits<T>::denorm_min();
+ return ((tools::min_value<T>() - m) == tools::min_value<T>()) ? tools::min_value<T>() : m;
+}
+
+template <class T>
+inline T get_smallest_value(mpl::false_ const&)
+{
+ return tools::min_value<T>();
+}
+
+template <class T>
+inline T get_smallest_value()
+{
+#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1310)
+ return get_smallest_value<T>(mpl::bool_<std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::has_denorm == 1)>());
+#else
+ return get_smallest_value<T>(mpl::bool_<std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::has_denorm == std::denorm_present)>());
+#endif
+}
+
+//
+// Returns the smallest value that won't generate denorms when
+// we calculate the value of the least-significant-bit:
+//
+template <class T>
+T get_min_shift_value();
+
+template <class T>
+struct min_shift_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init();
+ }
+ static void do_init()
+ {
+ get_min_shift_value<T>();
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T>
+const typename min_shift_initializer<T>::init min_shift_initializer<T>::initializer;
+
+
+template <class T>
+inline T get_min_shift_value()
+{
+ BOOST_MATH_STD_USING
+ static const T val = ldexp(tools::min_value<T>(), tools::digits<T>() + 1);
+ min_shift_initializer<T>::force_instantiate();
+
+ return val;
+}
+
+template <class T, class Policy>
+T float_next_imp(const T& val, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ int expon;
+ static const char* function = "float_next<%1%>(%1%)";
+
+ int fpclass = (boost::math::fpclassify)(val);
+
+ if((fpclass == FP_NAN) || (fpclass == FP_INFINITE))
+ {
+ if(val < 0)
+ return -tools::max_value<T>();
+ return policies::raise_domain_error<T>(
+ function,
+ "Argument must be finite, but got %1%", val, pol);
+ }
+
+ if(val >= tools::max_value<T>())
+ return policies::raise_overflow_error<T>(function, 0, pol);
+
+ if(val == 0)
+ return detail::get_smallest_value<T>();
+
+ if((fpclass != FP_SUBNORMAL) && (fpclass != FP_ZERO) && (fabs(val) < detail::get_min_shift_value<T>()) && (val != -tools::min_value<T>()))
+ {
+ //
+ // Special case: if the value of the least significant bit is a denorm, and the result
+ // would not be a denorm, then shift the input, increment, and shift back.
+ // This avoids issues with the Intel SSE2 registers when the FTZ or DAZ flags are set.
+ //
+ return ldexp(float_next(T(ldexp(val, 2 * tools::digits<T>())), pol), -2 * tools::digits<T>());
+ }
+
+ if(-0.5f == frexp(val, &expon))
+ --expon; // reduce exponent when val is a power of two, and negative.
+ T diff = ldexp(T(1), expon - tools::digits<T>());
+ if(diff == 0)
+ diff = detail::get_smallest_value<T>();
+ return val + diff;
+}
+
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type float_next(const T& val, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ return detail::float_next_imp(static_cast<result_type>(val), pol);
+}
+
+#if 0 //def BOOST_MSVC
+//
+// We used to use ::_nextafter here, but doing so fails when using
+// the SSE2 registers if the FTZ or DAZ flags are set, so use our own
+// - albeit slower - code instead as at least that gives the correct answer.
+//
+template <class Policy>
+inline double float_next(const double& val, const Policy& pol)
+{
+ static const char* function = "float_next<%1%>(%1%)";
+
+ if(!(boost::math::isfinite)(val) && (val > 0))
+ return policies::raise_domain_error<double>(
+ function,
+ "Argument must be finite, but got %1%", val, pol);
+
+ if(val >= tools::max_value<double>())
+ return policies::raise_overflow_error<double>(function, 0, pol);
+
+ return ::_nextafter(val, tools::max_value<double>());
+}
+#endif
+
+template <class T>
+inline typename tools::promote_args<T>::type float_next(const T& val)
+{
+ return float_next(val, policies::policy<>());
+}
+
+namespace detail{
+
+template <class T, class Policy>
+T float_prior_imp(const T& val, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ int expon;
+ static const char* function = "float_prior<%1%>(%1%)";
+
+ int fpclass = (boost::math::fpclassify)(val);
+
+ if((fpclass == FP_NAN) || (fpclass == FP_INFINITE))
+ {
+ if(val > 0)
+ return tools::max_value<T>();
+ return policies::raise_domain_error<T>(
+ function,
+ "Argument must be finite, but got %1%", val, pol);
+ }
+
+ if(val <= -tools::max_value<T>())
+ return -policies::raise_overflow_error<T>(function, 0, pol);
+
+ if(val == 0)
+ return -detail::get_smallest_value<T>();
+
+ if((fpclass != FP_SUBNORMAL) && (fpclass != FP_ZERO) && (fabs(val) < detail::get_min_shift_value<T>()) && (val != tools::min_value<T>()))
+ {
+ //
+ // Special case: if the value of the least significant bit is a denorm, and the result
+ // would not be a denorm, then shift the input, increment, and shift back.
+ // This avoids issues with the Intel SSE2 registers when the FTZ or DAZ flags are set.
+ //
+ return ldexp(float_prior(T(ldexp(val, 2 * tools::digits<T>())), pol), -2 * tools::digits<T>());
+ }
+
+ T remain = frexp(val, &expon);
+ if(remain == 0.5)
+ --expon; // when val is a power of two we must reduce the exponent
+ T diff = ldexp(T(1), expon - tools::digits<T>());
+ if(diff == 0)
+ diff = detail::get_smallest_value<T>();
+ return val - diff;
+}
+
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type float_prior(const T& val, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ return detail::float_prior_imp(static_cast<result_type>(val), pol);
+}
+
+#if 0 //def BOOST_MSVC
+//
+// We used to use ::_nextafter here, but doing so fails when using
+// the SSE2 registers if the FTZ or DAZ flags are set, so use our own
+// - albeit slower - code instead as at least that gives the correct answer.
+//
+template <class Policy>
+inline double float_prior(const double& val, const Policy& pol)
+{
+ static const char* function = "float_prior<%1%>(%1%)";
+
+ if(!(boost::math::isfinite)(val) && (val < 0))
+ return policies::raise_domain_error<double>(
+ function,
+ "Argument must be finite, but got %1%", val, pol);
+
+ if(val <= -tools::max_value<double>())
+ return -policies::raise_overflow_error<double>(function, 0, pol);
+
+ return ::_nextafter(val, -tools::max_value<double>());
+}
+#endif
+
+template <class T>
+inline typename tools::promote_args<T>::type float_prior(const T& val)
+{
+ return float_prior(val, policies::policy<>());
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type nextafter(const T& val, const U& direction, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ return val < direction ? boost::math::float_next<result_type>(val, pol) : val == direction ? val : boost::math::float_prior<result_type>(val, pol);
+}
+
+template <class T, class U>
+inline typename tools::promote_args<T, U>::type nextafter(const T& val, const U& direction)
+{
+ return nextafter(val, direction, policies::policy<>());
+}
+
+namespace detail{
+
+template <class T, class Policy>
+T float_distance_imp(const T& a, const T& b, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ //
+ // Error handling:
+ //
+ static const char* function = "float_distance<%1%>(%1%, %1%)";
+ if(!(boost::math::isfinite)(a))
+ return policies::raise_domain_error<T>(
+ function,
+ "Argument a must be finite, but got %1%", a, pol);
+ if(!(boost::math::isfinite)(b))
+ return policies::raise_domain_error<T>(
+ function,
+ "Argument b must be finite, but got %1%", b, pol);
+ //
+ // Special cases:
+ //
+ if(a > b)
+ return -float_distance(b, a, pol);
+ if(a == b)
+ return 0;
+ if(a == 0)
+ return 1 + fabs(float_distance(static_cast<T>((b < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), b, pol));
+ if(b == 0)
+ return 1 + fabs(float_distance(static_cast<T>((a < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), a, pol));
+ if(boost::math::sign(a) != boost::math::sign(b))
+ return 2 + fabs(float_distance(static_cast<T>((b < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), b, pol))
+ + fabs(float_distance(static_cast<T>((a < 0) ? T(-detail::get_smallest_value<T>()) : detail::get_smallest_value<T>()), a, pol));
+ //
+ // By the time we get here, both a and b must have the same sign, we want
+ // b > a and both postive for the following logic:
+ //
+ if(a < 0)
+ return float_distance(static_cast<T>(-b), static_cast<T>(-a), pol);
+
+ BOOST_ASSERT(a >= 0);
+ BOOST_ASSERT(b >= a);
+
+ int expon;
+ //
+ // Note that if a is a denorm then the usual formula fails
+ // because we actually have fewer than tools::digits<T>()
+ // significant bits in the representation:
+ //
+ frexp(((boost::math::fpclassify)(a) == FP_SUBNORMAL) ? tools::min_value<T>() : a, &expon);
+ T upper = ldexp(T(1), expon);
+ T result = 0;
+ expon = tools::digits<T>() - expon;
+ //
+ // If b is greater than upper, then we *must* split the calculation
+ // as the size of the ULP changes with each order of magnitude change:
+ //
+ if(b > upper)
+ {
+ result = float_distance(upper, b);
+ }
+ //
+ // Use compensated double-double addition to avoid rounding
+ // errors in the subtraction:
+ //
+ T mb, x, y, z;
+ if(((boost::math::fpclassify)(a) == FP_SUBNORMAL) || (b - a < tools::min_value<T>()))
+ {
+ //
+ // Special case - either one end of the range is a denormal, or else the difference is.
+ // The regular code will fail if we're using the SSE2 registers on Intel and either
+ // the FTZ or DAZ flags are set.
+ //
+ T a2 = ldexp(a, tools::digits<T>());
+ T b2 = ldexp(b, tools::digits<T>());
+ mb = -(std::min)(T(ldexp(upper, tools::digits<T>())), b2);
+ x = a2 + mb;
+ z = x - a2;
+ y = (a2 - (x - z)) + (mb - z);
+
+ expon -= tools::digits<T>();
+ }
+ else
+ {
+ mb = -(std::min)(upper, b);
+ x = a + mb;
+ z = x - a;
+ y = (a - (x - z)) + (mb - z);
+ }
+ if(x < 0)
+ {
+ x = -x;
+ y = -y;
+ }
+ result += ldexp(x, expon) + ldexp(y, expon);
+ //
+ // Result must be an integer:
+ //
+ BOOST_ASSERT(result == floor(result));
+ return result;
+}
+
+}
+
+template <class T, class U, class Policy>
+inline typename tools::promote_args<T, U>::type float_distance(const T& a, const U& b, const Policy& pol)
+{
+ typedef typename tools::promote_args<T, U>::type result_type;
+ return detail::float_distance_imp(static_cast<result_type>(a), static_cast<result_type>(b), pol);
+}
+
+template <class T, class U>
+typename tools::promote_args<T, U>::type float_distance(const T& a, const U& b)
+{
+ return boost::math::float_distance(a, b, policies::policy<>());
+}
+
+namespace detail{
+
+template <class T, class Policy>
+T float_advance_imp(T val, int distance, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ //
+ // Error handling:
+ //
+ static const char* function = "float_advance<%1%>(%1%, int)";
+
+ int fpclass = (boost::math::fpclassify)(val);
+
+ if((fpclass == FP_NAN) || (fpclass == FP_INFINITE))
+ return policies::raise_domain_error<T>(
+ function,
+ "Argument val must be finite, but got %1%", val, pol);
+
+ if(val < 0)
+ return -float_advance(-val, -distance, pol);
+ if(distance == 0)
+ return val;
+ if(distance == 1)
+ return float_next(val, pol);
+ if(distance == -1)
+ return float_prior(val, pol);
+
+ if(fabs(val) < detail::get_min_shift_value<T>())
+ {
+ //
+ // Special case: if the value of the least significant bit is a denorm,
+ // implement in terms of float_next/float_prior.
+ // This avoids issues with the Intel SSE2 registers when the FTZ or DAZ flags are set.
+ //
+ if(distance > 0)
+ {
+ do{ val = float_next(val, pol); } while(--distance);
+ }
+ else
+ {
+ do{ val = float_prior(val, pol); } while(++distance);
+ }
+ return val;
+ }
+
+ int expon;
+ frexp(val, &expon);
+ T limit = ldexp((distance < 0 ? T(0.5f) : T(1)), expon);
+ if(val <= tools::min_value<T>())
+ {
+ limit = sign(T(distance)) * tools::min_value<T>();
+ }
+ T limit_distance = float_distance(val, limit);
+ while(fabs(limit_distance) < abs(distance))
+ {
+ distance -= itrunc(limit_distance);
+ val = limit;
+ if(distance < 0)
+ {
+ limit /= 2;
+ expon--;
+ }
+ else
+ {
+ limit *= 2;
+ expon++;
+ }
+ limit_distance = float_distance(val, limit);
+ if(distance && (limit_distance == 0))
+ {
+ policies::raise_evaluation_error<T>(function, "Internal logic failed while trying to increment floating point value %1%: most likely your FPU is in non-IEEE conforming mode.", val, pol);
+ }
+ }
+ if((0.5f == frexp(val, &expon)) && (distance < 0))
+ --expon;
+ T diff = 0;
+ if(val != 0)
+ diff = distance * ldexp(T(1), expon - tools::digits<T>());
+ if(diff == 0)
+ diff = distance * detail::get_smallest_value<T>();
+ return val += diff;
+}
+
+}
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type float_advance(T val, int distance, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ return detail::float_advance_imp(static_cast<result_type>(val), distance, pol);
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type float_advance(const T& val, int distance)
+{
+ return boost::math::float_advance(val, distance, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_SPECIAL_NEXT_HPP
+
--- /dev/null
+// Copyright Benjamin Sobotta 2012
+
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_OWENS_T_HPP
+#define BOOST_OWENS_T_HPP
+
+// Reference:
+// Mike Patefield, David Tandy
+// FAST AND ACCURATE CALCULATION OF OWEN'S T-FUNCTION
+// Journal of Statistical Software, 5 (5), 1-25
+
+#ifdef _MSC_VER
+# pragma once
+#endif
+
+#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/math/special_functions/erf.hpp>
+#include <boost/math/special_functions/expm1.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/assert.hpp>
+#include <boost/math/constants/constants.hpp>
+#include <boost/math/tools/big_constant.hpp>
+
+#include <stdexcept>
+
+namespace boost
+{
+ namespace math
+ {
+ namespace detail
+ {
+ // owens_t_znorm1(x) = P(-oo<Z<=x)-0.5 with Z being normally distributed.
+ template<typename RealType>
+ inline RealType owens_t_znorm1(const RealType x)
+ {
+ using namespace boost::math::constants;
+ return erf(x*one_div_root_two<RealType>())*half<RealType>();
+ } // RealType owens_t_znorm1(const RealType x)
+
+ // owens_t_znorm2(x) = P(x<=Z<oo) with Z being normally distributed.
+ template<typename RealType>
+ inline RealType owens_t_znorm2(const RealType x)
+ {
+ using namespace boost::math::constants;
+ return erfc(x*one_div_root_two<RealType>())*half<RealType>();
+ } // RealType owens_t_znorm2(const RealType x)
+
+ // Auxiliary function, it computes an array key that is used to determine
+ // the specific computation method for Owen's T and the order thereof
+ // used in owens_t_dispatch.
+ template<typename RealType>
+ inline unsigned short owens_t_compute_code(const RealType h, const RealType a)
+ {
+ static const RealType hrange[] =
+ {0.02, 0.06, 0.09, 0.125, 0.26, 0.4, 0.6, 1.6, 1.7, 2.33, 2.4, 3.36, 3.4, 4.8};
+
+ static const RealType arange[] = {0.025, 0.09, 0.15, 0.36, 0.5, 0.9, 0.99999};
+ /*
+ original select array from paper:
+ 1, 1, 2,13,13,13,13,13,13,13,13,16,16,16, 9
+ 1, 2, 2, 3, 3, 5, 5,14,14,15,15,16,16,16, 9
+ 2, 2, 3, 3, 3, 5, 5,15,15,15,15,16,16,16,10
+ 2, 2, 3, 5, 5, 5, 5, 7, 7,16,16,16,16,16,10
+ 2, 3, 3, 5, 5, 6, 6, 8, 8,17,17,17,12,12,11
+ 2, 3, 5, 5, 5, 6, 6, 8, 8,17,17,17,12,12,12
+ 2, 3, 4, 4, 6, 6, 8, 8,17,17,17,17,17,12,12
+ 2, 3, 4, 4, 6, 6,18,18,18,18,17,17,17,12,12
+ */
+ // subtract one because the array is written in FORTRAN in mind - in C arrays start @ zero
+ static const unsigned short select[] =
+ {
+ 0, 0 , 1 , 12 ,12 , 12 , 12 , 12 , 12 , 12 , 12 , 15 , 15 , 15 , 8,
+ 0 , 1 , 1 , 2 , 2 , 4 , 4 , 13 , 13 , 14 , 14 , 15 , 15 , 15 , 8,
+ 1 , 1 , 2 , 2 , 2 , 4 , 4 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 9,
+ 1 , 1 , 2 , 4 , 4 , 4 , 4 , 6 , 6 , 15 , 15 , 15 , 15 , 15 , 9,
+ 1 , 2 , 2 , 4 , 4 , 5 , 5 , 7 , 7 , 16 ,16 , 16 , 11 , 11 , 10,
+ 1 , 2 , 4 , 4 , 4 , 5 , 5 , 7 , 7 , 16 , 16 , 16 , 11 , 11 , 11,
+ 1 , 2 , 3 , 3 , 5 , 5 , 7 , 7 , 16 , 16 , 16 , 16 , 16 , 11 , 11,
+ 1 , 2 , 3 , 3 , 5 , 5 , 17 , 17 , 17 , 17 , 16 , 16 , 16 , 11 , 11
+ };
+
+ unsigned short ihint = 14, iaint = 7;
+ for(unsigned short i = 0; i != 14; i++)
+ {
+ if( h <= hrange[i] )
+ {
+ ihint = i;
+ break;
+ }
+ } // for(unsigned short i = 0; i != 14; i++)
+
+ for(unsigned short i = 0; i != 7; i++)
+ {
+ if( a <= arange[i] )
+ {
+ iaint = i;
+ break;
+ }
+ } // for(unsigned short i = 0; i != 7; i++)
+
+ // interprete select array as 8x15 matrix
+ return select[iaint*15 + ihint];
+
+ } // unsigned short owens_t_compute_code(const RealType h, const RealType a)
+
+ template<typename RealType>
+ inline unsigned short owens_t_get_order_imp(const unsigned short icode, RealType, const mpl::int_<53>&)
+ {
+ static const unsigned short ord[] = {2, 3, 4, 5, 7, 10, 12, 18, 10, 20, 30, 0, 4, 7, 8, 20, 0, 0}; // 18 entries
+
+ BOOST_ASSERT(icode<18);
+
+ return ord[icode];
+ } // unsigned short owens_t_get_order(const unsigned short icode, RealType, mpl::int<53> const&)
+
+ template<typename RealType>
+ inline unsigned short owens_t_get_order_imp(const unsigned short icode, RealType, const mpl::int_<64>&)
+ {
+ // method ================>>> {1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 4, 4, 4, 4, 5, 6}
+ static const unsigned short ord[] = {3, 4, 5, 6, 8, 11, 13, 19, 10, 20, 30, 0, 7, 10, 11, 23, 0, 0}; // 18 entries
+
+ BOOST_ASSERT(icode<18);
+
+ return ord[icode];
+ } // unsigned short owens_t_get_order(const unsigned short icode, RealType, mpl::int<64> const&)
+
+ template<typename RealType, typename Policy>
+ inline unsigned short owens_t_get_order(const unsigned short icode, RealType r, const Policy&)
+ {
+ typedef typename policies::precision<RealType, Policy>::type precision_type;
+ typedef typename mpl::if_<
+ mpl::or_<
+ mpl::less_equal<precision_type, mpl::int_<0> >,
+ mpl::greater<precision_type, mpl::int_<53> >
+ >,
+ mpl::int_<64>,
+ mpl::int_<53>
+ >::type tag_type;
+
+ return owens_t_get_order_imp(icode, r, tag_type());
+ }
+
+ // compute the value of Owen's T function with method T1 from the reference paper
+ template<typename RealType>
+ inline RealType owens_t_T1(const RealType h, const RealType a, const unsigned short m)
+ {
+ BOOST_MATH_STD_USING
+ using namespace boost::math::constants;
+
+ const RealType hs = -h*h*half<RealType>();
+ const RealType dhs = exp( hs );
+ const RealType as = a*a;
+
+ unsigned short j=1;
+ RealType jj = 1;
+ RealType aj = a * one_div_two_pi<RealType>();
+ RealType dj = expm1( hs );
+ RealType gj = hs*dhs;
+
+ RealType val = atan( a ) * one_div_two_pi<RealType>();
+
+ while( true )
+ {
+ val += dj*aj/jj;
+
+ if( m <= j )
+ break;
+
+ j++;
+ jj += static_cast<RealType>(2);
+ aj *= as;
+ dj = gj - dj;
+ gj *= hs / static_cast<RealType>(j);
+ } // while( true )
+
+ return val;
+ } // RealType owens_t_T1(const RealType h, const RealType a, const unsigned short m)
+
+ // compute the value of Owen's T function with method T2 from the reference paper
+ template<typename RealType, class Policy>
+ inline RealType owens_t_T2(const RealType h, const RealType a, const unsigned short m, const RealType ah, const Policy&, const mpl::false_&)
+ {
+ BOOST_MATH_STD_USING
+ using namespace boost::math::constants;
+
+ const unsigned short maxii = m+m+1;
+ const RealType hs = h*h;
+ const RealType as = -a*a;
+ const RealType y = static_cast<RealType>(1) / hs;
+
+ unsigned short ii = 1;
+ RealType val = 0;
+ RealType vi = a * exp( -ah*ah*half<RealType>() ) * one_div_root_two_pi<RealType>();
+ RealType z = owens_t_znorm1(ah)/h;
+
+ while( true )
+ {
+ val += z;
+ if( maxii <= ii )
+ {
+ val *= exp( -hs*half<RealType>() ) * one_div_root_two_pi<RealType>();
+ break;
+ } // if( maxii <= ii )
+ z = y * ( vi - static_cast<RealType>(ii) * z );
+ vi *= as;
+ ii += 2;
+ } // while( true )
+
+ return val;
+ } // RealType owens_t_T2(const RealType h, const RealType a, const unsigned short m, const RealType ah)
+
+ // compute the value of Owen's T function with method T3 from the reference paper
+ template<typename RealType>
+ inline RealType owens_t_T3_imp(const RealType h, const RealType a, const RealType ah, const mpl::int_<53>&)
+ {
+ BOOST_MATH_STD_USING
+ using namespace boost::math::constants;
+
+ const unsigned short m = 20;
+
+ static const RealType c2[] =
+ {
+ 0.99999999999999987510,
+ -0.99999999999988796462, 0.99999999998290743652,
+ -0.99999999896282500134, 0.99999996660459362918,
+ -0.99999933986272476760, 0.99999125611136965852,
+ -0.99991777624463387686, 0.99942835555870132569,
+ -0.99697311720723000295, 0.98751448037275303682,
+ -0.95915857980572882813, 0.89246305511006708555,
+ -0.76893425990463999675, 0.58893528468484693250,
+ -0.38380345160440256652, 0.20317601701045299653,
+ -0.82813631607004984866E-01, 0.24167984735759576523E-01,
+ -0.44676566663971825242E-02, 0.39141169402373836468E-03
+ };
+
+ const RealType as = a*a;
+ const RealType hs = h*h;
+ const RealType y = static_cast<RealType>(1)/hs;
+
+ RealType ii = 1;
+ unsigned short i = 0;
+ RealType vi = a * exp( -ah*ah*half<RealType>() ) * one_div_root_two_pi<RealType>();
+ RealType zi = owens_t_znorm1(ah)/h;
+ RealType val = 0;
+
+ while( true )
+ {
+ BOOST_ASSERT(i < 21);
+ val += zi*c2[i];
+ if( m <= i ) // if( m < i+1 )
+ {
+ val *= exp( -hs*half<RealType>() ) * one_div_root_two_pi<RealType>();
+ break;
+ } // if( m < i )
+ zi = y * (ii*zi - vi);
+ vi *= as;
+ ii += 2;
+ i++;
+ } // while( true )
+
+ return val;
+ } // RealType owens_t_T3(const RealType h, const RealType a, const RealType ah)
+
+ // compute the value of Owen's T function with method T3 from the reference paper
+ template<class RealType>
+ inline RealType owens_t_T3_imp(const RealType h, const RealType a, const RealType ah, const mpl::int_<64>&)
+ {
+ BOOST_MATH_STD_USING
+ using namespace boost::math::constants;
+
+ const unsigned short m = 30;
+
+ static const RealType c2[] =
+ {
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.99999999999999999999999729978162447266851932041876728736094298092917625009873),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.99999999999999999999467056379678391810626533251885323416799874878563998732905968),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.99999999999999999824849349313270659391127814689133077036298754586814091034842536),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.9999999999999997703859616213643405880166422891953033591551179153879839440241685),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.99999999999998394883415238173334565554173013941245103172035286759201504179038147),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.9999999999993063616095509371081203145247992197457263066869044528823599399470977),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.9999999999797336340409464429599229870590160411238245275855903767652432017766116267),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.999999999574958412069046680119051639753412378037565521359444170241346845522403274),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.9999999933226234193375324943920160947158239076786103108097456617750134812033362048),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.9999999188923242461073033481053037468263536806742737922476636768006622772762168467),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.9999992195143483674402853783549420883055129680082932629160081128947764415749728967),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.999993935137206712830997921913316971472227199741857386575097250553105958772041501),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.99996135597690552745362392866517133091672395614263398912807169603795088421057688716),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.99979556366513946026406788969630293820987757758641211293079784585126692672425362469),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.999092789629617100153486251423850590051366661947344315423226082520411961968929483),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.996593837411918202119308620432614600338157335862888580671450938858935084316004769854),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.98910017138386127038463510314625339359073956513420458166238478926511821146316469589567),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.970078558040693314521331982203762771512160168582494513347846407314584943870399016019),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.92911438683263187495758525500033707204091967947532160289872782771388170647150321633673),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.8542058695956156057286980736842905011429254735181323743367879525470479126968822863),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.73796526033030091233118357742803709382964420335559408722681794195743240930748630755),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.58523469882837394570128599003785154144164680587615878645171632791404210655891158),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.415997776145676306165661663581868460503874205343014196580122174949645271353372263),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.2588210875241943574388730510317252236407805082485246378222935376279663808416534365),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.1375535825163892648504646951500265585055789019410617565727090346559210218472356689),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.0607952766325955730493900985022020434830339794955745989150270485056436844239206648),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.0216337683299871528059836483840390514275488679530797294557060229266785853764115),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -0.00593405693455186729876995814181203900550014220428843483927218267309209471516256),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 0.0011743414818332946510474576182739210553333860106811865963485870668929503649964142),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, -1.489155613350368934073453260689881330166342484405529981510694514036264969925132e-4),
+ BOOST_MATH_BIG_CONSTANT(RealType, 260, 9.072354320794357587710929507988814669454281514268844884841547607134260303118208e-6)
+ };
+
+ const RealType as = a*a;
+ const RealType hs = h*h;
+ const RealType y = 1 / hs;
+
+ RealType ii = 1;
+ unsigned short i = 0;
+ RealType vi = a * exp( -ah*ah*half<RealType>() ) * one_div_root_two_pi<RealType>();
+ RealType zi = owens_t_znorm1(ah)/h;
+ RealType val = 0;
+
+ while( true )
+ {
+ BOOST_ASSERT(i < 31);
+ val += zi*c2[i];
+ if( m <= i ) // if( m < i+1 )
+ {
+ val *= exp( -hs*half<RealType>() ) * one_div_root_two_pi<RealType>();
+ break;
+ } // if( m < i )
+ zi = y * (ii*zi - vi);
+ vi *= as;
+ ii += 2;
+ i++;
+ } // while( true )
+
+ return val;
+ } // RealType owens_t_T3(const RealType h, const RealType a, const RealType ah)
+
+ template<class RealType, class Policy>
+ inline RealType owens_t_T3(const RealType h, const RealType a, const RealType ah, const Policy&)
+ {
+ typedef typename policies::precision<RealType, Policy>::type precision_type;
+ typedef typename mpl::if_<
+ mpl::or_<
+ mpl::less_equal<precision_type, mpl::int_<0> >,
+ mpl::greater<precision_type, mpl::int_<53> >
+ >,
+ mpl::int_<64>,
+ mpl::int_<53>
+ >::type tag_type;
+
+ return owens_t_T3_imp(h, a, ah, tag_type());
+ }
+
+ // compute the value of Owen's T function with method T4 from the reference paper
+ template<typename RealType>
+ inline RealType owens_t_T4(const RealType h, const RealType a, const unsigned short m)
+ {
+ BOOST_MATH_STD_USING
+ using namespace boost::math::constants;
+
+ const unsigned short maxii = m+m+1;
+ const RealType hs = h*h;
+ const RealType as = -a*a;
+
+ unsigned short ii = 1;
+ RealType ai = a * exp( -hs*(static_cast<RealType>(1)-as)*half<RealType>() ) * one_div_two_pi<RealType>();
+ RealType yi = 1;
+ RealType val = 0;
+
+ while( true )
+ {
+ val += ai*yi;
+ if( maxii <= ii )
+ break;
+ ii += 2;
+ yi = (static_cast<RealType>(1)-hs*yi) / static_cast<RealType>(ii);
+ ai *= as;
+ } // while( true )
+
+ return val;
+ } // RealType owens_t_T4(const RealType h, const RealType a, const unsigned short m)
+
+ // compute the value of Owen's T function with method T5 from the reference paper
+ template<typename RealType>
+ inline RealType owens_t_T5_imp(const RealType h, const RealType a, const mpl::int_<53>&)
+ {
+ BOOST_MATH_STD_USING
+ /*
+ NOTICE:
+ - The pts[] array contains the squares (!) of the abscissas, i.e. the roots of the Legendre
+ polynomial P_n(x), instead of the plain roots as required in Gauss-Legendre
+ quadrature, because T5(h,a,m) contains only x^2 terms.
+ - The wts[] array contains the weights for Gauss-Legendre quadrature scaled with a factor
+ of 1/(2*pi) according to T5(h,a,m).
+ */
+
+ const unsigned short m = 13;
+ static const RealType pts[] = {0.35082039676451715489E-02,
+ 0.31279042338030753740E-01, 0.85266826283219451090E-01,
+ 0.16245071730812277011, 0.25851196049125434828,
+ 0.36807553840697533536, 0.48501092905604697475,
+ 0.60277514152618576821, 0.71477884217753226516,
+ 0.81475510988760098605, 0.89711029755948965867,
+ 0.95723808085944261843, 0.99178832974629703586};
+ static const RealType wts[] = { 0.18831438115323502887E-01,
+ 0.18567086243977649478E-01, 0.18042093461223385584E-01,
+ 0.17263829606398753364E-01, 0.16243219975989856730E-01,
+ 0.14994592034116704829E-01, 0.13535474469662088392E-01,
+ 0.11886351605820165233E-01, 0.10070377242777431897E-01,
+ 0.81130545742299586629E-02, 0.60419009528470238773E-02,
+ 0.38862217010742057883E-02, 0.16793031084546090448E-02};
+
+ const RealType as = a*a;
+ const RealType hs = -h*h*boost::math::constants::half<RealType>();
+
+ RealType val = 0;
+ for(unsigned short i = 0; i < m; ++i)
+ {
+ BOOST_ASSERT(i < 13);
+ const RealType r = static_cast<RealType>(1) + as*pts[i];
+ val += wts[i] * exp( hs*r ) / r;
+ } // for(unsigned short i = 0; i < m; ++i)
+
+ return val*a;
+ } // RealType owens_t_T5(const RealType h, const RealType a)
+
+ // compute the value of Owen's T function with method T5 from the reference paper
+ template<typename RealType>
+ inline RealType owens_t_T5_imp(const RealType h, const RealType a, const mpl::int_<64>&)
+ {
+ BOOST_MATH_STD_USING
+ /*
+ NOTICE:
+ - The pts[] array contains the squares (!) of the abscissas, i.e. the roots of the Legendre
+ polynomial P_n(x), instead of the plain roots as required in Gauss-Legendre
+ quadrature, because T5(h,a,m) contains only x^2 terms.
+ - The wts[] array contains the weights for Gauss-Legendre quadrature scaled with a factor
+ of 1/(2*pi) according to T5(h,a,m).
+ */
+
+ const unsigned short m = 19;
+ static const RealType pts[] = {
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.0016634282895983227941),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.014904509242697054183),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.04103478879005817919),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.079359853513391511008),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.1288612130237615133),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.18822336642448518856),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.25586876186122962384),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.32999972011807857222),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.40864620815774761438),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.48971819306044782365),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.57106118513245543894),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.6505134942981533829),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.72596367859928091618),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.79540665919549865924),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.85699701386308739244),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.90909804422384697594),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.95032536436570154409),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.97958418733152273717),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.99610366384229088321)
+ };
+ static const RealType wts[] = {
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.012975111395684900835),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.012888764187499150078),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.012716644398857307844),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.012459897461364705691),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.012120231988292330388),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.011699908404856841158),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.011201723906897224448),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.010628993848522759853),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.0099855296835573320047),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.0092756136096132857933),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.0085039700881139589055),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.0076757344408814561254),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.0067964187616556459109),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.005871875456524750363),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.0049082589542498110071),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.0039119870792519721409),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.0028897090921170700834),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.0018483371329504443947),
+ BOOST_MATH_BIG_CONSTANT(RealType, 64, 0.00079623320100438873578)
+ };
+
+ const RealType as = a*a;
+ const RealType hs = -h*h*boost::math::constants::half<RealType>();
+
+ RealType val = 0;
+ for(unsigned short i = 0; i < m; ++i)
+ {
+ BOOST_ASSERT(i < 19);
+ const RealType r = 1 + as*pts[i];
+ val += wts[i] * exp( hs*r ) / r;
+ } // for(unsigned short i = 0; i < m; ++i)
+
+ return val*a;
+ } // RealType owens_t_T5(const RealType h, const RealType a)
+
+ template<class RealType, class Policy>
+ inline RealType owens_t_T5(const RealType h, const RealType a, const Policy&)
+ {
+ typedef typename policies::precision<RealType, Policy>::type precision_type;
+ typedef typename mpl::if_<
+ mpl::or_<
+ mpl::less_equal<precision_type, mpl::int_<0> >,
+ mpl::greater<precision_type, mpl::int_<53> >
+ >,
+ mpl::int_<64>,
+ mpl::int_<53>
+ >::type tag_type;
+
+ return owens_t_T5_imp(h, a, tag_type());
+ }
+
+
+ // compute the value of Owen's T function with method T6 from the reference paper
+ template<typename RealType>
+ inline RealType owens_t_T6(const RealType h, const RealType a)
+ {
+ BOOST_MATH_STD_USING
+ using namespace boost::math::constants;
+
+ const RealType normh = owens_t_znorm2( h );
+ const RealType y = static_cast<RealType>(1) - a;
+ const RealType r = atan2(y, static_cast<RealType>(1 + a) );
+
+ RealType val = normh * ( static_cast<RealType>(1) - normh ) * half<RealType>();
+
+ if( r != 0 )
+ val -= r * exp( -y*h*h*half<RealType>()/r ) * one_div_two_pi<RealType>();
+
+ return val;
+ } // RealType owens_t_T6(const RealType h, const RealType a, const unsigned short m)
+
+ template <class T, class Policy>
+ std::pair<T, T> owens_t_T1_accelerated(T h, T a, const Policy& pol)
+ {
+ //
+ // This is the same series as T1, but:
+ // * The Taylor series for atan has been combined with that for T1,
+ // reducing but not eliminating cancellation error.
+ // * The resulting alternating series is then accelerated using method 1
+ // from H. Cohen, F. Rodriguez Villegas, D. Zagier,
+ // "Convergence acceleration of alternating series", Bonn, (1991).
+ //
+ BOOST_MATH_STD_USING
+ static const char* function = "boost::math::owens_t<%1%>(%1%, %1%)";
+ T half_h_h = h * h / 2;
+ T a_pow = a;
+ T aa = a * a;
+ T exp_term = exp(-h * h / 2);
+ T one_minus_dj_sum = exp_term;
+ T sum = a_pow * exp_term;
+ T dj_pow = exp_term;
+ T term = sum;
+ T abs_err;
+ int j = 1;
+
+ //
+ // Normally with this form of series acceleration we can calculate
+ // up front how many terms will be required - based on the assumption
+ // that each term decreases in size by a factor of 3. However,
+ // that assumption does not apply here, as the underlying T1 series can
+ // go quite strongly divergent in the early terms, before strongly
+ // converging later. Various "guestimates" have been tried to take account
+ // of this, but they don't always work.... so instead set "n" to the
+ // largest value that won't cause overflow later, and abort iteration
+ // when the last accelerated term was small enough...
+ //
+ int n;
+ try
+ {
+ n = itrunc(T(tools::log_max_value<T>() / 6));
+ }
+ catch(...)
+ {
+ n = (std::numeric_limits<int>::max)();
+ }
+ n = (std::min)(n, 1500);
+ T d = pow(3 + sqrt(T(8)), n);
+ d = (d + 1 / d) / 2;
+ T b = -1;
+ T c = -d;
+ c = b - c;
+ sum *= c;
+ b = -n * n * b * 2;
+ abs_err = ldexp(fabs(sum), -tools::digits<T>());
+
+ while(j < n)
+ {
+ a_pow *= aa;
+ dj_pow *= half_h_h / j;
+ one_minus_dj_sum += dj_pow;
+ term = one_minus_dj_sum * a_pow / (2 * j + 1);
+ c = b - c;
+ sum += c * term;
+ abs_err += ldexp((std::max)(T(fabs(sum)), T(fabs(c*term))), -tools::digits<T>());
+ b = (j + n) * (j - n) * b / ((j + T(0.5)) * (j + 1));
+ ++j;
+ //
+ // Include an escape route to prevent calculating too many terms:
+ //
+ if((j > 10) && (fabs(sum * tools::epsilon<T>()) > fabs(c * term)))
+ break;
+ }
+ abs_err += fabs(c * term);
+ if(sum < 0) // sum must always be positive, if it's negative something really bad has happend:
+ policies::raise_evaluation_error(function, 0, T(0), pol);
+ return std::pair<T, T>((sum / d) / boost::math::constants::two_pi<T>(), abs_err / sum);
+ }
+
+ template<typename RealType, class Policy>
+ inline RealType owens_t_T2(const RealType h, const RealType a, const unsigned short m, const RealType ah, const Policy&, const mpl::true_&)
+ {
+ BOOST_MATH_STD_USING
+ using namespace boost::math::constants;
+
+ const unsigned short maxii = m+m+1;
+ const RealType hs = h*h;
+ const RealType as = -a*a;
+ const RealType y = static_cast<RealType>(1) / hs;
+
+ unsigned short ii = 1;
+ RealType val = 0;
+ RealType vi = a * exp( -ah*ah*half<RealType>() ) / root_two_pi<RealType>();
+ RealType z = owens_t_znorm1(ah)/h;
+ RealType last_z = fabs(z);
+ RealType lim = policies::get_epsilon<RealType, Policy>();
+
+ while( true )
+ {
+ val += z;
+ //
+ // This series stops converging after a while, so put a limit
+ // on how far we go before returning our best guess:
+ //
+ if((fabs(lim * val) > fabs(z)) || ((ii > maxii) && (fabs(z) > last_z)) || (z == 0))
+ {
+ val *= exp( -hs*half<RealType>() ) / root_two_pi<RealType>();
+ break;
+ } // if( maxii <= ii )
+ last_z = fabs(z);
+ z = y * ( vi - static_cast<RealType>(ii) * z );
+ vi *= as;
+ ii += 2;
+ } // while( true )
+
+ return val;
+ } // RealType owens_t_T2(const RealType h, const RealType a, const unsigned short m, const RealType ah)
+
+ template<typename RealType, class Policy>
+ inline std::pair<RealType, RealType> owens_t_T2_accelerated(const RealType h, const RealType a, const RealType ah, const Policy&)
+ {
+ //
+ // This is the same series as T2, but with acceleration applied.
+ // Note that we have to be *very* careful to check that nothing bad
+ // has happened during evaluation - this series will go divergent
+ // and/or fail to alternate at a drop of a hat! :-(
+ //
+ BOOST_MATH_STD_USING
+ using namespace boost::math::constants;
+
+ const RealType hs = h*h;
+ const RealType as = -a*a;
+ const RealType y = static_cast<RealType>(1) / hs;
+
+ unsigned short ii = 1;
+ RealType val = 0;
+ RealType vi = a * exp( -ah*ah*half<RealType>() ) / root_two_pi<RealType>();
+ RealType z = boost::math::detail::owens_t_znorm1(ah)/h;
+ RealType last_z = fabs(z);
+
+ //
+ // Normally with this form of series acceleration we can calculate
+ // up front how many terms will be required - based on the assumption
+ // that each term decreases in size by a factor of 3. However,
+ // that assumption does not apply here, as the underlying T1 series can
+ // go quite strongly divergent in the early terms, before strongly
+ // converging later. Various "guestimates" have been tried to take account
+ // of this, but they don't always work.... so instead set "n" to the
+ // largest value that won't cause overflow later, and abort iteration
+ // when the last accelerated term was small enough...
+ //
+ int n;
+ try
+ {
+ n = itrunc(RealType(tools::log_max_value<RealType>() / 6));
+ }
+ catch(...)
+ {
+ n = (std::numeric_limits<int>::max)();
+ }
+ n = (std::min)(n, 1500);
+ RealType d = pow(3 + sqrt(RealType(8)), n);
+ d = (d + 1 / d) / 2;
+ RealType b = -1;
+ RealType c = -d;
+ int s = 1;
+
+ for(int k = 0; k < n; ++k)
+ {
+ //
+ // Check for both convergence and whether the series has gone bad:
+ //
+ if(
+ (fabs(z) > last_z) // Series has gone divergent, abort
+ || (fabs(val) * tools::epsilon<RealType>() > fabs(c * s * z)) // Convergence!
+ || (z * s < 0) // Series has stopped alternating - all bets are off - abort.
+ )
+ {
+ break;
+ }
+ c = b - c;
+ val += c * s * z;
+ b = (k + n) * (k - n) * b / ((k + RealType(0.5)) * (k + 1));
+ last_z = fabs(z);
+ s = -s;
+ z = y * ( vi - static_cast<RealType>(ii) * z );
+ vi *= as;
+ ii += 2;
+ } // while( true )
+ RealType err = fabs(c * z) / val;
+ return std::pair<RealType, RealType>(val * exp( -hs*half<RealType>() ) / (d * root_two_pi<RealType>()), err);
+ } // RealType owens_t_T2_accelerated(const RealType h, const RealType a, const RealType ah, const Policy&)
+
+ template<typename RealType, typename Policy>
+ inline RealType T4_mp(const RealType h, const RealType a, const Policy& pol)
+ {
+ BOOST_MATH_STD_USING
+
+ const RealType hs = h*h;
+ const RealType as = -a*a;
+
+ unsigned short ii = 1;
+ RealType ai = constants::one_div_two_pi<RealType>() * a * exp( -0.5*hs*(1.0-as) );
+ RealType yi = 1.0;
+ RealType val = 0.0;
+
+ RealType lim = boost::math::policies::get_epsilon<RealType, Policy>();
+
+ while( true )
+ {
+ RealType term = ai*yi;
+ val += term;
+ if((yi != 0) && (fabs(val * lim) > fabs(term)))
+ break;
+ ii += 2;
+ yi = (1.0-hs*yi) / static_cast<RealType>(ii);
+ ai *= as;
+ if(ii > (std::min)(1500, (int)policies::get_max_series_iterations<Policy>()))
+ policies::raise_evaluation_error("boost::math::owens_t<%1%>", 0, val, pol);
+ } // while( true )
+
+ return val;
+ } // arg_type owens_t_T4(const arg_type h, const arg_type a, const unsigned short m)
+
+
+ // This routine dispatches the call to one of six subroutines, depending on the values
+ // of h and a.
+ // preconditions: h >= 0, 0<=a<=1, ah=a*h
+ //
+ // Note there are different versions for different precisions....
+ template<typename RealType, typename Policy>
+ inline RealType owens_t_dispatch(const RealType h, const RealType a, const RealType ah, const Policy& pol, mpl::int_<64> const&)
+ {
+ // Simple main case for 64-bit precision or less, this is as per the Patefield-Tandy paper:
+ BOOST_MATH_STD_USING
+ //
+ // Handle some special cases first, these are from
+ // page 1077 of Owen's original paper:
+ //
+ if(h == 0)
+ {
+ return atan(a) * constants::one_div_two_pi<RealType>();
+ }
+ if(a == 0)
+ {
+ return 0;
+ }
+ if(a == 1)
+ {
+ return owens_t_znorm2(RealType(-h)) * owens_t_znorm2(h) / 2;
+ }
+ if(a >= tools::max_value<RealType>())
+ {
+ return owens_t_znorm2(RealType(fabs(h)));
+ }
+ RealType val = 0; // avoid compiler warnings, 0 will be overwritten in any case
+ const unsigned short icode = owens_t_compute_code(h, a);
+ const unsigned short m = owens_t_get_order(icode, val /* just a dummy for the type */, pol);
+ static const unsigned short meth[] = {1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 4, 4, 4, 4, 5, 6}; // 18 entries
+
+ // determine the appropriate method, T1 ... T6
+ switch( meth[icode] )
+ {
+ case 1: // T1
+ val = owens_t_T1(h,a,m);
+ break;
+ case 2: // T2
+ typedef typename policies::precision<RealType, Policy>::type precision_type;
+ typedef mpl::bool_<(precision_type::value == 0) || (precision_type::value > 64)> tag_type;
+ val = owens_t_T2(h, a, m, ah, pol, tag_type());
+ break;
+ case 3: // T3
+ val = owens_t_T3(h,a,ah, pol);
+ break;
+ case 4: // T4
+ val = owens_t_T4(h,a,m);
+ break;
+ case 5: // T5
+ val = owens_t_T5(h,a, pol);
+ break;
+ case 6: // T6
+ val = owens_t_T6(h,a);
+ break;
+ default:
+ BOOST_THROW_EXCEPTION(std::logic_error("selection routine in Owen's T function failed"));
+ }
+ return val;
+ }
+
+ template<typename RealType, typename Policy>
+ inline RealType owens_t_dispatch(const RealType h, const RealType a, const RealType ah, const Policy& pol, const mpl::int_<65>&)
+ {
+ // Arbitrary precision version:
+ BOOST_MATH_STD_USING
+ //
+ // Handle some special cases first, these are from
+ // page 1077 of Owen's original paper:
+ //
+ if(h == 0)
+ {
+ return atan(a) * constants::one_div_two_pi<RealType>();
+ }
+ if(a == 0)
+ {
+ return 0;
+ }
+ if(a == 1)
+ {
+ return owens_t_znorm2(RealType(-h)) * owens_t_znorm2(h) / 2;
+ }
+ if(a >= tools::max_value<RealType>())
+ {
+ return owens_t_znorm2(RealType(fabs(h)));
+ }
+ // Attempt arbitrary precision code, this will throw if it goes wrong:
+ typedef typename boost::math::policies::normalise<Policy, boost::math::policies::evaluation_error<> >::type forwarding_policy;
+ std::pair<RealType, RealType> p1(0, tools::max_value<RealType>()), p2(0, tools::max_value<RealType>());
+ RealType target_precision = policies::get_epsilon<RealType, Policy>() * 1000;
+ bool have_t1(false), have_t2(false);
+ if(ah < 3)
+ {
+ try
+ {
+ have_t1 = true;
+ p1 = owens_t_T1_accelerated(h, a, forwarding_policy());
+ if(p1.second < target_precision)
+ return p1.first;
+ }
+ catch(const boost::math::evaluation_error&){} // T1 may fail and throw, that's OK
+ }
+ if(ah > 1)
+ {
+ try
+ {
+ have_t2 = true;
+ p2 = owens_t_T2_accelerated(h, a, ah, forwarding_policy());
+ if(p2.second < target_precision)
+ return p2.first;
+ }
+ catch(const boost::math::evaluation_error&){} // T2 may fail and throw, that's OK
+ }
+ //
+ // If we haven't tried T1 yet, do it now - sometimes it succeeds and the number of iterations
+ // is fairly low compared to T4.
+ //
+ if(!have_t1)
+ {
+ try
+ {
+ have_t1 = true;
+ p1 = owens_t_T1_accelerated(h, a, forwarding_policy());
+ if(p1.second < target_precision)
+ return p1.first;
+ }
+ catch(const boost::math::evaluation_error&){} // T1 may fail and throw, that's OK
+ }
+ //
+ // If we haven't tried T2 yet, do it now - sometimes it succeeds and the number of iterations
+ // is fairly low compared to T4.
+ //
+ if(!have_t2)
+ {
+ try
+ {
+ have_t2 = true;
+ p2 = owens_t_T2_accelerated(h, a, ah, forwarding_policy());
+ if(p2.second < target_precision)
+ return p2.first;
+ }
+ catch(const boost::math::evaluation_error&){} // T2 may fail and throw, that's OK
+ }
+ //
+ // OK, nothing left to do but try the most expensive option which is T4,
+ // this is often slow to converge, but when it does converge it tends to
+ // be accurate:
+ try
+ {
+ return T4_mp(h, a, pol);
+ }
+ catch(const boost::math::evaluation_error&){} // T4 may fail and throw, that's OK
+ //
+ // Now look back at the results from T1 and T2 and see if either gave better
+ // results than we could get from the 64-bit precision versions.
+ //
+ if((std::min)(p1.second, p2.second) < 1e-20)
+ {
+ return p1.second < p2.second ? p1.first : p2.first;
+ }
+ //
+ // We give up - no arbitrary precision versions succeeded!
+ //
+ return owens_t_dispatch(h, a, ah, pol, mpl::int_<64>());
+ } // RealType owens_t_dispatch(RealType h, RealType a, RealType ah)
+ template<typename RealType, typename Policy>
+ inline RealType owens_t_dispatch(const RealType h, const RealType a, const RealType ah, const Policy& pol, const mpl::int_<0>&)
+ {
+ // We don't know what the precision is until runtime:
+ if(tools::digits<RealType>() <= 64)
+ return owens_t_dispatch(h, a, ah, pol, mpl::int_<64>());
+ return owens_t_dispatch(h, a, ah, pol, mpl::int_<65>());
+ }
+ template<typename RealType, typename Policy>
+ inline RealType owens_t_dispatch(const RealType h, const RealType a, const RealType ah, const Policy& pol)
+ {
+ // Figure out the precision and forward to the correct version:
+ typedef typename policies::precision<RealType, Policy>::type precision_type;
+ typedef typename mpl::if_c<
+ precision_type::value == 0,
+ mpl::int_<0>,
+ typename mpl::if_c<
+ precision_type::value <= 64,
+ mpl::int_<64>,
+ mpl::int_<65>
+ >::type
+ >::type tag_type;
+ return owens_t_dispatch(h, a, ah, pol, tag_type());
+ }
+ // compute Owen's T function, T(h,a), for arbitrary values of h and a
+ template<typename RealType, class Policy>
+ inline RealType owens_t(RealType h, RealType a, const Policy& pol)
+ {
+ BOOST_MATH_STD_USING
+ // exploit that T(-h,a) == T(h,a)
+ h = fabs(h);
+
+ // Use equation (2) in the paper to remap the arguments
+ // such that h>=0 and 0<=a<=1 for the call of the actual
+ // computation routine.
+
+ const RealType fabs_a = fabs(a);
+ const RealType fabs_ah = fabs_a*h;
+
+ RealType val = 0.0; // avoid compiler warnings, 0.0 will be overwritten in any case
+
+ if(fabs_a <= 1)
+ {
+ val = owens_t_dispatch(h, fabs_a, fabs_ah, pol);
+ } // if(fabs_a <= 1.0)
+ else
+ {
+ if( h <= 0.67 )
+ {
+ const RealType normh = owens_t_znorm1(h);
+ const RealType normah = owens_t_znorm1(fabs_ah);
+ val = static_cast<RealType>(1)/static_cast<RealType>(4) - normh*normah -
+ owens_t_dispatch(fabs_ah, static_cast<RealType>(1 / fabs_a), h, pol);
+ } // if( h <= 0.67 )
+ else
+ {
+ const RealType normh = detail::owens_t_znorm2(h);
+ const RealType normah = detail::owens_t_znorm2(fabs_ah);
+ val = constants::half<RealType>()*(normh+normah) - normh*normah -
+ owens_t_dispatch(fabs_ah, static_cast<RealType>(1 / fabs_a), h, pol);
+ } // else [if( h <= 0.67 )]
+ } // else [if(fabs_a <= 1)]
+
+ // exploit that T(h,-a) == -T(h,a)
+ if(a < 0)
+ {
+ return -val;
+ } // if(a < 0)
+
+ return val;
+ } // RealType owens_t(RealType h, RealType a)
+
+ template <class T, class Policy, class tag>
+ struct owens_t_initializer
+ {
+ struct init
+ {
+ init()
+ {
+ do_init(tag());
+ }
+ template <int N>
+ static void do_init(const mpl::int_<N>&){}
+ static void do_init(const mpl::int_<64>&)
+ {
+ boost::math::owens_t(static_cast<T>(7), static_cast<T>(0.96875), Policy());
+ boost::math::owens_t(static_cast<T>(2), static_cast<T>(0.5), Policy());
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+ };
+
+ template <class T, class Policy, class tag>
+ const typename owens_t_initializer<T, Policy, tag>::init owens_t_initializer<T, Policy, tag>::initializer;
+
+ } // namespace detail
+
+ template <class T1, class T2, class Policy>
+ inline typename tools::promote_args<T1, T2>::type owens_t(T1 h, T2 a, const Policy& pol)
+ {
+ typedef typename tools::promote_args<T1, T2>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::precision<value_type, Policy>::type precision_type;
+ typedef typename mpl::if_c<
+ precision_type::value == 0,
+ mpl::int_<0>,
+ typename mpl::if_c<
+ precision_type::value <= 64,
+ mpl::int_<64>,
+ mpl::int_<65>
+ >::type
+ >::type tag_type;
+
+ detail::owens_t_initializer<result_type, Policy, tag_type>::force_instantiate();
+
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::owens_t(static_cast<value_type>(h), static_cast<value_type>(a), pol), "boost::math::owens_t<%1%>(%1%,%1%)");
+ }
+
+ template <class T1, class T2>
+ inline typename tools::promote_args<T1, T2>::type owens_t(T1 h, T2 a)
+ {
+ return owens_t(h, a, policies::policy<>());
+ }
+
+
+ } // namespace math
+} // namespace boost
+
+#endif
+// EOF
--- /dev/null
+// Boost pow.hpp header file
+// Computes a power with exponent known at compile-time
+
+// (C) Copyright Bruno Lalande 2008.
+// 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)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+#ifndef BOOST_MATH_POW_HPP
+#define BOOST_MATH_POW_HPP
+
+
+#include <boost/math/policies/policy.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/tools/promotion.hpp>
+#include <boost/mpl/greater_equal.hpp>
+
+
+namespace boost {
+namespace math {
+
+
+namespace detail {
+
+
+template <int N, int M = N%2>
+struct positive_power
+{
+ template <typename T>
+ static T result(T base)
+ {
+ T power = positive_power<N/2>::result(base);
+ return power * power;
+ }
+};
+
+template <int N>
+struct positive_power<N, 1>
+{
+ template <typename T>
+ static T result(T base)
+ {
+ T power = positive_power<N/2>::result(base);
+ return base * power * power;
+ }
+};
+
+template <>
+struct positive_power<1, 1>
+{
+ template <typename T>
+ static T result(T base){ return base; }
+};
+
+
+template <int N, bool>
+struct power_if_positive
+{
+ template <typename T, class Policy>
+ static T result(T base, const Policy&)
+ { return positive_power<N>::result(base); }
+};
+
+template <int N>
+struct power_if_positive<N, false>
+{
+ template <typename T, class Policy>
+ static T result(T base, const Policy& policy)
+ {
+ if (base == 0)
+ {
+ return policies::raise_overflow_error<T>(
+ "boost::math::pow(%1%)",
+ "Attempted to compute a negative power of 0",
+ policy
+ );
+ }
+
+ return T(1) / positive_power<-N>::result(base);
+ }
+};
+
+template <>
+struct power_if_positive<0, true>
+{
+ template <typename T, class Policy>
+ static T result(T base, const Policy& policy)
+ {
+ if (base == 0)
+ {
+ return policies::raise_indeterminate_result_error<T>(
+ "boost::math::pow(%1%)",
+ "The result of pow<0>(%1%) is undetermined",
+ base,
+ T(1),
+ policy
+ );
+ }
+
+ return T(1);
+ }
+};
+
+
+template <int N>
+struct select_power_if_positive
+{
+ typedef typename mpl::greater_equal<
+ mpl::int_<N>,
+ mpl::int_<0>
+ >::type is_positive;
+
+ typedef power_if_positive<N, is_positive::value> type;
+};
+
+
+} // namespace detail
+
+
+template <int N, typename T, class Policy>
+inline typename tools::promote_args<T>::type pow(T base, const Policy& policy)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ return detail::select_power_if_positive<N>::type::result(static_cast<result_type>(base), policy);
+}
+
+
+template <int N, typename T>
+inline typename tools::promote_args<T>::type pow(T base)
+{ return pow<N>(base, policies::policy<>()); }
+
+
+} // namespace math
+} // namespace boost
+
+
+#endif
--- /dev/null
+// Copyright John Maddock 2007.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_ROUND_HPP
+#define BOOST_MATH_ROUND_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/config.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/special_functions/fpclassify.hpp>
+
+namespace boost{ namespace math{
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type round(const T& v, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ typedef typename tools::promote_args<T>::type result_type;
+ if(!(boost::math::isfinite)(v))
+ return policies::raise_rounding_error("boost::math::round<%1%>(%1%)", 0, static_cast<result_type>(v), static_cast<result_type>(v), pol);
+ return v < 0 ? static_cast<result_type>(ceil(v - 0.5f)) : static_cast<result_type>(floor(v + 0.5f));
+}
+template <class T>
+inline typename tools::promote_args<T>::type round(const T& v)
+{
+ return round(v, policies::policy<>());
+}
+//
+// The following functions will not compile unless T has an
+// implicit convertion to the integer types. For user-defined
+// number types this will likely not be the case. In that case
+// these functions should either be specialized for the UDT in
+// question, or else overloads should be placed in the same
+// namespace as the UDT: these will then be found via argument
+// dependent lookup. See our concept archetypes for examples.
+//
+template <class T, class Policy>
+inline int iround(const T& v, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ T r = boost::math::round(v, pol);
+ if((r > (std::numeric_limits<int>::max)()) || (r < (std::numeric_limits<int>::min)()))
+ return static_cast<int>(policies::raise_rounding_error("boost::math::iround<%1%>(%1%)", 0, v, 0, pol));
+ return static_cast<int>(r);
+}
+template <class T>
+inline int iround(const T& v)
+{
+ return iround(v, policies::policy<>());
+}
+
+template <class T, class Policy>
+inline long lround(const T& v, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ T r = boost::math::round(v, pol);
+ if((r > (std::numeric_limits<long>::max)()) || (r < (std::numeric_limits<long>::min)()))
+ return static_cast<long int>(policies::raise_rounding_error("boost::math::lround<%1%>(%1%)", 0, v, 0L, pol));
+ return static_cast<long int>(r);
+}
+template <class T>
+inline long lround(const T& v)
+{
+ return lround(v, policies::policy<>());
+}
+
+#ifdef BOOST_HAS_LONG_LONG
+
+template <class T, class Policy>
+inline boost::long_long_type llround(const T& v, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ T r = boost::math::round(v, pol);
+ if((r > (std::numeric_limits<boost::long_long_type>::max)()) || (r < (std::numeric_limits<boost::long_long_type>::min)()))
+ return static_cast<boost::long_long_type>(policies::raise_rounding_error("boost::math::llround<%1%>(%1%)", 0, v, static_cast<boost::long_long_type>(0), pol));
+ return static_cast<boost::long_long_type>(r);
+}
+template <class T>
+inline boost::long_long_type llround(const T& v)
+{
+ return llround(v, policies::policy<>());
+}
+
+#endif
+
+}} // namespaces
+
+#endif // BOOST_MATH_ROUND_HPP
// (C) Copyright John Maddock 2006.
+// (C) Copyright Johan Rade 2006.
+// (C) Copyright Paul A. Bristow 2011 (added changesign).
+
// Use, modification and distribution are subject to 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)
namespace detail {
+ // signbit
+
#ifdef BOOST_MATH_USE_STD_FPCLASSIFY
template<class T>
inline int signbit_impl(T x, native_tag const&)
return a & traits::sign ? 1 : 0;
}
+
+ // Changesign
+
+ template<class T>
+ inline T (changesign_impl)(T x, generic_tag<true> const&)
+ {
+ return -x;
+ }
+
+ template<class T>
+ inline T (changesign_impl)(T x, generic_tag<false> const&)
+ {
+ return -x;
+ }
+
+
+ template<class T>
+ inline T changesign_impl(T x, ieee_copy_all_bits_tag const&)
+ {
+ typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::sign_change_type traits;
+
+ BOOST_DEDUCED_TYPENAME traits::bits a;
+ traits::get_bits(x,a);
+ a ^= traits::sign;
+ traits::set_bits(x,a);
+ return x;
+ }
+
+ template<class T>
+ inline T (changesign_impl)(T x, ieee_copy_leading_bits_tag const&)
+ {
+ typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::sign_change_type traits;
+
+ BOOST_DEDUCED_TYPENAME traits::bits a;
+ traits::get_bits(x,a);
+ a ^= traits::sign;
+ traits::set_bits(x,a);
+ return x;
+ }
+
+
} // namespace detail
template<class T> int (signbit)(T x)
-{ //!< \brief return true if floating-point type t is NaN (Not A Number).
+{
typedef typename detail::fp_traits<T>::type traits;
typedef typename traits::method method;
- typedef typename boost::is_floating_point<T>::type fp_tag;
- return detail::signbit_impl(x, method());
+ // typedef typename boost::is_floating_point<T>::type fp_tag;
+ typedef typename tools::promote_args_permissive<T>::type result_type;
+ return detail::signbit_impl(static_cast<result_type>(x), method());
}
template <class T>
return (z == 0) ? 0 : (boost::math::signbit)(z) ? -1 : 1;
}
-template <class T>
-inline T copysign BOOST_NO_MACRO_EXPAND(const T& x, const T& y)
+template <class T> typename tools::promote_args_permissive<T>::type (changesign)(const T& x)
+{ //!< \brief return unchanged binary pattern of x, except for change of sign bit.
+ typedef typename detail::fp_traits<T>::sign_change_type traits;
+ typedef typename traits::method method;
+ // typedef typename boost::is_floating_point<T>::type fp_tag;
+ typedef typename tools::promote_args_permissive<T>::type result_type;
+
+ return detail::changesign_impl(static_cast<result_type>(x), method());
+}
+
+template <class T, class U>
+inline typename tools::promote_args_permissive<T, U>::type
+ copysign BOOST_NO_MACRO_EXPAND(const T& x, const U& y)
{
BOOST_MATH_STD_USING
- return fabs(x) * ((boost::math::signbit)(y) ? -1 : 1);
+ typedef typename tools::promote_args_permissive<T, U>::type result_type;
+ return (boost::math::signbit)(static_cast<result_type>(x)) != (boost::math::signbit)(static_cast<result_type>(y))
+ ? (boost::math::changesign)(static_cast<result_type>(x)) : static_cast<result_type>(x);
}
} // namespace math
--- /dev/null
+// Copyright (c) 2007 John Maddock
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SIN_PI_HPP
+#define BOOST_MATH_SIN_PI_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/math/tools/config.hpp>
+#include <boost/math/special_functions/trunc.hpp>
+#include <boost/math/tools/promotion.hpp>
+#include <boost/math/constants/constants.hpp>
+
+namespace boost{ namespace math{ namespace detail{
+
+template <class T, class Policy>
+T sin_pi_imp(T x, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std names
+ if(x < 0)
+ return -sin_pi(-x);
+ // sin of pi*x:
+ bool invert;
+ if(x < 0.5)
+ return sin(constants::pi<T>() * x);
+ if(x < 1)
+ {
+ invert = true;
+ x = -x;
+ }
+ else
+ invert = false;
+
+ T rem = floor(x);
+ if(itrunc(rem, pol) & 1)
+ invert = !invert;
+ rem = x - rem;
+ if(rem > 0.5f)
+ rem = 1 - rem;
+ if(rem == 0.5f)
+ return static_cast<T>(invert ? -1 : 1);
+
+ rem = sin(constants::pi<T>() * rem);
+ return invert ? T(-rem) : rem;
+}
+
+} // namespace detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type sin_pi(T x, const Policy& pol)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ return boost::math::detail::sin_pi_imp<result_type>(x, pol);
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type sin_pi(T x)
+{
+ return boost::math::sin_pi(x, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+#endif
+
--- /dev/null
+// boost sinc.hpp header file
+
+// (C) Copyright Hubert Holin 2001.
+// 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)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_SINC_HPP
+#define BOOST_SINC_HPP
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/config.hpp>
+#include <boost/math/tools/precision.hpp>
+#include <boost/math/policies/policy.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/limits.hpp>
+#include <string>
+#include <stdexcept>
+
+
+#include <boost/config.hpp>
+
+
+// These are the the "Sinus Cardinal" functions.
+
+namespace boost
+{
+ namespace math
+ {
+ namespace detail
+ {
+ // This is the "Sinus Cardinal" of index Pi.
+
+ template<typename T>
+ inline T sinc_pi_imp(const T x)
+ {
+ BOOST_MATH_STD_USING
+
+ T const taylor_0_bound = tools::epsilon<T>();
+ T const taylor_2_bound = tools::root_epsilon<T>();
+ T const taylor_n_bound = tools::forth_root_epsilon<T>();
+
+ if (abs(x) >= taylor_n_bound)
+ {
+ return(sin(x)/x);
+ }
+ else
+ {
+ // approximation by taylor series in x at 0 up to order 0
+ T result = static_cast<T>(1);
+
+ if (abs(x) >= taylor_0_bound)
+ {
+ T x2 = x*x;
+
+ // approximation by taylor series in x at 0 up to order 2
+ result -= x2/static_cast<T>(6);
+
+ if (abs(x) >= taylor_2_bound)
+ {
+ // approximation by taylor series in x at 0 up to order 4
+ result += (x2*x2)/static_cast<T>(120);
+ }
+ }
+
+ return(result);
+ }
+ }
+
+ } // namespace detail
+
+ template <class T>
+ inline typename tools::promote_args<T>::type sinc_pi(T x)
+ {
+ typedef typename tools::promote_args<T>::type result_type;
+ return detail::sinc_pi_imp(static_cast<result_type>(x));
+ }
+
+ template <class T, class Policy>
+ inline typename tools::promote_args<T>::type sinc_pi(T x, const Policy&)
+ {
+ typedef typename tools::promote_args<T>::type result_type;
+ return detail::sinc_pi_imp(static_cast<result_type>(x));
+ }
+
+#ifndef BOOST_NO_TEMPLATE_TEMPLATES
+ template<typename T, template<typename> class U>
+ inline U<T> sinc_pi(const U<T> x)
+ {
+ BOOST_MATH_STD_USING
+ using ::std::numeric_limits;
+
+ T const taylor_0_bound = tools::epsilon<T>();
+ T const taylor_2_bound = tools::root_epsilon<T>();
+ T const taylor_n_bound = tools::forth_root_epsilon<T>();
+
+ if (abs(x) >= taylor_n_bound)
+ {
+ return(sin(x)/x);
+ }
+ else
+ {
+ // approximation by taylor series in x at 0 up to order 0
+#ifdef __MWERKS__
+ U<T> result = static_cast<U<T> >(1);
+#else
+ U<T> result = U<T>(1);
+#endif
+
+ if (abs(x) >= taylor_0_bound)
+ {
+ U<T> x2 = x*x;
+
+ // approximation by taylor series in x at 0 up to order 2
+ result -= x2/static_cast<T>(6);
+
+ if (abs(x) >= taylor_2_bound)
+ {
+ // approximation by taylor series in x at 0 up to order 4
+ result += (x2*x2)/static_cast<T>(120);
+ }
+ }
+
+ return(result);
+ }
+ }
+
+ template<typename T, template<typename> class U, class Policy>
+ inline U<T> sinc_pi(const U<T> x, const Policy&)
+ {
+ return sinc_pi(x);
+ }
+#endif /* BOOST_NO_TEMPLATE_TEMPLATES */
+ }
+}
+
+#endif /* BOOST_SINC_HPP */
+
--- /dev/null
+// boost sinhc.hpp header file
+
+// (C) Copyright Hubert Holin 2001.
+// 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)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_SINHC_HPP
+#define BOOST_SINHC_HPP
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/config.hpp>
+#include <boost/math/tools/precision.hpp>
+#include <boost/math/special_functions/math_fwd.hpp>
+#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/limits.hpp>
+#include <string>
+#include <stdexcept>
+
+#include <boost/config.hpp>
+
+
+// These are the the "Hyperbolic Sinus Cardinal" functions.
+
+namespace boost
+{
+ namespace math
+ {
+ namespace detail
+ {
+#if defined(__GNUC__) && (__GNUC__ < 3)
+ // gcc 2.x ignores function scope using declarations,
+ // put them in the scope of the enclosing namespace instead:
+
+ using ::std::abs;
+ using ::std::sqrt;
+ using ::std::sinh;
+
+ using ::std::numeric_limits;
+#endif /* defined(__GNUC__) && (__GNUC__ < 3) */
+
+ // This is the "Hyperbolic Sinus Cardinal" of index Pi.
+
+ template<typename T>
+ inline T sinhc_pi_imp(const T x)
+ {
+#if defined(BOOST_NO_STDC_NAMESPACE) && !defined(__SUNPRO_CC)
+ using ::abs;
+ using ::sinh;
+ using ::sqrt;
+#else /* BOOST_NO_STDC_NAMESPACE */
+ using ::std::abs;
+ using ::std::sinh;
+ using ::std::sqrt;
+#endif /* BOOST_NO_STDC_NAMESPACE */
+
+ static T const taylor_0_bound = tools::epsilon<T>();
+ static T const taylor_2_bound = sqrt(taylor_0_bound);
+ static T const taylor_n_bound = sqrt(taylor_2_bound);
+
+ if (abs(x) >= taylor_n_bound)
+ {
+ return(sinh(x)/x);
+ }
+ else
+ {
+ // approximation by taylor series in x at 0 up to order 0
+ T result = static_cast<T>(1);
+
+ if (abs(x) >= taylor_0_bound)
+ {
+ T x2 = x*x;
+
+ // approximation by taylor series in x at 0 up to order 2
+ result += x2/static_cast<T>(6);
+
+ if (abs(x) >= taylor_2_bound)
+ {
+ // approximation by taylor series in x at 0 up to order 4
+ result += (x2*x2)/static_cast<T>(120);
+ }
+ }
+
+ return(result);
+ }
+ }
+
+ } // namespace detail
+
+ template <class T>
+ inline typename tools::promote_args<T>::type sinhc_pi(T x)
+ {
+ typedef typename tools::promote_args<T>::type result_type;
+ return detail::sinhc_pi_imp(static_cast<result_type>(x));
+ }
+
+ template <class T, class Policy>
+ inline typename tools::promote_args<T>::type sinhc_pi(T x, const Policy&)
+ {
+ return boost::math::sinhc_pi(x);
+ }
+
+#ifdef BOOST_NO_TEMPLATE_TEMPLATES
+#else /* BOOST_NO_TEMPLATE_TEMPLATES */
+ template<typename T, template<typename> class U>
+ inline U<T> sinhc_pi(const U<T> x)
+ {
+#if defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL) || defined(__GNUC__)
+ using namespace std;
+#elif defined(BOOST_NO_STDC_NAMESPACE) && !defined(__SUNPRO_CC)
+ using ::abs;
+ using ::sinh;
+ using ::sqrt;
+#else /* BOOST_NO_STDC_NAMESPACE */
+ using ::std::abs;
+ using ::std::sinh;
+ using ::std::sqrt;
+#endif /* BOOST_NO_STDC_NAMESPACE */
+
+ using ::std::numeric_limits;
+
+ static T const taylor_0_bound = tools::epsilon<T>();
+ static T const taylor_2_bound = sqrt(taylor_0_bound);
+ static T const taylor_n_bound = sqrt(taylor_2_bound);
+
+ if (abs(x) >= taylor_n_bound)
+ {
+ return(sinh(x)/x);
+ }
+ else
+ {
+ // approximation by taylor series in x at 0 up to order 0
+#ifdef __MWERKS__
+ U<T> result = static_cast<U<T> >(1);
+#else
+ U<T> result = U<T>(1);
+#endif
+
+ if (abs(x) >= taylor_0_bound)
+ {
+ U<T> x2 = x*x;
+
+ // approximation by taylor series in x at 0 up to order 2
+ result += x2/static_cast<T>(6);
+
+ if (abs(x) >= taylor_2_bound)
+ {
+ // approximation by taylor series in x at 0 up to order 4
+ result += (x2*x2)/static_cast<T>(120);
+ }
+ }
+
+ return(result);
+ }
+ }
+#endif /* BOOST_NO_TEMPLATE_TEMPLATES */
+ }
+}
+
+#endif /* BOOST_SINHC_HPP */
+
--- /dev/null
+
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_SPECIAL_SPHERICAL_HARMONIC_HPP
+#define BOOST_MATH_SPECIAL_SPHERICAL_HARMONIC_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/special_functions/legendre.hpp>
+#include <boost/math/tools/workaround.hpp>
+#include <complex>
+
+namespace boost{
+namespace math{
+
+namespace detail{
+
+//
+// Calculates the prefix term that's common to the real
+// and imaginary parts. Does *not* fix up the sign of the result
+// though.
+//
+template <class T, class Policy>
+inline T spherical_harmonic_prefix(unsigned n, unsigned m, T theta, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+
+ if(m > n)
+ return 0;
+
+ T sin_theta = sin(theta);
+ T x = cos(theta);
+
+ T leg = detail::legendre_p_imp(n, m, x, static_cast<T>(pow(fabs(sin_theta), T(m))), pol);
+
+ T prefix = boost::math::tgamma_delta_ratio(static_cast<T>(n - m + 1), static_cast<T>(2 * m), pol);
+ prefix *= (2 * n + 1) / (4 * constants::pi<T>());
+ prefix = sqrt(prefix);
+ return prefix * leg;
+}
+//
+// Real Part:
+//
+template <class T, class Policy>
+T spherical_harmonic_r(unsigned n, int m, T theta, T phi, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std functions
+
+ bool sign = false;
+ if(m < 0)
+ {
+ // Reflect and adjust sign if m < 0:
+ sign = m&1;
+ m = abs(m);
+ }
+ if(m&1)
+ {
+ // Check phase if theta is outside [0, PI]:
+ T mod = boost::math::tools::fmod_workaround(theta, T(2 * constants::pi<T>()));
+ if(mod < 0)
+ mod += 2 * constants::pi<T>();
+ if(mod > constants::pi<T>())
+ sign = !sign;
+ }
+ // Get the value and adjust sign as required:
+ T prefix = spherical_harmonic_prefix(n, m, theta, pol);
+ prefix *= cos(m * phi);
+ return sign ? T(-prefix) : prefix;
+}
+
+template <class T, class Policy>
+T spherical_harmonic_i(unsigned n, int m, T theta, T phi, const Policy& pol)
+{
+ BOOST_MATH_STD_USING // ADL of std functions
+
+ bool sign = false;
+ if(m < 0)
+ {
+ // Reflect and adjust sign if m < 0:
+ sign = !(m&1);
+ m = abs(m);
+ }
+ if(m&1)
+ {
+ // Check phase if theta is outside [0, PI]:
+ T mod = boost::math::tools::fmod_workaround(theta, T(2 * constants::pi<T>()));
+ if(mod < 0)
+ mod += 2 * constants::pi<T>();
+ if(mod > constants::pi<T>())
+ sign = !sign;
+ }
+ // Get the value and adjust sign as required:
+ T prefix = spherical_harmonic_prefix(n, m, theta, pol);
+ prefix *= sin(m * phi);
+ return sign ? T(-prefix) : prefix;
+}
+
+template <class T, class U, class Policy>
+std::complex<T> spherical_harmonic(unsigned n, int m, U theta, U phi, const Policy& pol)
+{
+ BOOST_MATH_STD_USING
+ //
+ // Sort out the signs:
+ //
+ bool r_sign = false;
+ bool i_sign = false;
+ if(m < 0)
+ {
+ // Reflect and adjust sign if m < 0:
+ r_sign = m&1;
+ i_sign = !(m&1);
+ m = abs(m);
+ }
+ if(m&1)
+ {
+ // Check phase if theta is outside [0, PI]:
+ U mod = boost::math::tools::fmod_workaround(theta, U(2 * constants::pi<U>()));
+ if(mod < 0)
+ mod += 2 * constants::pi<U>();
+ if(mod > constants::pi<U>())
+ {
+ r_sign = !r_sign;
+ i_sign = !i_sign;
+ }
+ }
+ //
+ // Calculate the value:
+ //
+ U prefix = spherical_harmonic_prefix(n, m, theta, pol);
+ U r = prefix * cos(m * phi);
+ U i = prefix * sin(m * phi);
+ //
+ // Add in the signs:
+ //
+ if(r_sign)
+ r = -r;
+ if(i_sign)
+ i = -i;
+ static const char* function = "boost::math::spherical_harmonic<%1%>(int, int, %1%, %1%)";
+ return std::complex<T>(policies::checked_narrowing_cast<T, Policy>(r, function), policies::checked_narrowing_cast<T, Policy>(i, function));
+}
+
+} // namespace detail
+
+template <class T1, class T2, class Policy>
+inline std::complex<typename tools::promote_args<T1, T2>::type>
+ spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return detail::spherical_harmonic<result_type, value_type>(n, m, static_cast<value_type>(theta), static_cast<value_type>(phi), pol);
+}
+
+template <class T1, class T2>
+inline std::complex<typename tools::promote_args<T1, T2>::type>
+ spherical_harmonic(unsigned n, int m, T1 theta, T2 phi)
+{
+ return boost::math::spherical_harmonic(n, m, theta, phi, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline typename tools::promote_args<T1, T2>::type
+ spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::spherical_harmonic_r(n, m, static_cast<value_type>(theta), static_cast<value_type>(phi), pol), "bost::math::spherical_harmonic_r<%1%>(unsigned, int, %1%, %1%)");
+}
+
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type
+ spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi)
+{
+ return boost::math::spherical_harmonic_r(n, m, theta, phi, policies::policy<>());
+}
+
+template <class T1, class T2, class Policy>
+inline typename tools::promote_args<T1, T2>::type
+ spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol)
+{
+ typedef typename tools::promote_args<T1, T2>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ return policies::checked_narrowing_cast<result_type, Policy>(detail::spherical_harmonic_i(n, m, static_cast<value_type>(theta), static_cast<value_type>(phi), pol), "boost::math::spherical_harmonic_i<%1%>(unsigned, int, %1%, %1%)");
+}
+
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type
+ spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi)
+{
+ return boost::math::spherical_harmonic_i(n, m, theta, phi, policies::policy<>());
+}
+
+} // namespace math
+} // namespace boost
+
+#endif // BOOST_MATH_SPECIAL_SPHERICAL_HARMONIC_HPP
+
+
+
namespace boost{ namespace math{
template <class T, class Policy>
-inline T trunc(const T& v, const Policy& pol)
+inline typename tools::promote_args<T>::type trunc(const T& v, const Policy& pol)
{
BOOST_MATH_STD_USING
+ typedef typename tools::promote_args<T>::type result_type;
if(!(boost::math::isfinite)(v))
- return policies::raise_rounding_error("boost::math::trunc<%1%>(%1%)", 0, v, pol);
- return (v >= 0) ? static_cast<T>(floor(v)) : static_cast<T>(ceil(v));
+ return policies::raise_rounding_error("boost::math::trunc<%1%>(%1%)", 0, static_cast<result_type>(v), static_cast<result_type>(v), pol);
+ return (v >= 0) ? static_cast<result_type>(floor(v)) : static_cast<result_type>(ceil(v));
}
template <class T>
-inline T trunc(const T& v)
+inline typename tools::promote_args<T>::type trunc(const T& v)
{
return trunc(v, policies::policy<>());
}
inline int itrunc(const T& v, const Policy& pol)
{
BOOST_MATH_STD_USING
- T r = boost::math::trunc(v, pol);
- if(fabs(r) > (std::numeric_limits<int>::max)())
- return static_cast<int>(policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, v, pol));
+ typedef typename tools::promote_args<T>::type result_type;
+ result_type r = boost::math::trunc(v, pol);
+ if((r > (std::numeric_limits<int>::max)()) || (r < (std::numeric_limits<int>::min)()))
+ return static_cast<int>(policies::raise_rounding_error("boost::math::itrunc<%1%>(%1%)", 0, static_cast<result_type>(v), 0, pol));
return static_cast<int>(r);
}
template <class T>
inline long ltrunc(const T& v, const Policy& pol)
{
BOOST_MATH_STD_USING
- T r = boost::math::trunc(v, pol);
- if(fabs(r) > (std::numeric_limits<long>::max)())
- return static_cast<long>(policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, v, pol));
+ typedef typename tools::promote_args<T>::type result_type;
+ result_type r = boost::math::trunc(v, pol);
+ if((r > (std::numeric_limits<long>::max)()) || (r < (std::numeric_limits<long>::min)()))
+ return static_cast<long>(policies::raise_rounding_error("boost::math::ltrunc<%1%>(%1%)", 0, static_cast<result_type>(v), 0L, pol));
return static_cast<long>(r);
}
template <class T>
inline boost::long_long_type lltrunc(const T& v, const Policy& pol)
{
BOOST_MATH_STD_USING
- T r = boost::math::trunc(v, pol);
- if(fabs(r) > (std::numeric_limits<boost::long_long_type>::max)())
- return static_cast<boost::long_long_type>(policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, pol));
+ typedef typename tools::promote_args<T>::type result_type;
+ result_type r = boost::math::trunc(v, pol);
+ if((r > (std::numeric_limits<boost::long_long_type>::max)()) || (r < (std::numeric_limits<boost::long_long_type>::min)()))
+ return static_cast<boost::long_long_type>(policies::raise_rounding_error("boost::math::lltrunc<%1%>(%1%)", 0, v, static_cast<boost::long_long_type>(0), pol));
return static_cast<boost::long_long_type>(r);
}
template <class T>
--- /dev/null
+// Copyright John Maddock 2007.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_ZETA_HPP
+#define BOOST_MATH_ZETA_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/precision.hpp>
+#include <boost/math/tools/series.hpp>
+#include <boost/math/tools/big_constant.hpp>
+#include <boost/math/policies/error_handling.hpp>
+#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/special_functions/sin_pi.hpp>
+
+namespace boost{ namespace math{ namespace detail{
+
+#if 0
+//
+// This code is commented out because we have a better more rapidly converging series
+// now. Retained for future reference and in case the new code causes any issues down the line....
+//
+
+template <class T, class Policy>
+struct zeta_series_cache_size
+{
+ //
+ // Work how large to make our cache size when evaluating the series
+ // evaluation: normally this is just large enough for the series
+ // to have converged, but for arbitrary precision types we need a
+ // really large cache to achieve reasonable precision in a reasonable
+ // time. This is important when constructing rational approximations
+ // to zeta for example.
+ //
+ typedef typename boost::math::policies::precision<T,Policy>::type precision_type;
+ typedef typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<0> >,
+ mpl::int_<5000>,
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<64> >,
+ mpl::int_<70>,
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<113> >,
+ mpl::int_<100>,
+ mpl::int_<5000>
+ >::type
+ >::type
+ >::type type;
+};
+
+template <class T, class Policy>
+T zeta_series_imp(T s, T sc, const Policy&)
+{
+ //
+ // Series evaluation from:
+ // Havil, J. Gamma: Exploring Euler's Constant.
+ // Princeton, NJ: Princeton University Press, 2003.
+ //
+ // See also http://mathworld.wolfram.com/RiemannZetaFunction.html
+ //
+ BOOST_MATH_STD_USING
+ T sum = 0;
+ T mult = 0.5;
+ T change;
+ typedef typename zeta_series_cache_size<T,Policy>::type cache_size;
+ T powers[cache_size::value] = { 0, };
+ unsigned n = 0;
+ do{
+ T binom = -static_cast<T>(n);
+ T nested_sum = 1;
+ if(n < sizeof(powers) / sizeof(powers[0]))
+ powers[n] = pow(static_cast<T>(n + 1), -s);
+ for(unsigned k = 1; k <= n; ++k)
+ {
+ T p;
+ if(k < sizeof(powers) / sizeof(powers[0]))
+ {
+ p = powers[k];
+ //p = pow(k + 1, -s);
+ }
+ else
+ p = pow(static_cast<T>(k + 1), -s);
+ nested_sum += binom * p;
+ binom *= (k - static_cast<T>(n)) / (k + 1);
+ }
+ change = mult * nested_sum;
+ sum += change;
+ mult /= 2;
+ ++n;
+ }while(fabs(change / sum) > tools::epsilon<T>());
+
+ return sum * 1 / -boost::math::powm1(T(2), sc);
+}
+
+//
+// Classical p-series:
+//
+template <class T>
+struct zeta_series2
+{
+ typedef T result_type;
+ zeta_series2(T _s) : s(-_s), k(1){}
+ T operator()()
+ {
+ BOOST_MATH_STD_USING
+ return pow(static_cast<T>(k++), s);
+ }
+private:
+ T s;
+ unsigned k;
+};
+
+template <class T, class Policy>
+inline T zeta_series2_imp(T s, const Policy& pol)
+{
+ boost::uintmax_t max_iter = policies::get_max_series_iterations<Policy>();;
+ zeta_series2<T> f(s);
+ T result = tools::sum_series(
+ f,
+ policies::get_epsilon<T, Policy>(),
+ max_iter);
+ policies::check_series_iterations<T>("boost::math::zeta_series2<%1%>(%1%)", max_iter, pol);
+ return result;
+}
+#endif
+
+template <class T, class Policy>
+T zeta_polynomial_series(T s, T sc, Policy const &)
+{
+ //
+ // This is algorithm 3 from:
+ //
+ // "An Efficient Algorithm for the Riemann Zeta Function", P. Borwein,
+ // Canadian Mathematical Society, Conference Proceedings.
+ // See: http://www.cecm.sfu.ca/personal/pborwein/PAPERS/P155.pdf
+ //
+ BOOST_MATH_STD_USING
+ int n = itrunc(T(log(boost::math::tools::epsilon<T>()) / -2));
+ T sum = 0;
+ T two_n = ldexp(T(1), n);
+ int ej_sign = 1;
+ for(int j = 0; j < n; ++j)
+ {
+ sum += ej_sign * -two_n / pow(T(j + 1), s);
+ ej_sign = -ej_sign;
+ }
+ T ej_sum = 1;
+ T ej_term = 1;
+ for(int j = n; j <= 2 * n - 1; ++j)
+ {
+ sum += ej_sign * (ej_sum - two_n) / pow(T(j + 1), s);
+ ej_sign = -ej_sign;
+ ej_term *= 2 * n - j;
+ ej_term /= j - n + 1;
+ ej_sum += ej_term;
+ }
+ return -sum / (two_n * (-powm1(T(2), sc)));
+}
+
+template <class T, class Policy>
+T zeta_imp_prec(T s, T sc, const Policy& pol, const mpl::int_<0>&)
+{
+ BOOST_MATH_STD_USING
+ T result;
+ result = zeta_polynomial_series(s, sc, pol);
+#if 0
+ // Old code archived for future reference:
+
+ //
+ // Only use power series if it will converge in 100
+ // iterations or less: the more iterations it consumes
+ // the slower convergence becomes so we have to be very
+ // careful in it's usage.
+ //
+ if (s > -log(tools::epsilon<T>()) / 4.5)
+ result = detail::zeta_series2_imp(s, pol);
+ else
+ result = detail::zeta_series_imp(s, sc, pol);
+#endif
+ return result;
+}
+
+template <class T, class Policy>
+inline T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<53>&)
+{
+ BOOST_MATH_STD_USING
+ T result;
+ if(s < 1)
+ {
+ // Rational Approximation
+ // Maximum Deviation Found: 2.020e-18
+ // Expected Error Term: -2.020e-18
+ // Max error found at double precision: 3.994987e-17
+ static const T P[6] = {
+ 0.24339294433593750202L,
+ -0.49092470516353571651L,
+ 0.0557616214776046784287L,
+ -0.00320912498879085894856L,
+ 0.000451534528645796438704L,
+ -0.933241270357061460782e-5L,
+ };
+ static const T Q[6] = {
+ 1L,
+ -0.279960334310344432495L,
+ 0.0419676223309986037706L,
+ -0.00413421406552171059003L,
+ 0.00024978985622317935355L,
+ -0.101855788418564031874e-4L,
+ };
+ result = tools::evaluate_polynomial(P, sc) / tools::evaluate_polynomial(Q, sc);
+ result -= 1.2433929443359375F;
+ result += (sc);
+ result /= (sc);
+ }
+ else if(s <= 2)
+ {
+ // Maximum Deviation Found: 9.007e-20
+ // Expected Error Term: 9.007e-20
+ static const T P[6] = {
+ 0.577215664901532860516,
+ 0.243210646940107164097,
+ 0.0417364673988216497593,
+ 0.00390252087072843288378,
+ 0.000249606367151877175456,
+ 0.110108440976732897969e-4,
+ };
+ static const T Q[6] = {
+ 1,
+ 0.295201277126631761737,
+ 0.043460910607305495864,
+ 0.00434930582085826330659,
+ 0.000255784226140488490982,
+ 0.10991819782396112081e-4,
+ };
+ result = tools::evaluate_polynomial(P, T(-sc)) / tools::evaluate_polynomial(Q, T(-sc));
+ result += 1 / (-sc);
+ }
+ else if(s <= 4)
+ {
+ // Maximum Deviation Found: 5.946e-22
+ // Expected Error Term: -5.946e-22
+ static const float Y = 0.6986598968505859375;
+ static const T P[6] = {
+ -0.0537258300023595030676,
+ 0.0445163473292365591906,
+ 0.0128677673534519952905,
+ 0.00097541770457391752726,
+ 0.769875101573654070925e-4,
+ 0.328032510000383084155e-5,
+ };
+ static const T Q[7] = {
+ 1,
+ 0.33383194553034051422,
+ 0.0487798431291407621462,
+ 0.00479039708573558490716,
+ 0.000270776703956336357707,
+ 0.106951867532057341359e-4,
+ 0.236276623974978646399e-7,
+ };
+ result = tools::evaluate_polynomial(P, T(s - 2)) / tools::evaluate_polynomial(Q, T(s - 2));
+ result += Y + 1 / (-sc);
+ }
+ else if(s <= 7)
+ {
+ // Maximum Deviation Found: 2.955e-17
+ // Expected Error Term: 2.955e-17
+ // Max error found at double precision: 2.009135e-16
+
+ static const T P[6] = {
+ -2.49710190602259410021,
+ -2.60013301809475665334,
+ -0.939260435377109939261,
+ -0.138448617995741530935,
+ -0.00701721240549802377623,
+ -0.229257310594893932383e-4,
+ };
+ static const T Q[9] = {
+ 1,
+ 0.706039025937745133628,
+ 0.15739599649558626358,
+ 0.0106117950976845084417,
+ -0.36910273311764618902e-4,
+ 0.493409563927590008943e-5,
+ -0.234055487025287216506e-6,
+ 0.718833729365459760664e-8,
+ -0.1129200113474947419e-9,
+ };
+ result = tools::evaluate_polynomial(P, T(s - 4)) / tools::evaluate_polynomial(Q, T(s - 4));
+ result = 1 + exp(result);
+ }
+ else if(s < 15)
+ {
+ // Maximum Deviation Found: 7.117e-16
+ // Expected Error Term: 7.117e-16
+ // Max error found at double precision: 9.387771e-16
+ static const T P[7] = {
+ -4.78558028495135619286,
+ -1.89197364881972536382,
+ -0.211407134874412820099,
+ -0.000189204758260076688518,
+ 0.00115140923889178742086,
+ 0.639949204213164496988e-4,
+ 0.139348932445324888343e-5,
+ };
+ static const T Q[9] = {
+ 1,
+ 0.244345337378188557777,
+ 0.00873370754492288653669,
+ -0.00117592765334434471562,
+ -0.743743682899933180415e-4,
+ -0.21750464515767984778e-5,
+ 0.471001264003076486547e-8,
+ -0.833378440625385520576e-10,
+ 0.699841545204845636531e-12,
+ };
+ result = tools::evaluate_polynomial(P, T(s - 7)) / tools::evaluate_polynomial(Q, T(s - 7));
+ result = 1 + exp(result);
+ }
+ else if(s < 36)
+ {
+ // Max error in interpolated form: 1.668e-17
+ // Max error found at long double precision: 1.669714e-17
+ static const T P[8] = {
+ -10.3948950573308896825,
+ -2.85827219671106697179,
+ -0.347728266539245787271,
+ -0.0251156064655346341766,
+ -0.00119459173416968685689,
+ -0.382529323507967522614e-4,
+ -0.785523633796723466968e-6,
+ -0.821465709095465524192e-8,
+ };
+ static const T Q[10] = {
+ 1,
+ 0.208196333572671890965,
+ 0.0195687657317205033485,
+ 0.00111079638102485921877,
+ 0.408507746266039256231e-4,
+ 0.955561123065693483991e-6,
+ 0.118507153474022900583e-7,
+ 0.222609483627352615142e-14,
+ };
+ result = tools::evaluate_polynomial(P, T(s - 15)) / tools::evaluate_polynomial(Q, T(s - 15));
+ result = 1 + exp(result);
+ }
+ else if(s < 56)
+ {
+ result = 1 + pow(T(2), -s);
+ }
+ else
+ {
+ result = 1;
+ }
+ return result;
+}
+
+template <class T, class Policy>
+T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<64>&)
+{
+ BOOST_MATH_STD_USING
+ T result;
+ if(s < 1)
+ {
+ // Rational Approximation
+ // Maximum Deviation Found: 3.099e-20
+ // Expected Error Term: 3.099e-20
+ // Max error found at long double precision: 5.890498e-20
+ static const T P[6] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.243392944335937499969),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.496837806864865688082),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0680008039723709987107),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00511620413006619942112),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000455369899250053003335),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.279496685273033761927e-4),
+ };
+ static const T Q[7] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.30425480068225790522),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.050052748580371598736),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00519355671064700627862),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000360623385771198350257),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.159600883054550987633e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.339770279812410586032e-6),
+ };
+ result = tools::evaluate_polynomial(P, sc) / tools::evaluate_polynomial(Q, sc);
+ result -= 1.2433929443359375F;
+ result += (sc);
+ result /= (sc);
+ }
+ else if(s <= 2)
+ {
+ // Maximum Deviation Found: 1.059e-21
+ // Expected Error Term: 1.059e-21
+ // Max error found at long double precision: 1.626303e-19
+
+ static const T P[6] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.577215664901532860605),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.222537368917162139445),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0356286324033215682729),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00304465292366350081446),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000178102511649069421904),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.700867470265983665042e-5),
+ };
+ static const T Q[7] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.259385759149531030085),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0373974962106091316854),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00332735159183332820617),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000188690420706998606469),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.635994377921861930071e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.226583954978371199405e-7),
+ };
+ result = tools::evaluate_polynomial(P, T(-sc)) / tools::evaluate_polynomial(Q, T(-sc));
+ result += 1 / (-sc);
+ }
+ else if(s <= 4)
+ {
+ // Maximum Deviation Found: 5.946e-22
+ // Expected Error Term: -5.946e-22
+ static const float Y = 0.6986598968505859375;
+ static const T P[7] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.053725830002359501027),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0470551187571475844778),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0101339410415759517471),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00100240326666092854528),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.685027119098122814867e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.390972820219765942117e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.540319769113543934483e-7),
+ };
+ static const T Q[8] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.286577739726542730421),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0447355811517733225843),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00430125107610252363302),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000284956969089786662045),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.116188101609848411329e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.278090318191657278204e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.19683620233222028478e-8),
+ };
+ result = tools::evaluate_polynomial(P, T(s - 2)) / tools::evaluate_polynomial(Q, T(s - 2));
+ result += Y + 1 / (-sc);
+ }
+ else if(s <= 7)
+ {
+ // Max error found at long double precision: 8.132216e-19
+ static const T P[8] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, -2.49710190602259407065),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -3.36664913245960625334),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -1.77180020623777595452),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.464717885249654313933),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0643694921293579472583),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00464265386202805715487),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000165556579779704340166),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.252884970740994069582e-5),
+ };
+ static const T Q[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.01300131390690459085),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.387898115758643503827),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0695071490045701135188),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00586908595251442839291),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000217752974064612188616),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.397626583349419011731e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.927884739284359700764e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.119810501805618894381e-9),
+ };
+ result = tools::evaluate_polynomial(P, T(s - 4)) / tools::evaluate_polynomial(Q, T(s - 4));
+ result = 1 + exp(result);
+ }
+ else if(s < 15)
+ {
+ // Max error in interpolated form: 1.133e-18
+ // Max error found at long double precision: 2.183198e-18
+ static const T P[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, -4.78558028495135548083),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -3.23873322238609358947),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.892338582881021799922),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.131326296217965913809),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0115651591773783712996),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.000657728968362695775205),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.252051328129449973047e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.626503445372641798925e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.815696314790853893484e-8),
+ };
+ static const T Q[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.525765665400123515036),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.10852641753657122787),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0115669945375362045249),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.000732896513858274091966),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.30683952282420248448e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.819649214609633126119e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.117957556472335968146e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.193432300973017671137e-12),
+ };
+ result = tools::evaluate_polynomial(P, T(s - 7)) / tools::evaluate_polynomial(Q, T(s - 7));
+ result = 1 + exp(result);
+ }
+ else if(s < 42)
+ {
+ // Max error in interpolated form: 1.668e-17
+ // Max error found at long double precision: 1.669714e-17
+ static const T P[9] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, -10.3948950573308861781),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -2.82646012777913950108),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.342144362739570333665),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.0249285145498722647472),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.00122493108848097114118),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.423055371192592850196e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.1025215577185967488e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.165096762663509467061e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.145392555873022044329e-9),
+ };
+ static const T Q[10] = {
+ BOOST_MATH_BIG_CONSTANT(T, 64, 1.0),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.205135978585281988052),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.0192359357875879453602),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.00111496452029715514119),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.434928449016693986857e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.116911068726610725891e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.206704342290235237475e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.209772836100827647474e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 64, -0.939798249922234703384e-16),
+ BOOST_MATH_BIG_CONSTANT(T, 64, 0.264584017421245080294e-18),
+ };
+ result = tools::evaluate_polynomial(P, T(s - 15)) / tools::evaluate_polynomial(Q, T(s - 15));
+ result = 1 + exp(result);
+ }
+ else if(s < 63)
+ {
+ result = 1 + pow(T(2), -s);
+ }
+ else
+ {
+ result = 1;
+ }
+ return result;
+}
+
+template <class T, class Policy>
+T zeta_imp_prec(T s, T sc, const Policy&, const mpl::int_<113>&)
+{
+ BOOST_MATH_STD_USING
+ T result;
+ if(s < 1)
+ {
+ // Rational Approximation
+ // Maximum Deviation Found: 9.493e-37
+ // Expected Error Term: 9.492e-37
+ // Max error found at long double precision: 7.281332e-31
+
+ static const T P[10] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0353008629988648122808504280990313668),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0107795651204927743049369868548706909),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000523961870530500751114866884685172975),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.661805838304910731947595897966487515e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.658932670403818558510656304189164638e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.103437265642266106533814021041010453e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.116818787212666457105375746642927737e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.660690993901506912123512551294239036e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.113103113698388531428914333768142527e-10),
+ };
+ static const T Q[11] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.387483472099602327112637481818565459),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0802265315091063135271497708694776875),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0110727276164171919280036408995078164),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00112552716946286252000434849173787243),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.874554160748626916455655180296834352e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.530097847491828379568636739662278322e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.248461553590496154705565904497247452e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.881834921354014787309644951507523899e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.217062446168217797598596496310953025e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.315823200002384492377987848307151168e-11),
+ };
+ result = tools::evaluate_polynomial(P, sc) / tools::evaluate_polynomial(Q, sc);
+ result += (sc);
+ result /= (sc);
+ }
+ else if(s <= 2)
+ {
+ // Maximum Deviation Found: 1.616e-37
+ // Expected Error Term: -1.615e-37
+
+ static const T P[10] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.577215664901532860606512090082402431),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.255597968739771510415479842335906308),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0494056503552807274142218876983542205),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00551372778611700965268920983472292325),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00043667616723970574871427830895192731),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.268562259154821957743669387915239528e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.109249633923016310141743084480436612e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.273895554345300227466534378753023924e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.583103205551702720149237384027795038e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.835774625259919268768735944711219256e-11),
+ };
+ static const T Q[11] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.316661751179735502065583176348292881),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0540401806533507064453851182728635272),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00598621274107420237785899476374043797),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000474907812321704156213038740142079615),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.272125421722314389581695715835862418e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.112649552156479800925522445229212933e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.301838975502992622733000078063330461e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.422960728687211282539769943184270106e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.377105263588822468076813329270698909e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.581926559304525152432462127383600681e-13),
+ };
+ result = tools::evaluate_polynomial(P, T(-sc)) / tools::evaluate_polynomial(Q, T(-sc));
+ result += 1 / (-sc);
+ }
+ else if(s <= 4)
+ {
+ // Maximum Deviation Found: 1.891e-36
+ // Expected Error Term: -1.891e-36
+ // Max error found: 2.171527e-35
+
+ static const float Y = 0.6986598968505859375;
+ static const T P[11] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0537258300023595010275848333539748089),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0429086930802630159457448174466342553),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0136148228754303412510213395034056857),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00190231601036042925183751238033763915),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000186880390916311438818302549192456581),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.145347370745893262394287982691323657e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.805843276446813106414036600485884885e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.340818159286739137503297172091882574e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.115762357488748996526167305116837246e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.231904754577648077579913403645767214e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.340169592866058506675897646629036044e-12),
+ };
+ static const T Q[12] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.363755247765087100018556983050520554),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0696581979014242539385695131258321598),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00882208914484611029571547753782014817),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000815405623261946661762236085660996718),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.571366167062457197282642344940445452e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.309278269271853502353954062051797838e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.12822982083479010834070516053794262e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.397876357325018976733953479182110033e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.8484432107648683277598472295289279e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.105677416606909614301995218444080615e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.547223964564003701979951154093005354e-15),
+ };
+ result = tools::evaluate_polynomial(P, T(s - 2)) / tools::evaluate_polynomial(Q, T(s - 2));
+ result += Y + 1 / (-sc);
+ }
+ else if(s <= 6)
+ {
+ // Max error in interpolated form: 1.510e-37
+ // Max error found at long double precision: 2.769266e-34
+
+ static const T Y = 3.28348541259765625F;
+
+ static const T P[13] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.786383506575062179339611614117697622),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.495766593395271370974685959652073976),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.409116737851754766422360889037532228),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.57340744006238263817895456842655987),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.280479899797421910694892949057963111),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0753148409447590257157585696212649869),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0122934003684672788499099362823748632),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00126148398446193639247961370266962927),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.828465038179772939844657040917364896e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.361008916706050977143208468690645684e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.109879825497910544424797771195928112e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.214539416789686920918063075528797059e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.15090220092460596872172844424267351e-10),
+ };
+ static const T Q[14] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.69490865837142338462982225731926485),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1.22697696630994080733321401255942464),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.495409420862526540074366618006341533),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.122368084916843823462872905024259633),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0191412993625268971656513890888208623),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00191401538628980617753082598351559642),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000123318142456272424148930280876444459),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.531945488232526067889835342277595709e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.161843184071894368337068779669116236e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.305796079600152506743828859577462778e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.233582592298450202680170811044408894e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.275363878344548055574209713637734269e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.221564186807357535475441900517843892e-15),
+ };
+ result = tools::evaluate_polynomial(P, T(s - 4)) / tools::evaluate_polynomial(Q, T(s - 4));
+ result -= Y;
+ result = 1 + exp(result);
+ }
+ else if(s < 10)
+ {
+ // Max error in interpolated form: 1.999e-34
+ // Max error found at long double precision: 2.156186e-33
+
+ static const T P[13] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -4.0545627381873738086704293881227365),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -4.70088348734699134347906176097717782),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -2.36921550900925512951976617607678789),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.684322583796369508367726293719322866),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.126026534540165129870721937592996324),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.015636903921778316147260572008619549),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00135442294754728549644376325814460807),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.842793965853572134365031384646117061e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.385602133791111663372015460784978351e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.130458500394692067189883214401478539e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.315861074947230418778143153383660035e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.500334720512030826996373077844707164e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.420204769185233365849253969097184005e-12),
+ };
+ static const T Q[14] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.97663511666410096104783358493318814),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.40878780231201806504987368939673249),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0963890666609396058945084107597727252),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0142207619090854604824116070866614505),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00139010220902667918476773423995750877),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.940669540194694997889636696089994734e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.458220848507517004399292480807026602e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.16345521617741789012782420625435495e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.414007452533083304371566316901024114e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.68701473543366328016953742622661377e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.603461891080716585087883971886075863e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.294670713571839023181857795866134957e-16),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.147003914536437243143096875069813451e-18),
+ };
+ result = tools::evaluate_polynomial(P, T(s - 6)) / tools::evaluate_polynomial(Q, T(s - 6));
+ result = 1 + exp(result);
+ }
+ else if(s < 17)
+ {
+ // Max error in interpolated form: 1.641e-32
+ // Max error found at long double precision: 1.696121e-32
+ static const T P[13] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -6.91319491921722925920883787894829678),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -3.65491257639481960248690596951049048),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.813557553449954526442644544105257881),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0994317301685870959473658713841138083),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00726896610245676520248617014211734906),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000317253318715075854811266230916762929),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.66851422826636750855184211580127133e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.879464154730985406003332577806849971e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.113838903158254250631678791998294628e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.379184410304927316385211327537817583e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.612992858643904887150527613446403867e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.347873737198164757035457841688594788e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.289187187441625868404494665572279364e-15),
+ };
+ static const T Q[14] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.427310044448071818775721584949868806),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.074602514873055756201435421385243062),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00688651562174480772901425121653945942),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000360174847635115036351323894321880445),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.973556847713307543918865405758248777e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.853455848314516117964634714780874197e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.118203513654855112421673192194622826e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.462521662511754117095006543363328159e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.834212591919475633107355719369463143e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.5354594751002702935740220218582929e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.406451690742991192964889603000756203e-15),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.887948682401000153828241615760146728e-19),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.34980761098820347103967203948619072e-21),
+ };
+ result = tools::evaluate_polynomial(P, T(s - 10)) / tools::evaluate_polynomial(Q, T(s - 10));
+ result = 1 + exp(result);
+ }
+ else if(s < 30)
+ {
+ // Max error in interpolated form: 1.563e-31
+ // Max error found at long double precision: 1.562725e-31
+
+ static const T P[13] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -11.7824798233959252791987402769438322),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -4.36131215284987731928174218354118102),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.732260980060982349410898496846972204),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0744985185694913074484248803015717388),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.00517228281320594683022294996292250527),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.000260897206152101522569969046299309939),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.989553462123121764865178453128769948e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.286916799741891410827712096608826167e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.637262477796046963617949532211619729e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.106796831465628373325491288787760494e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.129343095511091870860498356205376823e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.102397936697965977221267881716672084e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.402663128248642002351627980255756363e-16),
+ };
+ static const T Q[14] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.311288325355705609096155335186466508),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0438318468940415543546769437752132748),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.00374396349183199548610264222242269536),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.000218707451200585197339671707189281302),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.927578767487930747532953583797351219e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.294145760625753561951137473484889639e-6),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.704618586690874460082739479535985395e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.126333332872897336219649130062221257e-9),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.16317315713773503718315435769352765e-11),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.137846712823719515148344938160275695e-13),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.580975420554224366450994232723910583e-16),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.291354445847552426900293580511392459e-22),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.73614324724785855925025452085443636e-25),
+ };
+ result = tools::evaluate_polynomial(P, T(s - 17)) / tools::evaluate_polynomial(Q, T(s - 17));
+ result = 1 + exp(result);
+ }
+ else if(s < 74)
+ {
+ // Max error in interpolated form: 2.311e-27
+ // Max error found at long double precision: 2.297544e-27
+ static const T P[14] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, -20.7944102007844314586649688802236072),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -4.95759941987499442499908748130192187),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.563290752832461751889194629200298688),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0406197001137935911912457120706122877),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.0020846534789473022216888863613422293),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.808095978462109173749395599401375667e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.244706022206249301640890603610060959e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.589477682919645930544382616501666572e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.113699573675553496343617442433027672e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.174767860183598149649901223128011828e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.210051620306761367764549971980026474e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.189187969537370950337212675466400599e-14),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.116313253429564048145641663778121898e-16),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.376708747782400769427057630528578187e-19),
+ };
+ static const T Q[16] = {
+ BOOST_MATH_BIG_CONSTANT(T, 113, 1),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.205076752981410805177554569784219717),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.0202526722696670378999575738524540269),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.001278305290005994980069466658219057),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.576404779858501791742255670403304787e-4),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.196477049872253010859712483984252067e-5),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.521863830500876189501054079974475762e-7),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.109524209196868135198775445228552059e-8),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.181698713448644481083966260949267825e-10),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.234793316975091282090312036524695562e-12),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.227490441461460571047545264251399048e-14),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.151500292036937400913870642638520668e-16),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.543475775154780935815530649335936121e-19),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.241647013434111434636554455083309352e-28),
+ BOOST_MATH_BIG_CONSTANT(T, 113, -0.557103423021951053707162364713587374e-31),
+ BOOST_MATH_BIG_CONSTANT(T, 113, 0.618708773442584843384712258199645166e-34),
+ };
+ result = tools::evaluate_polynomial(P, T(s - 30)) / tools::evaluate_polynomial(Q, T(s - 30));
+ result = 1 + exp(result);
+ }
+ else if(s < 117)
+ {
+ result = 1 + pow(T(2), -s);
+ }
+ else
+ {
+ result = 1;
+ }
+ return result;
+}
+
+template <class T, class Policy, class Tag>
+T zeta_imp(T s, T sc, const Policy& pol, const Tag& tag)
+{
+ BOOST_MATH_STD_USING
+ if(sc == 0)
+ return policies::raise_pole_error<T>(
+ "boost::math::zeta<%1%>",
+ "Evaluation of zeta function at pole %1%",
+ s, pol);
+ T result;
+ if(fabs(s) < tools::root_epsilon<T>())
+ {
+ result = -0.5f - constants::log_root_two_pi<T, Policy>() * s;
+ }
+ else if(s < 0)
+ {
+ std::swap(s, sc);
+ if(floor(sc/2) == sc/2)
+ result = 0;
+ else
+ {
+ result = boost::math::sin_pi(0.5f * sc, pol)
+ * 2 * pow(2 * constants::pi<T>(), -s)
+ * boost::math::tgamma(s, pol)
+ * zeta_imp(s, sc, pol, tag);
+ }
+ }
+ else
+ {
+ result = zeta_imp_prec(s, sc, pol, tag);
+ }
+ return result;
+}
+
+template <class T, class Policy, class tag>
+struct zeta_initializer
+{
+ struct init
+ {
+ init()
+ {
+ do_init(tag());
+ }
+ static void do_init(const mpl::int_<0>&){}
+ static void do_init(const mpl::int_<53>&){}
+ static void do_init(const mpl::int_<64>&)
+ {
+ boost::math::zeta(static_cast<T>(0.5), Policy());
+ boost::math::zeta(static_cast<T>(1.5), Policy());
+ boost::math::zeta(static_cast<T>(3.5), Policy());
+ boost::math::zeta(static_cast<T>(6.5), Policy());
+ boost::math::zeta(static_cast<T>(14.5), Policy());
+ boost::math::zeta(static_cast<T>(40.5), Policy());
+ }
+ static void do_init(const mpl::int_<113>&)
+ {
+ boost::math::zeta(static_cast<T>(0.5), Policy());
+ boost::math::zeta(static_cast<T>(1.5), Policy());
+ boost::math::zeta(static_cast<T>(3.5), Policy());
+ boost::math::zeta(static_cast<T>(5.5), Policy());
+ boost::math::zeta(static_cast<T>(9.5), Policy());
+ boost::math::zeta(static_cast<T>(16.5), Policy());
+ boost::math::zeta(static_cast<T>(25), Policy());
+ boost::math::zeta(static_cast<T>(70), Policy());
+ }
+ void force_instantiate()const{}
+ };
+ static const init initializer;
+ static void force_instantiate()
+ {
+ initializer.force_instantiate();
+ }
+};
+
+template <class T, class Policy, class tag>
+const typename zeta_initializer<T, Policy, tag>::init zeta_initializer<T, Policy, tag>::initializer;
+
+} // detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type zeta(T s, const Policy&)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::precision<result_type, Policy>::type precision_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+ typedef typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<0> >,
+ mpl::int_<0>,
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<53> >,
+ mpl::int_<53>, // double
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<64> >,
+ mpl::int_<64>, // 80-bit long double
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<113> >,
+ mpl::int_<113>, // 128-bit long double
+ mpl::int_<0> // too many bits, use generic version.
+ >::type
+ >::type
+ >::type
+ >::type tag_type;
+ //typedef mpl::int_<0> tag_type;
+
+ detail::zeta_initializer<value_type, forwarding_policy, tag_type>::force_instantiate();
+
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(detail::zeta_imp(
+ static_cast<value_type>(s),
+ static_cast<value_type>(1 - static_cast<value_type>(s)),
+ forwarding_policy(),
+ tag_type()), "boost::math::zeta<%1%>(%1%)");
+}
+
+template <class T>
+inline typename tools::promote_args<T>::type zeta(T s)
+{
+ return zeta(s, policies::policy<>());
+}
+
+}} // namespaces
+
+#endif // BOOST_MATH_ZETA_HPP
+
+
+
--- /dev/null
+
+// Copyright (c) 2011 John Maddock
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_TOOLS_BIG_CONSTANT_HPP
+#define BOOST_MATH_TOOLS_BIG_CONSTANT_HPP
+
+#include <boost/math/tools/config.hpp>
+#ifndef BOOST_MATH_NO_LEXICAL_CAST
+#include <boost/lexical_cast.hpp>
+#endif
+#include <boost/type_traits/is_convertible.hpp>
+
+namespace boost{ namespace math{
+
+namespace tools{
+
+template <class T>
+inline BOOST_CONSTEXPR_OR_CONST T make_big_value(long double v, const char*, mpl::true_ const&, mpl::false_ const&)
+{
+ return static_cast<T>(v);
+}
+template <class T>
+inline BOOST_CONSTEXPR_OR_CONST T make_big_value(long double v, const char*, mpl::true_ const&, mpl::true_ const&)
+{
+ return static_cast<T>(v);
+}
+#ifndef BOOST_MATH_NO_LEXICAL_CAST
+template <class T>
+inline T make_big_value(long double, const char* s, mpl::false_ const&, mpl::false_ const&)
+{
+ return boost::lexical_cast<T>(s);
+}
+#endif
+template <class T>
+inline BOOST_CONSTEXPR const char* make_big_value(long double, const char* s, mpl::false_ const&, mpl::true_ const&)
+{
+ return s;
+}
+
+//
+// For constants which might fit in a long double (if it's big enough):
+//
+#define BOOST_MATH_BIG_CONSTANT(T, D, x)\
+ boost::math::tools::make_big_value<T>(\
+ BOOST_JOIN(x, L), \
+ BOOST_STRINGIZE(x), \
+ mpl::bool_< (is_convertible<long double, T>::value) && \
+ ((D <= std::numeric_limits<long double>::digits) \
+ || is_floating_point<T>::value \
+ || (std::numeric_limits<T>::is_specialized && \
+ (std::numeric_limits<T>::digits10 <= std::numeric_limits<long double>::digits10))) >(), \
+ boost::is_convertible<const char*, T>())
+//
+// For constants too huge for any conceivable long double (and which generate compiler errors if we try and declare them as such):
+//
+#define BOOST_MATH_HUGE_CONSTANT(T, D, x)\
+ boost::math::tools::make_big_value<T>(0.0L, BOOST_STRINGIZE(x), \
+ mpl::bool_<is_floating_point<T>::value || (std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::max_exponent <= std::numeric_limits<long double>::max_exponent && std::numeric_limits<T>::digits <= std::numeric_limits<long double>::digits)>(), \
+ boost::is_convertible<const char*, T>())
+
+}}} // namespaces
+
+#endif
+
#pragma once
#endif
-#include <boost/cstdint.hpp> // for boost::uintmax_t
#include <boost/config.hpp>
+#include <boost/cstdint.hpp> // for boost::uintmax_t
#include <boost/detail/workaround.hpp>
#include <algorithm> // for min and max
#include <boost/config/no_tr1/cmath.hpp>
#include <climits>
+#include <cfloat>
#if (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__))
# include <math.h>
#endif
#include <boost/math/tools/user.hpp>
-#include <boost/math/special_functions/detail/round_fwd.hpp>
#if (defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__NetBSD__) \
- || defined(__hppa) || defined(__NO_LONG_DOUBLE_MATH)) && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)
+ || (defined(__hppa) && !defined(__OpenBSD__)) || (defined(__NO_LONG_DOUBLE_MATH) && (DBL_MANT_DIG != LDBL_MANT_DIG))) \
+ && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)
# define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
#endif
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
# define BOOST_MATH_CONTROL_FP _control87(MCW_EM,MCW_EM)
# include <float.h>
#endif
+#ifdef __IBMCPP__
+//
+// For reasons I don't unserstand, the tests with IMB's compiler all
+// pass at long double precision, but fail with real_concept, those tests
+// are disabled for now. (JM 2012).
+# define BOOST_MATH_NO_REAL_CONCEPT_TESTS
+#endif
#if (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)) && ((LDBL_MANT_DIG == 106) || (__LDBL_MANT_DIG__ == 106)) && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)
//
// Darwin's rather strange "double double" is rather hard to
# define BOOST_MATH_USE_C99
#endif
+#if defined(_LIBCPP_VERSION) && !defined(_MSC_VER)
+# define BOOST_MATH_USE_C99
+#endif
+
#if defined(__CYGWIN__) || defined(__HP_aCC) || defined(BOOST_INTEL) \
|| defined(BOOST_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY) \
- || (defined(__GNUC__) && !defined(BOOST_MATH_USE_C99))
+ || (defined(__GNUC__) && !defined(BOOST_MATH_USE_C99))\
+ || defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)
# define BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY
#endif
#endif // defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
-#if defined(__SUNPRO_CC) || defined(__hppa) || defined(__GNUC__)
+#if (defined(__SUNPRO_CC) || defined(__hppa) || defined(__GNUC__)) && !defined(BOOST_MATH_SMALL_CONSTANT)
// Sun's compiler emits a hard error if a constant underflows,
// as does aCC on PA-RISC, while gcc issues a large number of warnings:
# define BOOST_MATH_SMALL_CONSTANT(x) 0
#ifndef BOOST_MATH_INT_VALUE_SUFFIX
# define BOOST_MATH_INT_VALUE_SUFFIX(RV, SUF) RV##SUF
#endif
+//
+// Test whether to support __float128:
+//
+#if defined(_GLIBCXX_USE_FLOAT128) && defined(BOOST_GCC) && !defined(__STRICT_ANSI__)
+//
+// Only enable this when the compiler really is GCC as clang and probably
+// intel too don't support __float128 yet :-(
+//
+# define BOOST_MATH_USE_FLOAT128
+#endif
+//
+// Check for WinCE with no iostream support:
+//
+#if defined(_WIN32_WCE) && !defined(__SGI_STL_PORT)
+# define BOOST_MATH_NO_LEXICAL_CAST
+#endif
//
// Helper macro for controlling the FP behaviour:
//
// Helper macro for using statements:
//
-#define BOOST_MATH_STD_USING \
+#define BOOST_MATH_STD_USING_CORE \
using std::abs;\
using std::acos;\
using std::cos;\
using std::ceil;\
using std::floor;\
using std::log10;\
- using std::sqrt;\
- using boost::math::round;\
- using boost::math::iround;\
- using boost::math::lround;\
- using boost::math::trunc;\
- using boost::math::itrunc;\
- using boost::math::ltrunc;\
- using boost::math::modf;
+ using std::sqrt;
+#define BOOST_MATH_STD_USING BOOST_MATH_STD_USING_CORE
namespace boost{ namespace math{
namespace tools
{
return (std::max)((std::max)(a, b), (std::max)(c, d));
}
+
} // namespace tools
+
+template <class T>
+void suppress_unused_variable_warning(const T&)
+{
+}
+
}} // namespace boost namespace math
-#if (defined(__linux__) && !defined(__UCLIBC__)) || defined(__QNX__) || defined(__IBMCPP__)
+#if ((defined(__linux__) && !defined(__UCLIBC__)) || defined(__QNX__) || defined(__IBMCPP__)) && !defined(BOOST_NO_FENV_H)
+
+ #include <boost/detail/fenv.hpp>
- #include <fenv.h>
+# ifdef FE_ALL_EXCEPT
- namespace boost{ namespace math{
+namespace boost{ namespace math{
namespace detail
{
struct fpu_guard
} // namespace detail
}} // namespaces
-# define BOOST_FPU_EXCEPTION_GUARD boost::math::detail::fpu_guard local_guard_object;
-# define BOOST_MATH_INSTRUMENT_FPU do{ fexcept_t cpu_flags; fegetexceptflag(&cpu_flags, FE_ALL_EXCEPT); BOOST_MATH_INSTRUMENT_VARIABLE(cpu_flags); } while(0);
+# define BOOST_FPU_EXCEPTION_GUARD boost::math::detail::fpu_guard local_guard_object;
+# define BOOST_MATH_INSTRUMENT_FPU do{ fexcept_t cpu_flags; fegetexceptflag(&cpu_flags, FE_ALL_EXCEPT); BOOST_MATH_INSTRUMENT_VARIABLE(cpu_flags); } while(0);
+
+# else
+
+# define BOOST_FPU_EXCEPTION_GUARD
+# define BOOST_MATH_INSTRUMENT_FPU
+
+# endif
+
#else // All other platforms.
# define BOOST_FPU_EXCEPTION_GUARD
# define BOOST_MATH_INSTRUMENT_FPU
#endif
#ifdef BOOST_MATH_INSTRUMENT
-#define BOOST_MATH_INSTRUMENT_CODE(x) \
- std::cout << std::setprecision(35) << __FILE__ << ":" << __LINE__ << " " << x << std::endl;
-#define BOOST_MATH_INSTRUMENT_VARIABLE(name) BOOST_MATH_INSTRUMENT_CODE(BOOST_STRINGIZE(name) << " = " << name)
+
+# include <iostream>
+# include <iomanip>
+# include <typeinfo>
+
+# define BOOST_MATH_INSTRUMENT_CODE(x) \
+ std::cout << std::setprecision(35) << __FILE__ << ":" << __LINE__ << " " << x << std::endl;
+# define BOOST_MATH_INSTRUMENT_VARIABLE(name) BOOST_MATH_INSTRUMENT_CODE(BOOST_STRINGIZE(name) << " = " << name)
+
#else
-#define BOOST_MATH_INSTRUMENT_CODE(x)
-#define BOOST_MATH_INSTRUMENT_VARIABLE(name)
+
+# define BOOST_MATH_INSTRUMENT_CODE(x)
+# define BOOST_MATH_INSTRUMENT_VARIABLE(name)
+
#endif
#endif // BOOST_MATH_TOOLS_CONFIG_HPP
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class V>
-inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
+inline V evaluate_polynomial_c_imp(const T*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
namespace boost{ namespace math{ namespace tools{ namespace detail{
template <class T, class U, class V>
-inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
+inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)
{
return static_cast<V>(0);
}
typedef typename Gen::result_type result_type;
typedef typename Gen::result_type value_type;
- static result_type a(const value_type& v)
+ static result_type a(const value_type&)
{
return 1;
}
#include <boost/mpl/if.hpp>
#include <boost/math/policies/policy.hpp>
-#include <iostream>
-#include <iomanip>
// These two are for LDBL_MAN_DIG:
#include <limits.h>
#include <math.h>
{
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
BOOST_STATIC_ASSERT( ::std::numeric_limits<T>::is_specialized);
+ BOOST_STATIC_ASSERT( ::std::numeric_limits<T>::radix == 2 || ::std::numeric_limits<T>::radix == 10);
#else
BOOST_ASSERT(::std::numeric_limits<T>::is_specialized);
+ BOOST_ASSERT(::std::numeric_limits<T>::radix == 2 || ::std::numeric_limits<T>::radix == 10);
#endif
- return std::numeric_limits<T>::digits;
+ return std::numeric_limits<T>::radix == 2
+ ? std::numeric_limits<T>::digits
+ : ((std::numeric_limits<T>::digits + 1) * 1000L) / 301L;
}
template <class T>
BOOST_ASSERT(::std::numeric_limits<T>::is_specialized);
#endif
BOOST_MATH_STD_USING
- static const T val = log((std::numeric_limits<T>::max)());
+ static const T val = log((std::numeric_limits<T>::min)());
return val;
}
} // namespace detail
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4309)
+#endif
+
template <class T>
inline T log_max_value(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(T))
{
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
typedef typename mpl::if_c<
- std::numeric_limits<T>::max_exponent == 128
+ (std::numeric_limits<T>::radix == 2) &&
+ (std::numeric_limits<T>::max_exponent == 128
|| std::numeric_limits<T>::max_exponent == 1024
- || std::numeric_limits<T>::max_exponent == 16384,
- mpl::int_<std::numeric_limits<T>::max_exponent>,
+ || std::numeric_limits<T>::max_exponent == 16384),
+ mpl::int_<(std::numeric_limits<T>::max_exponent > INT_MAX ? INT_MAX : static_cast<int>(std::numeric_limits<T>::max_exponent))>,
mpl::int_<0>
>::type tag_type;
BOOST_STATIC_ASSERT( ::std::numeric_limits<T>::is_specialized);
{
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
typedef typename mpl::if_c<
- std::numeric_limits<T>::max_exponent == 128
+ (std::numeric_limits<T>::radix == 2) &&
+ (std::numeric_limits<T>::max_exponent == 128
|| std::numeric_limits<T>::max_exponent == 1024
- || std::numeric_limits<T>::max_exponent == 16384,
- mpl::int_<std::numeric_limits<T>::max_exponent>,
+ || std::numeric_limits<T>::max_exponent == 16384),
+ mpl::int_<(std::numeric_limits<T>::max_exponent > INT_MAX ? INT_MAX : static_cast<int>(std::numeric_limits<T>::max_exponent))>,
mpl::int_<0>
>::type tag_type;
#endif
}
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
template <class T>
inline T epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(T))
{
template <class T>
inline T root_epsilon()
{
- typedef mpl::int_<std::numeric_limits<T>::digits> tag_type;
+ typedef mpl::int_< (::std::numeric_limits<T>::radix == 2) ? std::numeric_limits<T>::digits : 0> tag_type;
return detail::root_epsilon_imp(static_cast<T const*>(0), tag_type());
}
template <class T>
inline T forth_root_epsilon()
{
- typedef mpl::int_<std::numeric_limits<T>::digits> tag_type;
+ typedef mpl::int_< (::std::numeric_limits<T>::radix == 2) ? std::numeric_limits<T>::digits : 0> tag_type;
return detail::forth_root_epsilon_imp(static_cast<T const*>(0), tag_type());
}
#include <boost/mpl/if.hpp> // for boost::mpl::if_c.
#include <boost/mpl/and.hpp> // for boost::mpl::if_c.
#include <boost/mpl/or.hpp> // for boost::mpl::if_c.
+#include <boost/mpl/not.hpp> // for boost::mpl::if_c.
#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
#include <boost/static_assert.hpp>
>::type
>::type,
// else one or the other is a user-defined type:
- typename mpl::if_< ::boost::is_convertible<T1P, T2P>, T2P, T1P>::type>::type type;
+ typename mpl::if_< typename mpl::and_<mpl::not_<is_floating_point<T2P> >, ::boost::is_convertible<T1P, T2P> >, T2P, T1P>::type>::type type;
}; // promote_arg2
// These full specialisations reduce mpl::if_ usage and speed up
// compilation:
//
// Guard against use of long double if it's not supported:
//
- BOOST_STATIC_ASSERT((0 == ::boost::is_same<type, long double>::value));
+ BOOST_STATIC_ASSERT_MSG((0 == ::boost::is_same<type, long double>::value), "Sorry, but this platform does not have sufficient long double support for the special functions to be reliably implemented.");
#endif
};
+ //
+ // This struct is the same as above, but has no static assert on long double usage,
+ // it should be used only on functions that can be implemented for long double
+ // even when std lib support is missing or broken for that type.
+ //
+ template <class T1, class T2=float, class T3=float, class T4=float, class T5=float, class T6=float>
+ struct promote_args_permissive
+ {
+ typedef typename promote_args_2<
+ typename remove_cv<T1>::type,
+ typename promote_args_2<
+ typename remove_cv<T2>::type,
+ typename promote_args_2<
+ typename remove_cv<T3>::type,
+ typename promote_args_2<
+ typename remove_cv<T4>::type,
+ typename promote_args_2<
+ typename remove_cv<T5>::type, typename remove_cv<T6>::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type type;
+ };
+
} // namespace tools
} // namespace math
} // namespace boost
#include <boost/config/no_tr1/cmath.hpp>
#include <stdexcept>
-#include <boost/tr1/tuple.hpp>
#include <boost/math/tools/config.hpp>
#include <boost/cstdint.hpp>
#include <boost/assert.hpp>
#pragma warning(push)
#pragma warning(disable: 4512)
#endif
-#include <boost/tr1/tuple.hpp>
+#include <boost/math/tools/tuple.hpp>
#ifdef BOOST_MSVC
#pragma warning(pop)
#endif
template <class Tuple, class T>
inline void unpack_0(const Tuple& t, T& val)
-{ val = std::tr1::get<0>(t); }
+{ val = boost::math::get<0>(t); }
template <class F, class T>
void handle_zero_derivative(F f,
guess = min;
}
unpack_0(f(guess), last_f0);
- //last_f0 = std::tr1::get<0>(f(guess));
delta = guess - result;
}
if(sign(last_f0) * sign(f0) < 0)
last_f0 = f0;
delta2 = delta1;
delta1 = delta;
- std::tr1::tie(f0, f1) = f(result);
+ boost::math::tie(f0, f1) = f(result);
if(0 == f0)
break;
if(f1 == 0)
last_f0 = f0;
delta2 = delta1;
delta1 = delta;
- std::tr1::tie(f0, f1, f2) = f(result);
+ boost::math::tie(f0, f1, f2) = f(result);
BOOST_MATH_INSTRUMENT_VARIABLE(f0);
BOOST_MATH_INSTRUMENT_VARIABLE(f1);
delta = denom / num;
if(delta * f1 / f0 < 0)
{
- // probably cancellation error, try a Newton step instead:
+ // Oh dear, we have a problem as Newton and Halley steps
+ // disagree about which way we should move. Probably
+ // there is cancelation error in the calculation of the
+ // Halley step, or else the derivatives are so small
+ // that their values are basically trash. We will move
+ // in the direction indicated by a Newton step, but
+ // by no more than twice the current guess value, otherwise
+ // we can jump way out of bounds if we're not careful.
+ // See https://svn.boost.org/trac/boost/ticket/8314.
delta = f0 / f1;
+ if(fabs(delta) > 2 * fabs(guess))
+ delta = (delta < 0 ? -1 : 1) * 2 * fabs(guess);
}
}
else
last_f0 = f0;
delta2 = delta1;
delta1 = delta;
- std::tr1::tie(f0, f1, f2) = f(result);
+ boost::math::tie(f0, f1, f2) = f(result);
if(0 == f0)
break;
if((f1 == 0) && (f2 == 0))
eps_tolerance(unsigned bits)
{
BOOST_MATH_STD_USING
- eps = (std::max)(T(ldexp(1.0F, 1-bits)), T(2 * tools::epsilon<T>()));
+ eps = (std::max)(T(ldexp(1.0F, 1-bits)), T(4 * tools::epsilon<T>()));
}
bool operator()(const T& a, const T& b)
{
BOOST_MATH_STD_USING
- return (fabs(a - b) / (std::min)(fabs(a), fabs(b))) <= eps;
+ return fabs(a - b) <= (eps * (std::min)(fabs(a), fabs(b)));
}
private:
T eps;
T A = safe_div(T(fd - fb), T(d - b), tools::max_value<T>());
A = safe_div(T(A - B), T(d - a), T(0));
- if(a == 0)
+ if(A == 0)
{
// failure to determine coefficients, try a secant step:
return secant_interpolate(a, b, fa, fb);
e = d;
fe = fd;
detail::bracket(f, a, b, c, fa, fb, d, fd);
+ BOOST_MATH_INSTRUMENT_CODE(" a = " << a << " b = " << b);
+ BOOST_MATH_INSTRUMENT_CODE(" tol = " << T((fabs(a) - fabs(b)) / fabs(a)));
if((0 == --count) || (fa == 0) || tol(a, b))
break;
- BOOST_MATH_INSTRUMENT_CODE(" a = " << a << " b = " << b);
//
// And finally... check to see if an additional bisection step is
// to be taken, we do this if we're not converging fast enough:
--- /dev/null
+// (C) Copyright John Maddock 2010.
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_TUPLE_HPP_INCLUDED
+# define BOOST_MATH_TUPLE_HPP_INCLUDED
+# include <boost/config.hpp>
+
+#include <boost/tr1/detail/config.hpp> // for BOOST_HAS_TR1_TUPLE
+
+#ifndef BOOST_NO_CXX11_HDR_TUPLE
+
+#include <tuple>
+
+namespace boost{ namespace math{
+
+using ::std::tuple;
+
+// [6.1.3.2] Tuple creation functions
+using ::std::ignore;
+using ::std::make_tuple;
+using ::std::tie;
+using ::std::get;
+
+// [6.1.3.3] Tuple helper classes
+using ::std::tuple_size;
+using ::std::tuple_element;
+
+}}
+
+#elif defined(BOOST_HAS_TR1_TUPLE)
+
+#include <boost/tr1/tuple.hpp>
+
+namespace boost{ namespace math{
+
+using ::std::tr1::tuple;
+
+// [6.1.3.2] Tuple creation functions
+using ::std::tr1::ignore;
+using ::std::tr1::make_tuple;
+using ::std::tr1::tie;
+using ::std::tr1::get;
+
+// [6.1.3.3] Tuple helper classes
+using ::std::tr1::tuple_size;
+using ::std::tr1::tuple_element;
+
+}}
+
+#elif (defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)) || defined(__IBMCPP__)
+
+#include <boost/tuple/tuple.hpp>
+#include <boost/tuple/tuple_comparison.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+
+namespace boost{ namespace math{
+
+using ::boost::tuple;
+
+// [6.1.3.2] Tuple creation functions
+using ::boost::tuples::ignore;
+using ::boost::make_tuple;
+using ::boost::tie;
+
+// [6.1.3.3] Tuple helper classes
+template <class T>
+struct tuple_size
+ : public ::boost::integral_constant
+ < ::std::size_t, ::boost::tuples::length<T>::value>
+{};
+
+template < int I, class T>
+struct tuple_element
+{
+ typedef typename boost::tuples::element<I,T>::type type;
+};
+
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x0582)
+// [6.1.3.4] Element access
+using ::boost::get;
+#endif
+
+} } // namespaces
+
+#else
+
+#include <boost/fusion/include/tuple.hpp>
+#include <boost/fusion/include/std_pair.hpp>
+
+namespace boost{ namespace math{
+
+using ::boost::fusion::tuple;
+
+// [6.1.3.2] Tuple creation functions
+using ::boost::fusion::ignore;
+using ::boost::fusion::make_tuple;
+using ::boost::fusion::tie;
+using ::boost::fusion::get;
+
+// [6.1.3.3] Tuple helper classes
+using ::boost::fusion::tuple_size;
+using ::boost::fusion::tuple_element;
+
+}}
+
+#endif
+
+#endif
+
+
--- /dev/null
+// Copyright (c) 2006-7 John Maddock
+// Use, modification and distribution are subject to 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)
+
+#ifndef BOOST_MATH_TOOLS_WORHAROUND_HPP
+#define BOOST_MATH_TOOLS_WORHAROUND_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <boost/math/tools/config.hpp>
+
+namespace boost{ namespace math{ namespace tools{
+//
+// We call this short forwarding function so that we can work around a bug
+// on Darwin that causes std::fmod to return a NaN. The test case is:
+// std::fmod(1185.0L, 1.5L);
+//
+template <class T>
+inline T fmod_workaround(T a, T b)
+{
+ BOOST_MATH_STD_USING
+ return fmod(a, b);
+}
+#if (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)) && ((LDBL_MANT_DIG == 106) || (__LDBL_MANT_DIG__ == 106))
+template <>
+inline long double fmod_workaround(long double a, long double b)
+{
+ return ::fmodl(a, b);
+}
+#endif
+
+}}} // namespaces
+
+#endif // BOOST_MATH_TOOLS_WORHAROUND_HPP
+
// See http://www.boost.org/libs/mpl for documentation.
// $Id: O1_size.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/O1_size_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: O1_size_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: advance.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/advance_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: advance_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/common_name_wknd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: always.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: and.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/use_preprocessed.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: apply.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: apply_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: apply_wrap.hpp 49272 2008-10-11 06:50:46Z agurtovoy $
-// $Date: 2008-10-11 02:50:46 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:50:46 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49272 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: arg.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: arg_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/adl_barrier.hpp>
//
// See http://www.boost.org/libs/mpl for documentation.
-// $Id: assert.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
+// $Id: assert.hpp 86514 2013-10-29 13:15:03Z bemandawes $
+// $Date: 2013-10-29 06:15:03 -0700 (Tue, 29 Oct 2013) $
+// $Revision: 86514 $
#include <boost/mpl/not.hpp>
#include <boost/mpl/aux_/value_wknd.hpp>
#include <boost/config.hpp> // make sure 'size_t' is placed into 'std'
#include <cstddef>
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
+#include <boost/mpl/if.hpp>
+#endif
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|| (BOOST_MPL_CFG_GCC != 0) \
#endif
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
+
+template<class Pred>
+struct extract_assert_pred;
+
+template<class Pred>
+struct extract_assert_pred<void(Pred)> { typedef Pred type; };
+
+template<class Pred>
+struct eval_assert {
+ typedef typename extract_assert_pred<Pred>::type P;
+ typedef typename P::type p_type;
+ typedef typename ::boost::mpl::if_c<p_type::value,
+ AUX778076_ASSERT_ARG(assert<false>),
+ failed ************ P::************
+ >::type type;
+};
+
+template<class Pred>
+struct eval_assert_not {
+ typedef typename extract_assert_pred<Pred>::type P;
+ typedef typename P::type p_type;
+ typedef typename ::boost::mpl::if_c<!p_type::value,
+ AUX778076_ASSERT_ARG(assert<false>),
+ failed ************ ::boost::mpl::not_<P>::************
+ >::type type;
+};
+
+template< typename T >
+T make_assert_arg();
-#if !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
+#elif !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
template< bool > struct assert_arg_pred_impl { typedef int type; };
template<> struct assert_arg_pred_impl<true> { typedef void* type; };
BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
+
+// BOOST_MPL_ASSERT((pred<x,...>))
+
+#define BOOST_MPL_ASSERT(pred) \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+ boost::mpl::assertion_failed<false>( \
+ boost::mpl::make_assert_arg< \
+ typename boost::mpl::eval_assert<void pred>::type \
+ >() \
+ ) \
+ ) \
+ ) \
+/**/
+
+// BOOST_MPL_ASSERT_NOT((pred<x,...>))
+
+#define BOOST_MPL_ASSERT_NOT(pred) \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+ boost::mpl::assertion_failed<false>( \
+ boost::mpl::make_assert_arg< \
+ typename boost::mpl::eval_assert_not<void pred>::type \
+ >() \
+ ) \
+ ) \
+ ) \
+/**/
+
+#else
// BOOST_MPL_ASSERT((pred<x,...>))
/**/
#endif
+#endif
+
// BOOST_MPL_ASSERT_RELATION(x, ==|!=|<=|<|>=|>, y)
#if defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: at.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/at_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: at_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: O1_size_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/O1_size_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: adl_barrier.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/adl.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: advance_backward.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: advance_forward.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: arg_typedef.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/lambda.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: arithmetic_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: arity.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/dtp.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: arity_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/int.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: at_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/begin_end.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: begin_end_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/begin_end_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: clear_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/clear_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: common_name_wknd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/workaround.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: comparison_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: adl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: arrays.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: bind.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: compiler.hpp 53189 2009-05-22 20:07:55Z hkaiser $
-// $Date: 2009-05-22 16:07:55 -0400 (Fri, 22 May 2009) $
+// $Date: 2009-05-22 13:07:55 -0700 (Fri, 22 May 2009) $
// $Revision: 53189 $
#if !defined(BOOST_MPL_CFG_COMPILER_DIR)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: ctps.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/workaround.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: dmc_ambiguous_ctps.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/workaround.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: dtp.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/workaround.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: eti.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: forwarding.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/workaround.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: gcc.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if defined(__GNUC__) && !defined(__EDG_VERSION__)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: has_apply.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/has_xxx.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: has_xxx.hpp 63518 2010-07-02 08:32:03Z agurtovoy $
-// $Date: 2010-07-02 04:32:03 -0400 (Fri, 02 Jul 2010) $
+// $Date: 2010-07-02 01:32:03 -0700 (Fri, 02 Jul 2010) $
// $Revision: 63518 $
#include <boost/mpl/aux_/config/overload_resolution.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: integral.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: intel.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
// See http://www.boost.org/libs/mpl for documentation.
// $Id: lambda.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/ttp.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: msvc.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
// See http://www.boost.org/libs/mpl for documentation.
// $Id: msvc_typename.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: nttp.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: overload_resolution.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/workaround.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: pp_counter.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_AUX_PP_COUNTER)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: preprocessor.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/workaround.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: static_constant.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: ttp.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: typeof.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/gcc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: use_preprocessed.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
// #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
// See http://www.boost.org/libs/mpl for documentation.
// $Id: workaround.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/detail/workaround.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: contains_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/contains_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: count_args.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/preprocessor/expr_if.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: fold_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: fold_impl_body.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
# include <boost/mpl/limits/unrolling.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: full_lambda.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: has_apply.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/has_xxx.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: has_begin.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/has_xxx.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: has_rebind.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: has_size.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/has_xxx.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: has_tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/has_xxx.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: has_type.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/has_xxx.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: include_preprocessed.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/compiler.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: inserter_algorithm.hpp 55648 2009-08-18 05:16:53Z agurtovoy $
-// $Date: 2009-08-18 01:16:53 -0400 (Tue, 18 Aug 2009) $
+// $Date: 2009-08-17 22:16:53 -0700 (Mon, 17 Aug 2009) $
// $Revision: 55648 $
#include <boost/mpl/back_inserter.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: integral_wrapper.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
// See http://www.boost.org/libs/mpl for documentation.
// $Id: is_msvc_eti_arg.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/yes_no.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: iter_apply.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/apply.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: iter_fold_if_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: iter_fold_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: lambda_arity_param.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/ttp.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: lambda_no_ctps.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: lambda_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/void.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: lambda_support.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/lambda.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: largest_int.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/if.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: logical_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
// See http://www.boost.org/libs/mpl for documentation.
// $Id: msvc_dtw.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
// See http://www.boost.org/libs/mpl for documentation.
// $Id: msvc_eti_base.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/is_msvc_eti_arg.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: msvc_is_class.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/if.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: msvc_never_true.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: msvc_type.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/eti.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: na.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/bool.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: na_assert.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/na.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: na_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/adl_barrier.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: na_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: nested_type_wknd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/gcc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: nttp_decl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/nttp.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: numeric_cast_utils.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/numeric_cast.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: numeric_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: add.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/preprocessor.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: def_params_tail.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/limits/arity.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: default_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/preprocessor.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: enum.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/preprocessor.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: ext_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/preprocessor.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: filter_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define BOOST_MPL_PP_FILTER_PARAMS_0(p1,p2,p3,p4,p5,p6,p7,p8,p9)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/preprocessor.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: partial_spec_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/limits/arity.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: range.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/preprocessor/seq/subseq.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: repeat.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/preprocessor.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: sub.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/preprocessor.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: tuple.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define BOOST_MPL_PP_TUPLE_11_ELEM_0(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e0
// See http://www.boost.org/libs/mpl for documentation.
// $Id: push_back_impl.hpp 55679 2009-08-20 07:50:16Z agurtovoy $
-// $Date: 2009-08-20 03:50:16 -0400 (Thu, 20 Aug 2009) $
+// $Date: 2009-08-20 00:50:16 -0700 (Thu, 20 Aug 2009) $
// $Revision: 55679 $
#include <boost/mpl/push_back_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: push_front_impl.hpp 55679 2009-08-20 07:50:16Z agurtovoy $
-// $Date: 2009-08-20 03:50:16 -0400 (Thu, 20 Aug 2009) $
+// $Date: 2009-08-20 00:50:16 -0700 (Thu, 20 Aug 2009) $
// $Revision: 55679 $
#include <boost/mpl/push_front_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: reverse_fold_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: reverse_fold_impl_body.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
# include <boost/mpl/limits/unrolling.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: sequence_wrapper.hpp 49271 2008-10-11 06:46:00Z agurtovoy $
-// $Date: 2008-10-11 02:46:00 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:46:00 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49271 $
# include <boost/mpl/aux_/config/ctps.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: size_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/size_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: static_cast.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/workaround.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: template_arity.hpp 61584 2010-04-26 18:48:26Z agurtovoy $
-// $Date: 2010-04-26 14:48:26 -0400 (Mon, 26 Apr 2010) $
+// $Date: 2010-04-26 11:48:26 -0700 (Mon, 26 Apr 2010) $
// $Revision: 61584 $
#include <boost/mpl/aux_/config/ttp.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: template_arity_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl { namespace aux {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: traits_lambda_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/sequence_tag_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: type_wrapper.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/ctps.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: value_wknd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/static_cast.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: yes_no.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/nttp_decl.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: back_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: back_inserter.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/push_back.hpp>
--- /dev/null
+
+#ifndef BOOST_MPL_BEGIN_HPP_INCLUDED
+#define BOOST_MPL_BEGIN_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2004
+//
+// 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)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: begin.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <boost/mpl/begin_end.hpp>
+
+#endif // BOOST_MPL_BEGIN_HPP_INCLUDED
// See http://www.boost.org/libs/mpl for documentation.
// $Id: begin_end.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/begin_end_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: begin_end_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: bind.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: bind_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: bool.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/bool_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: bool_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/adl_barrier.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: clear.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/clear_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: clear_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: comparison.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/equal_to.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: contains.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/contains_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: contains_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
--- /dev/null
+
+#ifndef BOOST_MPL_COPY_HPP_INCLUDED
+#define BOOST_MPL_COPY_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright David Abrahams 2003-2004
+//
+// 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)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: copy.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <boost/mpl/fold.hpp>
+#include <boost/mpl/reverse_fold.hpp>
+#include <boost/mpl/aux_/inserter_algorithm.hpp>
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename Sequence
+ , typename Inserter
+ >
+struct copy_impl
+ : fold<
+ Sequence
+ , typename Inserter::state
+ , typename Inserter::operation
+ >
+{
+};
+
+template<
+ typename Sequence
+ , typename Inserter
+ >
+struct reverse_copy_impl
+ : reverse_fold<
+ Sequence
+ , typename Inserter::state
+ , typename Inserter::operation
+ >
+{
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(2, copy)
+
+}}
+
+#endif // BOOST_MPL_COPY_HPP_INCLUDED
// See http://www.boost.org/libs/mpl for documentation.
// $Id: deref.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/msvc_type.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: distance.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/distance_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: distance_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/common_name_wknd.hpp>
--- /dev/null
+
+#ifndef BOOST_MPL_DIVIDES_HPP_INCLUDED
+#define BOOST_MPL_DIVIDES_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// 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)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: divides.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#define AUX778076_OP_NAME divides
+#define AUX778076_OP_TOKEN /
+#include <boost/mpl/aux_/arithmetic_op.hpp>
+
+#endif // BOOST_MPL_DIVIDES_HPP_INCLUDED
--- /dev/null
+
+#ifndef BOOST_MPL_EMPTY_BASE_HPP_INCLUDED
+#define BOOST_MPL_EMPTY_BASE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// 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)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: empty_base.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/config/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#include <boost/type_traits/is_empty.hpp>
+
+// should be always the last #include directive
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost { namespace mpl {
+
+// empty base class, guaranteed to have no members; inheritance from
+// 'empty_base' through the 'inherit' metafunction is a no-op - see
+// "mpl/inherit.hpp> header for the details
+struct empty_base {};
+
+template< typename T >
+struct is_empty_base
+ : false_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using false_::value;
+#endif
+};
+
+template<>
+struct is_empty_base<empty_base>
+ : true_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using true_::value;
+#endif
+};
+
+}}
+
+namespace boost {
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_empty, mpl::empty_base, true)
+}
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_MPL_EMPTY_BASE_HPP_INCLUDED
// See http://www.boost.org/libs/mpl for documentation.
// $Id: empty_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
--- /dev/null
+
+#ifndef BOOST_MPL_END_HPP_INCLUDED
+#define BOOST_MPL_END_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2004
+//
+// 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)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: end.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <boost/mpl/begin_end.hpp>
+
+#endif // BOOST_MPL_END_HPP_INCLUDED
// See http://www.boost.org/libs/mpl for documentation.
// $Id: equal_to.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define AUX778076_OP_NAME equal_to
// See http://www.boost.org/libs/mpl for documentation.
// $Id: eval_if.hpp 61921 2010-05-11 21:33:24Z neilgroves $
-// $Date: 2010-05-11 17:33:24 -0400 (Tue, 11 May 2010) $
+// $Date: 2010-05-11 14:33:24 -0700 (Tue, 11 May 2010) $
// $Revision: 61921 $
#include <boost/mpl/if.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: find.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/find_if.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: find_if.hpp 49274 2008-10-11 07:22:05Z agurtovoy $
-// $Date: 2008-10-11 03:22:05 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-11 00:22:05 -0700 (Sat, 11 Oct 2008) $
// $Revision: 49274 $
#include <boost/mpl/aux_/find_if_pred.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: fold.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/begin_end.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: front_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: front_inserter.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/push_front.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: greater.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define AUX778076_OP_NAME greater
// See http://www.boost.org/libs/mpl for documentation.
// $Id: greater_equal.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define AUX778076_OP_NAME greater_equal
// See http://www.boost.org/libs/mpl for documentation.
// $Id: has_xxx.hpp 64146 2010-07-19 00:46:31Z djwalker $
-// $Date: 2010-07-18 20:46:31 -0400 (Sun, 18 Jul 2010) $
+// $Date: 2010-07-18 17:46:31 -0700 (Sun, 18 Jul 2010) $
// $Revision: 64146 $
#include <boost/mpl/bool.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: identity.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/na_spec.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: if.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/value_wknd.hpp>
--- /dev/null
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_INHERIT_HPP_INCLUDED
+#define BOOST_MPL_INHERIT_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// 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)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: inherit.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+# include <boost/mpl/empty_base.hpp>
+# include <boost/mpl/aux_/na_spec.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+#endif
+
+#include <boost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+# define BOOST_MPL_PREPROCESSED_HEADER inherit.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/preprocessor/default_params.hpp>
+# include <boost/mpl/aux_/preprocessor/enum.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/mpl/aux_/config/dtp.hpp>
+
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/dec.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace mpl {
+
+// 'inherit<T1,T2,..,Tn>' metafunction; returns an unspecified class type
+// produced by public derivation from all metafunction's parameters
+// (T1,T2,..,Tn), except the parameters of 'empty_base' class type;
+// regardless the position and number of 'empty_base' parameters in the
+// metafunction's argument list, derivation from them is always a no-op;
+// for instance:
+// inherit<her>::type == her
+// inherit<her,my>::type == struct unspecified : her, my {};
+// inherit<empty_base,her>::type == her
+// inherit<empty_base,her,empty_base,empty_base>::type == her
+// inherit<her,empty_base,my>::type == struct unspecified : her, my {};
+// inherit<empty_base,empty_base>::type == empty_base
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : T1, T2
+{
+ typedef inherit2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1,T2))
+};
+
+template< typename T1 >
+struct inherit2<T1,empty_base>
+{
+ typedef T1 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1,empty_base))
+};
+
+template< typename T2 >
+struct inherit2<empty_base,T2>
+{
+ typedef T2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base,T2))
+};
+
+// needed to disambiguate the previous two in case when both
+// T1 and T2 == empty_base
+template<>
+struct inherit2<empty_base,empty_base>
+{
+ typedef empty_base type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base,empty_base))
+};
+
+#else
+
+namespace aux {
+
+template< bool C1, bool C2 >
+struct inherit2_impl
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T1, T2
+ {
+ typedef Derived type_;
+ };
+};
+
+template<>
+struct inherit2_impl<false,true>
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T1
+ {
+ typedef T1 type_;
+ };
+};
+
+template<>
+struct inherit2_impl<true,false>
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T2
+ {
+ typedef T2 type_;
+ };
+};
+
+template<>
+struct inherit2_impl<true,true>
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ {
+ typedef T1 type_;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : aux::inherit2_impl<
+ is_empty_base<T1>::value
+ , is_empty_base<T2>::value
+ >::template result_< inherit2<T1,T2>,T1,T2 >
+{
+ typedef typename inherit2::type_ type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1,T2))
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(3, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/inherit.hpp>))
+#include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_INHERIT_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define n_ BOOST_PP_FRAME_ITERATION(1)
+
+template<
+ BOOST_MPL_PP_DEFAULT_PARAMS(n_, typename T, na)
+ >
+struct BOOST_PP_CAT(inherit,n_)
+ : inherit2<
+ typename BOOST_PP_CAT(inherit,BOOST_PP_DEC(n_))<
+ BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(n_), T)
+ >::type
+ , BOOST_PP_CAT(T,n_)
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ n_
+ , BOOST_PP_CAT(inherit,n_)
+ , (BOOST_MPL_PP_PARAMS(n_, T))
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(n_, BOOST_PP_CAT(inherit,n_))
+
+#if n_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+/// primary template
+template<
+ BOOST_MPL_PP_DEFAULT_PARAMS(n_, typename T, empty_base)
+ >
+struct inherit
+ : BOOST_PP_CAT(inherit,n_)<BOOST_MPL_PP_PARAMS(n_, T)>
+{
+};
+
+// 'na' specialization
+template<>
+struct inherit< BOOST_MPL_PP_ENUM(5, na) >
+{
+ template<
+#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+ BOOST_MPL_PP_DEFAULT_PARAMS(n_, typename T, empty_base)
+#else
+ BOOST_MPL_PP_PARAMS(n_, typename T)
+#endif
+ >
+ struct apply
+ : inherit< BOOST_MPL_PP_PARAMS(n_, T) >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(n_, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(n_, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(n_, n_, inherit)
+#endif
+
+#undef n_
+#endif // BOOST_PP_IS_ITERATING
// See http://www.boost.org/libs/mpl for documentation.
// $Id: inserter.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: int.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/int_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: int_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/adl_barrier.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: integral_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/integral_c_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: integral_c_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/workaround.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: integral_c_tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
// See http://www.boost.org/libs/mpl for documentation.
// $Id: is_placeholder.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/arg_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: is_sequence.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/not.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: iter_fold.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/begin_end.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: iter_fold_if.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/begin_end.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: iterator_range.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/na_spec.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: iterator_tags.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/int.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: lambda.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/lambda_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: lambda_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/void_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: less.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define AUX778076_OP_NAME less
// See http://www.boost.org/libs/mpl for documentation.
// $Id: less_equal.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define AUX778076_OP_NAME less_equal
// See http://www.boost.org/libs/mpl for documentation.
// $Id: arity.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_LIMIT_LIST_SIZE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: unrolling.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_LIMIT_UNROLLING)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_LIMIT_VECTOR_SIZE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: O1_size.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/O1_size_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: begin_end.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/begin_end_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: clear.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/clear_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: empty.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/empty_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: front.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/front_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: include_preprocessed.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
// See http://www.boost.org/libs/mpl for documentation.
// $Id: item.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/long.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: iterator.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/iterator_tags.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: numbered.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if defined(BOOST_PP_IS_ITERATING)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: numbered_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if defined(BOOST_PP_IS_ITERATING)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: pop_front.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/pop_front_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: push_back.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/push_back_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: push_front.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/push_front_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: size.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/size_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl { namespace aux {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list0.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/long.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list0_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/list/list0.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list10.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list10_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list20.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list20_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list30.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list30_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list40.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list40_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list50.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: list50_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: logical.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/or.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: long.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/long_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: long_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/adl_barrier.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: minus.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define AUX778076_OP_NAME minus
// See http://www.boost.org/libs/mpl for documentation.
// $Id: multiplies.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/times.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: negate.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/integral_c.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: next.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/next_prior.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: next_prior.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/common_name_wknd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: not.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/bool.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: not_equal_to.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define AUX778076_OP_NAME not_equal_to
// See http://www.boost.org/libs/mpl for documentation.
// $Id: numeric_cast.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/msvc.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: or.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/use_preprocessed.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: pair.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/msvc_eti_base.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: placeholders.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
// See http://www.boost.org/libs/mpl for documentation.
// $Id: plus.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define AUX778076_OP_NAME plus
// See http://www.boost.org/libs/mpl for documentation.
// $Id: pop_back_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: pop_front_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: prior.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/next_prior.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: protect.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/arity.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: push_back.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/push_back_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: push_back_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: push_front.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/push_front_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: push_front_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: quote.hpp 49272 2008-10-11 06:50:46Z agurtovoy $
-// $Date: 2008-10-11 02:50:46 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:50:46 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49272 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: remove_if.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/fold.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: reverse_fold.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/begin_end.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: same_as.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/not.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: sequence_tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/sequence_tag_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: sequence_tag_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: size.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/size_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: size_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
namespace boost { namespace mpl {
// See http://www.boost.org/libs/mpl for documentation.
// $Id: size_t.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/size_t_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: size_t_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/adl_barrier.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/eval_if.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: times.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#define AUX778076_OP_NAME times
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: O1_size.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/O1_size_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: at.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/at_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: back.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/back_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: begin_end.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/typeof.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: clear.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/clear_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: empty.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/empty_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: front.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/front_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: include_preprocessed.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/typeof.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: item.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/long.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: iterator.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/vector/aux_/at.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: numbered.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/preprocessor/enum_params.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: numbered_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/preprocessor/enum_params.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: pop_back.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/pop_back_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: pop_front.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/pop_front_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: push_back.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/push_back_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: push_front.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/push_front_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: size.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/size_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/config/typeof.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector0.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/long.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector0.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/vector/aux_/at.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector0_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/vector/vector0.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector10.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector10_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector20.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector20_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector30.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector30_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector40.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector40_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector50.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: vector50_c.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
// See http://www.boost.org/libs/mpl for documentation.
// $Id: void.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/void_fwd.hpp>
// See http://www.boost.org/libs/mpl for documentation.
// $Id: void_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/aux_/adl_barrier.hpp>
--- /dev/null
+// Boost next_prior.hpp header file ---------------------------------------//
+
+// (C) Copyright Dave Abrahams and Daniel Walker 1999-2003. 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)
+
+// See http://www.boost.org/libs/utility for documentation.
+
+// Revision History
+// 13 Dec 2003 Added next(x, n) and prior(x, n) (Daniel Walker)
+
+#ifndef BOOST_NEXT_PRIOR_HPP_INCLUDED
+#define BOOST_NEXT_PRIOR_HPP_INCLUDED
+
+#include <iterator>
+
+namespace boost {
+
+// Helper functions for classes like bidirectional iterators not supporting
+// operator+ and operator-
+//
+// Usage:
+// const std::list<T>::iterator p = get_some_iterator();
+// const std::list<T>::iterator prev = boost::prior(p);
+// const std::list<T>::iterator next = boost::next(prev, 2);
+
+// Contributed by Dave Abrahams
+
+template <class T>
+inline T next(T x) { return ++x; }
+
+template <class T, class Distance>
+inline T next(T x, Distance n)
+{
+ std::advance(x, n);
+ return x;
+}
+
+template <class T>
+inline T prior(T x) { return --x; }
+
+template <class T, class Distance>
+inline T prior(T x, Distance n)
+{
+ std::advance(x, -n);
+ return x;
+}
+
+} // namespace boost
+
+#endif // BOOST_NEXT_PRIOR_HPP_INCLUDED
--- /dev/null
+// Boost noncopyable.hpp header file --------------------------------------//
+
+// (C) Copyright Beman Dawes 1999-2003. 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)
+
+// See http://www.boost.org/libs/utility for documentation.
+
+#ifndef BOOST_NONCOPYABLE_HPP_INCLUDED
+#define BOOST_NONCOPYABLE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+namespace boost {
+
+// Private copy constructor and copy assignment ensure classes derived from
+// class noncopyable cannot be copied.
+
+// Contributed by Dave Abrahams
+
+namespace noncopyable_ // protection from unintended ADL
+{
+ class noncopyable
+ {
+ protected:
+#ifndef BOOST_NO_DEFAULTED_FUNCTIONS
+ BOOST_CONSTEXPR noncopyable() = default;
+ ~noncopyable() = default;
+#else
+ noncopyable() {}
+ ~noncopyable() {}
+#endif
+#ifndef BOOST_NO_DELETED_FUNCTIONS
+ noncopyable( const noncopyable& ) = delete;
+ noncopyable& operator=( const noncopyable& ) = delete;
+#else
+ private: // emphasize the following members are private
+ noncopyable( const noncopyable& );
+ noncopyable& operator=( const noncopyable& );
+#endif
+ };
+}
+
+typedef noncopyable_::noncopyable noncopyable;
+
+} // namespace boost
+
+#endif // BOOST_NONCOPYABLE_HPP_INCLUDED
namespace boost {
-none_t const none = ((none_t)0) ;
+none_t const none = (static_cast<none_t>(0)) ;
} // namespace boost
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
+
+#include "boost/numeric/conversion/detail/bounds.hpp"
+
+namespace boost { namespace numeric
+{
+
+template<class N>
+struct bounds : boundsdetail::get_impl<N>::type
+{} ;
+
+} } // namespace boost::numeric
+
+#endif
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+//
+// Revision History
+//
+// 19 Nov 2001 Syntatic changes as suggested by Darin Adler (Fernando Cacciola)
+// 08 Nov 2001 Fixes to accommodate MSVC (Fernando Cacciola)
+// 04 Nov 2001 Fixes to accommodate gcc2.92 (Fernando Cacciola)
+// 30 Oct 2001 Some fixes suggested by Daryle Walker (Fernando Cacciola)
+// 25 Oct 2001 Initial boostification (Fernando Cacciola)
+// 23 Jan 2004 Inital add to cvs (post review)s
+// 22 Jun 2011 Added support for specializing cast policies via numeric_cast_traits (Brandon Kohn).
+//
+#ifndef BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
+#define BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
+
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+
+# include<boost/numeric/conversion/detail/old_numeric_cast.hpp>
+
+#else
+
+#include <boost/type.hpp>
+#include <boost/numeric/conversion/converter.hpp>
+#include <boost/numeric/conversion/numeric_cast_traits.hpp>
+
+namespace boost
+{
+ template <typename Target, typename Source>
+ inline Target numeric_cast( Source arg )
+ {
+ typedef numeric::conversion_traits<Target, Source> conv_traits;
+ typedef numeric::numeric_cast_traits<Target, Source> cast_traits;
+ typedef boost::numeric::converter
+ <
+ Target,
+ Source,
+ conv_traits,
+ typename cast_traits::overflow_policy,
+ typename cast_traits::rounding_policy,
+ boost::numeric::raw_converter< conv_traits >,
+ typename cast_traits::range_checking_policy
+ > converter;
+ return converter::convert(arg);
+ }
+
+ using numeric::bad_numeric_cast;
+} // namespace boost
+
+#endif
+
+#endif
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+
+#include "boost/numeric/conversion/detail/conversion_traits.hpp"
+#include "boost/detail/workaround.hpp"
+#include "boost/config.hpp"
+
+namespace boost { namespace numeric
+{
+
+template<class T, class S>
+struct conversion_traits
+ : convdetail::get_conversion_traits<T,S>::type
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ typedef typename convdetail::get_conversion_traits<T,S>::type base_;
+ typedef typename base_::target_type target_type;
+ typedef typename base_::source_type source_type;
+ typedef typename base_::result_type result_type;
+ typedef typename base_::argument_type argument_type;
+#endif
+} ;
+
+} } // namespace boost::numeric
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
+
+#include "boost/numeric/conversion/conversion_traits.hpp"
+#include "boost/numeric/conversion/converter_policies.hpp"
+
+#include "boost/numeric/conversion/detail/converter.hpp"
+
+namespace boost { namespace numeric
+{
+
+template<class T,
+ class S,
+ class Traits = conversion_traits<T,S>,
+ class OverflowHandler = def_overflow_handler,
+ class Float2IntRounder = Trunc< BOOST_DEDUCED_TYPENAME Traits::source_type> ,
+ class RawConverter = raw_converter<Traits>,
+ class UserRangeChecker = UseInternalRangeChecker
+ >
+struct converter : convdetail::get_converter_impl<Traits,
+ OverflowHandler,
+ Float2IntRounder,
+ RawConverter,
+ UserRangeChecker
+ >::type
+{
+ typedef Traits traits ;
+
+ typedef typename Traits::argument_type argument_type ;
+ typedef typename Traits::result_type result_type ;
+
+ result_type operator() ( argument_type s ) const { return this->convert(s) ; }
+} ;
+
+
+
+template<class S,
+ class OverflowHandler = def_overflow_handler,
+ class Float2IntRounder = Trunc<S> ,
+ class UserRangeChecker = UseInternalRangeChecker
+ >
+struct make_converter_from
+{
+ template<class T,
+ class Traits = conversion_traits<T,S>,
+ class RawConverter = raw_converter<Traits>
+ >
+ struct to
+ {
+ typedef converter<T,S,Traits,OverflowHandler,Float2IntRounder,RawConverter,UserRangeChecker> type ;
+ } ;
+
+} ;
+
+} } // namespace boost::numeric
+
+#endif
+
+
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
+
+#include <typeinfo> // for std::bad_cast
+
+#include <boost/config/no_tr1/cmath.hpp> // for std::floor and std::ceil
+#include <boost/throw_exception.hpp>
+
+#include <functional>
+
+#include "boost/type_traits/is_arithmetic.hpp"
+
+#include "boost/mpl/if.hpp"
+#include "boost/mpl/integral_c.hpp"
+
+namespace boost { namespace numeric
+{
+
+template<class S>
+struct Trunc
+{
+ typedef S source_type ;
+
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
+
+ static source_type nearbyint ( argument_type s )
+ {
+#if !defined(BOOST_NO_STDC_NAMESPACE)
+ using std::floor ;
+ using std::ceil ;
+#endif
+
+ return s < static_cast<S>(0) ? ceil(s) : floor(s) ;
+ }
+
+ typedef mpl::integral_c< std::float_round_style, std::round_toward_zero> round_style ;
+} ;
+
+
+
+template<class S>
+struct Floor
+{
+ typedef S source_type ;
+
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
+
+ static source_type nearbyint ( argument_type s )
+ {
+#if !defined(BOOST_NO_STDC_NAMESPACE)
+ using std::floor ;
+#endif
+
+ return floor(s) ;
+ }
+
+ typedef mpl::integral_c< std::float_round_style, std::round_toward_neg_infinity> round_style ;
+} ;
+
+template<class S>
+struct Ceil
+{
+ typedef S source_type ;
+
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
+
+ static source_type nearbyint ( argument_type s )
+ {
+#if !defined(BOOST_NO_STDC_NAMESPACE)
+ using std::ceil ;
+#endif
+
+ return ceil(s) ;
+ }
+
+ typedef mpl::integral_c< std::float_round_style, std::round_toward_infinity> round_style ;
+} ;
+
+template<class S>
+struct RoundEven
+{
+ typedef S source_type ;
+
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
+
+ static source_type nearbyint ( argument_type s )
+ {
+ // Algorithm contributed by Guillaume Melquiond
+
+#if !defined(BOOST_NO_STDC_NAMESPACE)
+ using std::floor ;
+ using std::ceil ;
+#endif
+
+ // only works inside the range not at the boundaries
+ S prev = floor(s);
+ S next = ceil(s);
+
+ S rt = (s - prev) - (next - s); // remainder type
+
+ S const zero(0.0);
+ S const two(2.0);
+
+ if ( rt < zero )
+ return prev;
+ else if ( rt > zero )
+ return next;
+ else
+ {
+ bool is_prev_even = two * floor(prev / two) == prev ;
+ return ( is_prev_even ? prev : next ) ;
+ }
+ }
+
+ typedef mpl::integral_c< std::float_round_style, std::round_to_nearest> round_style ;
+} ;
+
+
+enum range_check_result
+{
+ cInRange = 0 ,
+ cNegOverflow = 1 ,
+ cPosOverflow = 2
+} ;
+
+class bad_numeric_cast : public std::bad_cast
+{
+ public:
+
+ virtual const char * what() const throw()
+ { return "bad numeric conversion: overflow"; }
+};
+
+class negative_overflow : public bad_numeric_cast
+{
+ public:
+
+ virtual const char * what() const throw()
+ { return "bad numeric conversion: negative overflow"; }
+};
+class positive_overflow : public bad_numeric_cast
+{
+ public:
+
+ virtual const char * what() const throw()
+ { return "bad numeric conversion: positive overflow"; }
+};
+
+struct def_overflow_handler
+{
+ void operator() ( range_check_result r ) // throw(negative_overflow,positive_overflow)
+ {
+#ifndef BOOST_NO_EXCEPTIONS
+ if ( r == cNegOverflow )
+ throw negative_overflow() ;
+ else if ( r == cPosOverflow )
+ throw positive_overflow() ;
+#else
+ if ( r == cNegOverflow )
+ ::boost::throw_exception(negative_overflow()) ;
+ else if ( r == cPosOverflow )
+ ::boost::throw_exception(positive_overflow()) ;
+#endif
+ }
+} ;
+
+struct silent_overflow_handler
+{
+ void operator() ( range_check_result ) {} // throw()
+} ;
+
+template<class Traits>
+struct raw_converter
+{
+ typedef typename Traits::result_type result_type ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static result_type low_level_convert ( argument_type s ) { return static_cast<result_type>(s) ; }
+} ;
+
+struct UseInternalRangeChecker {} ;
+
+} } // namespace boost::numeric
+
+#endif
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
+
+#include "boost/limits.hpp"
+#include "boost/config.hpp"
+#include "boost/mpl/if.hpp"
+
+namespace boost { namespace numeric { namespace boundsdetail
+{
+ template<class N>
+ class Integral
+ {
+ typedef std::numeric_limits<N> limits ;
+
+ public :
+
+ static N lowest () { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ static N smallest() { return static_cast<N>(1); }
+ } ;
+
+ template<class N>
+ class Float
+ {
+ typedef std::numeric_limits<N> limits ;
+
+ public :
+
+ static N lowest () { return static_cast<N>(-limits::max BOOST_PREVENT_MACRO_SUBSTITUTION ()) ; }
+ static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ static N smallest() { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ } ;
+
+ template<class N>
+ struct get_impl
+ {
+ typedef mpl::bool_< ::std::numeric_limits<N>::is_integer > is_int ;
+
+ typedef Integral<N> impl_int ;
+ typedef Float <N> impl_float ;
+
+ typedef typename mpl::if_<is_int,impl_int,impl_float>::type type ;
+ } ;
+
+} } } // namespace boost::numeric::boundsdetail.
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+
+#include "boost/type_traits/is_arithmetic.hpp"
+#include "boost/type_traits/is_same.hpp"
+#include "boost/type_traits/remove_cv.hpp"
+
+#include "boost/numeric/conversion/detail/meta.hpp"
+#include "boost/numeric/conversion/detail/int_float_mixture.hpp"
+#include "boost/numeric/conversion/detail/sign_mixture.hpp"
+#include "boost/numeric/conversion/detail/udt_builtin_mixture.hpp"
+#include "boost/numeric/conversion/detail/is_subranged.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ //-------------------------------------------------------------------
+ // Implementation of the Conversion Traits for T != S
+ //
+ // This is a VISIBLE base class of the user-level conversion_traits<> class.
+ //-------------------------------------------------------------------
+ template<class T,class S>
+ struct non_trivial_traits_impl
+ {
+ typedef typename get_int_float_mixture <T,S>::type int_float_mixture ;
+ typedef typename get_sign_mixture <T,S>::type sign_mixture ;
+ typedef typename get_udt_builtin_mixture <T,S>::type udt_builtin_mixture ;
+
+ typedef typename get_is_subranged<T,S>::type subranged ;
+
+ typedef mpl::false_ trivial ;
+
+ typedef T target_type ;
+ typedef S source_type ;
+ typedef T result_type ;
+
+ typedef typename mpl::if_< is_arithmetic<S>, S, S const&>::type argument_type ;
+
+ typedef typename mpl::if_<subranged,S,T>::type supertype ;
+ typedef typename mpl::if_<subranged,T,S>::type subtype ;
+ } ;
+
+ //-------------------------------------------------------------------
+ // Implementation of the Conversion Traits for T == S
+ //
+ // This is a VISIBLE base class of the user-level conversion_traits<> class.
+ //-------------------------------------------------------------------
+ template<class N>
+ struct trivial_traits_impl
+ {
+ typedef typename get_int_float_mixture <N,N>::type int_float_mixture ;
+ typedef typename get_sign_mixture <N,N>::type sign_mixture ;
+ typedef typename get_udt_builtin_mixture<N,N>::type udt_builtin_mixture ;
+
+ typedef mpl::false_ subranged ;
+ typedef mpl::true_ trivial ;
+
+ typedef N target_type ;
+ typedef N source_type ;
+ typedef N const& result_type ;
+ typedef N const& argument_type ;
+
+ typedef N supertype ;
+ typedef N subtype ;
+
+ } ;
+
+ //-------------------------------------------------------------------
+ // Top level implementation selector.
+ //-------------------------------------------------------------------
+ template<class T, class S>
+ struct get_conversion_traits
+ {
+ typedef typename remove_cv<T>::type target_type ;
+ typedef typename remove_cv<S>::type source_type ;
+
+ typedef typename is_same<target_type,source_type>::type is_trivial ;
+
+ typedef trivial_traits_impl <target_type> trivial_imp ;
+ typedef non_trivial_traits_impl<target_type,source_type> non_trivial_imp ;
+
+ typedef typename mpl::if_<is_trivial,trivial_imp,non_trivial_imp>::type type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+
+
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
+
+#include <functional>
+
+#include "boost/numeric/conversion/detail/meta.hpp"
+#include "boost/numeric/conversion/detail/conversion_traits.hpp"
+#include "boost/numeric/conversion/bounds.hpp"
+
+#include "boost/type_traits/is_same.hpp"
+
+#include "boost/mpl/integral_c.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ // Integral Constants representing rounding modes
+ typedef mpl::integral_c<std::float_round_style, std::round_toward_zero> round2zero_c ;
+ typedef mpl::integral_c<std::float_round_style, std::round_to_nearest> round2nearest_c ;
+ typedef mpl::integral_c<std::float_round_style, std::round_toward_infinity> round2inf_c ;
+ typedef mpl::integral_c<std::float_round_style, std::round_toward_neg_infinity> round2neg_inf_c ;
+
+ // Metafunction:
+ //
+ // for_round_style<RoundStyle,RoundToZero,RoundToNearest,RoundToInf,RoundToNegInf>::type
+ //
+ // {RoundStyle} Integral Constant specifying a round style as declared above.
+ // {RoundToZero,RoundToNearest,RoundToInf,RoundToNegInf} arbitrary types.
+ //
+ // Selects one of the 4 types according to the value of RoundStyle.
+ //
+ template<class RoundStyle,class RoundToZero,class RoundToNearest,class RoundToInf,class RoundToNegInf>
+ struct for_round_style
+ {
+ typedef ct_switch4<RoundStyle
+ , round2zero_c, round2nearest_c, round2inf_c // round2neg_inf_c
+ , RoundToZero , RoundToNearest , RoundToInf , RoundToNegInf
+ > selector ;
+
+ typedef typename selector::type type ;
+ } ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//--------------------------------------------------------------------------
+// Range Checking Logic.
+//
+// The range checking logic is built up by combining 1 or 2 predicates.
+// Each predicate is encapsulated in a template class and exposes
+// the static member function 'apply'.
+//
+//--------------------------------------------------------------------------
+
+
+ // Because a particular logic can combine either 1 or two predicates, the following
+ // tags are used to allow the predicate applier to receive 2 preds, but optimize away
+ // one of them if it is 'non-applicable'
+ struct non_applicable { typedef mpl::false_ do_apply ; } ;
+ struct applicable { typedef mpl::true_ do_apply ; } ;
+
+
+ //--------------------------------------------------------------------------
+ //
+ // Range Checking Logic implementations.
+ //
+ // The following classes, collectivelly named 'Predicates', are instantiated within
+ // the corresponding range checkers.
+ // Their static member function 'apply' is called to perform the actual range checking logic.
+ //--------------------------------------------------------------------------
+
+ // s < Lowest(T) ? cNegOverflow : cInRange
+ //
+ template<class Traits>
+ struct LT_LoT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s < static_cast<S>(bounds<T>::lowest()) ? cNegOverflow : cInRange ;
+ }
+ } ;
+
+ // s < 0 ? cNegOverflow : cInRange
+ //
+ template<class Traits>
+ struct LT_Zero : applicable
+ {
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s < static_cast<S>(0) ? cNegOverflow : cInRange ;
+ }
+ } ;
+
+ // s <= Lowest(T)-1 ? cNegOverflow : cInRange
+ //
+ template<class Traits>
+ struct LE_PrevLoT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s <= static_cast<S>(bounds<T>::lowest()) - static_cast<S>(1.0)
+ ? cNegOverflow : cInRange ;
+ }
+ } ;
+
+ // s < Lowest(T)-0.5 ? cNegOverflow : cInRange
+ //
+ template<class Traits>
+ struct LT_HalfPrevLoT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s < static_cast<S>(bounds<T>::lowest()) - static_cast<S>(0.5)
+ ? cNegOverflow : cInRange ;
+ }
+ } ;
+
+ // s > Highest(T) ? cPosOverflow : cInRange
+ //
+ template<class Traits>
+ struct GT_HiT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s > static_cast<S>(bounds<T>::highest())
+ ? cPosOverflow : cInRange ;
+ }
+ } ;
+
+ // s >= Lowest(T) + 1 ? cPosOverflow : cInRange
+ //
+ template<class Traits>
+ struct GE_SuccHiT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(1.0)
+ ? cPosOverflow : cInRange ;
+ }
+ } ;
+
+ // s >= Lowest(T) + 0.5 ? cPosgOverflow : cInRange
+ //
+ template<class Traits>
+ struct GT_HalfSuccHiT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(0.5)
+ ? cPosOverflow : cInRange ;
+ }
+ } ;
+
+
+ //--------------------------------------------------------------------------
+ //
+ // Predicate Combiner.
+ //
+ // This helper classes are used to possibly combine the range checking logic
+ // individually performed by the predicates
+ //
+ //--------------------------------------------------------------------------
+
+
+ // Applies both predicates: first 'PredA', and if it equals 'cInRange', 'PredB'
+ template<class PredA, class PredB>
+ struct applyBoth
+ {
+ typedef typename PredA::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ range_check_result r = PredA::apply(s) ;
+ if ( r == cInRange )
+ r = PredB::apply(s);
+ return r ;
+ }
+ } ;
+
+ template<class PredA, class PredB>
+ struct combine
+ {
+ typedef applyBoth<PredA,PredB> Both ;
+ typedef void NNone ; // 'None' is defined as a macro in (/usr/X11R6/include/X11/X.h)
+
+ typedef typename PredA::do_apply do_applyA ;
+ typedef typename PredB::do_apply do_applyB ;
+
+ typedef typename for_both<do_applyA, do_applyB, Both, PredA, PredB, NNone>::type type ;
+ } ;
+
+
+
+
+
+
+
+
+
+
+
+
+//--------------------------------------------------------------------------
+// Range Checker classes.
+//
+// The following classes are VISIBLE base classes of the user-level converter<> class.
+// They supply the optimized 'out_of_range()' and 'validate_range()' static member functions
+// visible in the user interface.
+//
+//--------------------------------------------------------------------------
+
+ // Dummy range checker.
+ template<class Traits>
+ struct dummy_range_checker
+ {
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result out_of_range ( argument_type ) { return cInRange ; }
+ static void validate_range ( argument_type ) {}
+ } ;
+
+ // Generic range checker.
+ //
+ // All the range checking logic for all possible combinations of source and target
+ // can be arranged in terms of one or two predicates, which test overflow on both neg/pos 'sides'
+ // of the ranges.
+ //
+ // These predicates are given here as IsNegOverflow and IsPosOverflow.
+ //
+ template<class Traits, class IsNegOverflow, class IsPosOverflow, class OverflowHandler>
+ struct generic_range_checker
+ {
+ typedef OverflowHandler overflow_handler ;
+
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result out_of_range ( argument_type s )
+ {
+ typedef typename combine<IsNegOverflow,IsPosOverflow>::type Predicate ;
+
+ return Predicate::apply(s);
+ }
+
+ static void validate_range ( argument_type s )
+ { OverflowHandler()( out_of_range(s) ) ; }
+ } ;
+
+
+
+//--------------------------------------------------------------------------
+//
+// Selectors for the optimized Range Checker class.
+//
+//--------------------------------------------------------------------------
+
+ template<class Traits,class OverflowHandler>
+ struct GetRC_Sig2Sig_or_Unsig2Unsig
+ {
+ typedef dummy_range_checker<Traits> Dummy ;
+
+ typedef LT_LoT<Traits> Pred1 ;
+ typedef GT_HiT<Traits> Pred2 ;
+
+ typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
+
+ typedef typename Traits::subranged subranged ;
+
+ typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
+ } ;
+
+ template<class Traits, class OverflowHandler>
+ struct GetRC_Sig2Unsig
+ {
+ typedef LT_Zero<Traits> Pred1 ;
+ typedef GT_HiT <Traits> Pred2 ;
+
+ typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ChoiceA ;
+
+ typedef generic_range_checker<Traits,Pred1,non_applicable,OverflowHandler> ChoiceB ;
+
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+
+ typedef typename subranged_Unsig2Sig<S,T>::type oposite_subranged ;
+
+ typedef typename mpl::not_<oposite_subranged>::type positively_subranged ;
+
+ typedef typename mpl::if_<positively_subranged,ChoiceA,ChoiceB>::type type ;
+ } ;
+
+ template<class Traits, class OverflowHandler>
+ struct GetRC_Unsig2Sig
+ {
+ typedef GT_HiT<Traits> Pred1 ;
+
+ typedef generic_range_checker<Traits,non_applicable,Pred1,OverflowHandler> type ;
+ } ;
+
+ template<class Traits,class OverflowHandler>
+ struct GetRC_Int2Int
+ {
+ typedef GetRC_Sig2Sig_or_Unsig2Unsig<Traits,OverflowHandler> Sig2SigQ ;
+ typedef GetRC_Sig2Unsig <Traits,OverflowHandler> Sig2UnsigQ ;
+ typedef GetRC_Unsig2Sig <Traits,OverflowHandler> Unsig2SigQ ;
+ typedef Sig2SigQ Unsig2UnsigQ ;
+
+ typedef typename Traits::sign_mixture sign_mixture ;
+
+ typedef typename
+ for_sign_mixture<sign_mixture,Sig2SigQ,Sig2UnsigQ,Unsig2SigQ,Unsig2UnsigQ>::type
+ selector ;
+
+ typedef typename selector::type type ;
+ } ;
+
+ template<class Traits>
+ struct GetRC_Int2Float
+ {
+ typedef dummy_range_checker<Traits> type ;
+ } ;
+
+ template<class Traits, class OverflowHandler, class Float2IntRounder>
+ struct GetRC_Float2Int
+ {
+ typedef LE_PrevLoT <Traits> Pred1 ;
+ typedef GE_SuccHiT <Traits> Pred2 ;
+ typedef LT_HalfPrevLoT<Traits> Pred3 ;
+ typedef GT_HalfSuccHiT<Traits> Pred4 ;
+ typedef GT_HiT <Traits> Pred5 ;
+ typedef LT_LoT <Traits> Pred6 ;
+
+ typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ToZero ;
+ typedef generic_range_checker<Traits,Pred3,Pred4,OverflowHandler> ToNearest ;
+ typedef generic_range_checker<Traits,Pred1,Pred5,OverflowHandler> ToInf ;
+ typedef generic_range_checker<Traits,Pred6,Pred2,OverflowHandler> ToNegInf ;
+
+ typedef typename Float2IntRounder::round_style round_style ;
+
+ typedef typename for_round_style<round_style,ToZero,ToNearest,ToInf,ToNegInf>::type type ;
+ } ;
+
+ template<class Traits, class OverflowHandler>
+ struct GetRC_Float2Float
+ {
+ typedef dummy_range_checker<Traits> Dummy ;
+
+ typedef LT_LoT<Traits> Pred1 ;
+ typedef GT_HiT<Traits> Pred2 ;
+
+ typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
+
+ typedef typename Traits::subranged subranged ;
+
+ typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
+ } ;
+
+ template<class Traits, class OverflowHandler, class Float2IntRounder>
+ struct GetRC_BuiltIn2BuiltIn
+ {
+ typedef GetRC_Int2Int<Traits,OverflowHandler> Int2IntQ ;
+ typedef GetRC_Int2Float<Traits> Int2FloatQ ;
+ typedef GetRC_Float2Int<Traits,OverflowHandler,Float2IntRounder> Float2IntQ ;
+ typedef GetRC_Float2Float<Traits,OverflowHandler> Float2FloatQ ;
+
+ typedef typename Traits::int_float_mixture int_float_mixture ;
+
+ typedef typename for_int_float_mixture<int_float_mixture, Int2IntQ, Int2FloatQ, Float2IntQ, Float2FloatQ>::type selector ;
+
+ typedef typename selector::type type ;
+ } ;
+
+ template<class Traits, class OverflowHandler, class Float2IntRounder>
+ struct GetRC
+ {
+ typedef GetRC_BuiltIn2BuiltIn<Traits,OverflowHandler,Float2IntRounder> BuiltIn2BuiltInQ ;
+
+ typedef dummy_range_checker<Traits> Dummy ;
+
+ typedef mpl::identity<Dummy> DummyQ ;
+
+ typedef typename Traits::udt_builtin_mixture udt_builtin_mixture ;
+
+ typedef typename for_udt_builtin_mixture<udt_builtin_mixture,BuiltIn2BuiltInQ,DummyQ,DummyQ,DummyQ>::type selector ;
+
+ typedef typename selector::type type ;
+ } ;
+
+
+
+
+//--------------------------------------------------------------------------
+// Converter classes.
+//
+// The following classes are VISIBLE base classes of the user-level converter<> class.
+// They supply the optimized 'nearbyint()' and 'convert()' static member functions
+// visible in the user interface.
+//
+//--------------------------------------------------------------------------
+
+ //
+ // Trivial Converter : used when (cv-unqualified) T == (cv-unqualified) S
+ //
+ template<class Traits>
+ struct trivial_converter_impl : public std::unary_function< BOOST_DEDUCED_TYPENAME Traits::argument_type
+ ,BOOST_DEDUCED_TYPENAME Traits::result_type
+ >
+ ,public dummy_range_checker<Traits>
+ {
+ typedef Traits traits ;
+
+ typedef typename Traits::source_type source_type ;
+ typedef typename Traits::argument_type argument_type ;
+ typedef typename Traits::result_type result_type ;
+
+ static result_type low_level_convert ( argument_type s ) { return s ; }
+ static source_type nearbyint ( argument_type s ) { return s ; }
+ static result_type convert ( argument_type s ) { return s ; }
+ } ;
+
+
+ //
+ // Rounding Converter : used for float to integral conversions.
+ //
+ template<class Traits,class RangeChecker,class RawConverter,class Float2IntRounder>
+ struct rounding_converter : public std::unary_function< BOOST_DEDUCED_TYPENAME Traits::argument_type
+ ,BOOST_DEDUCED_TYPENAME Traits::result_type
+ >
+ ,public RangeChecker
+ ,public Float2IntRounder
+ ,public RawConverter
+ {
+ typedef RangeChecker RangeCheckerBase ;
+ typedef Float2IntRounder Float2IntRounderBase ;
+ typedef RawConverter RawConverterBase ;
+
+ typedef Traits traits ;
+
+ typedef typename Traits::source_type source_type ;
+ typedef typename Traits::argument_type argument_type ;
+ typedef typename Traits::result_type result_type ;
+
+ static result_type convert ( argument_type s )
+ {
+ RangeCheckerBase::validate_range(s);
+ source_type s1 = Float2IntRounderBase::nearbyint(s);
+ return RawConverterBase::low_level_convert(s1);
+ }
+ } ;
+
+
+ //
+ // Non-Rounding Converter : used for all other conversions.
+ //
+ template<class Traits,class RangeChecker,class RawConverter>
+ struct non_rounding_converter : public std::unary_function< BOOST_DEDUCED_TYPENAME Traits::argument_type
+ ,BOOST_DEDUCED_TYPENAME Traits::result_type
+ >
+ ,public RangeChecker
+ ,public RawConverter
+ {
+ typedef RangeChecker RangeCheckerBase ;
+ typedef RawConverter RawConverterBase ;
+
+ typedef Traits traits ;
+
+ typedef typename Traits::source_type source_type ;
+ typedef typename Traits::argument_type argument_type ;
+ typedef typename Traits::result_type result_type ;
+
+ static source_type nearbyint ( argument_type s ) { return s ; }
+
+ static result_type convert ( argument_type s )
+ {
+ RangeCheckerBase::validate_range(s);
+ return RawConverterBase::low_level_convert(s);
+ }
+ } ;
+
+
+
+
+//--------------------------------------------------------------------------
+//
+// Selectors for the optimized Converter class.
+//
+//--------------------------------------------------------------------------
+
+ template<class Traits,class OverflowHandler,class Float2IntRounder,class RawConverter, class UserRangeChecker>
+ struct get_non_trivial_converter
+ {
+ typedef GetRC<Traits,OverflowHandler,Float2IntRounder> InternalRangeCheckerQ ;
+
+ typedef is_same<UserRangeChecker,UseInternalRangeChecker> use_internal_RC ;
+
+ typedef mpl::identity<UserRangeChecker> UserRangeCheckerQ ;
+
+ typedef typename
+ mpl::eval_if<use_internal_RC,InternalRangeCheckerQ,UserRangeCheckerQ>::type
+ RangeChecker ;
+
+ typedef non_rounding_converter<Traits,RangeChecker,RawConverter> NonRounding ;
+ typedef rounding_converter<Traits,RangeChecker,RawConverter,Float2IntRounder> Rounding ;
+
+ typedef mpl::identity<NonRounding> NonRoundingQ ;
+ typedef mpl::identity<Rounding> RoundingQ ;
+
+ typedef typename Traits::int_float_mixture int_float_mixture ;
+
+ typedef typename
+ for_int_float_mixture<int_float_mixture, NonRoundingQ, NonRoundingQ, RoundingQ, NonRoundingQ>::type
+ selector ;
+
+ typedef typename selector::type type ;
+ } ;
+
+ template< class Traits
+ ,class OverflowHandler
+ ,class Float2IntRounder
+ ,class RawConverter
+ ,class UserRangeChecker
+ >
+ struct get_converter_impl
+ {
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT( 0x0561 ) )
+ // bcc55 prefers sometimes template parameters to be explicit local types.
+ // (notice that is is illegal to reuse the names like this)
+ typedef Traits Traits ;
+ typedef OverflowHandler OverflowHandler ;
+ typedef Float2IntRounder Float2IntRounder ;
+ typedef RawConverter RawConverter ;
+ typedef UserRangeChecker UserRangeChecker ;
+#endif
+
+ typedef trivial_converter_impl<Traits> Trivial ;
+ typedef mpl::identity <Trivial> TrivialQ ;
+
+ typedef get_non_trivial_converter< Traits
+ ,OverflowHandler
+ ,Float2IntRounder
+ ,RawConverter
+ ,UserRangeChecker
+ > NonTrivialQ ;
+
+ typedef typename Traits::trivial trivial ;
+
+ typedef typename mpl::eval_if<trivial,TrivialQ,NonTrivialQ>::type type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+
+
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_INT_FLOAT_MIXTURE_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_INT_FLOAT_MIXTURE_FLC_12NOV2002_HPP
+
+#include "boost/config.hpp"
+#include "boost/limits.hpp"
+
+#include "boost/numeric/conversion/int_float_mixture_enum.hpp"
+#include "boost/numeric/conversion/detail/meta.hpp"
+
+#include "boost/mpl/integral_c.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ // Integral Constants for 'IntFloatMixture'
+ typedef mpl::integral_c<int_float_mixture_enum, integral_to_integral> int2int_c ;
+ typedef mpl::integral_c<int_float_mixture_enum, integral_to_float> int2float_c ;
+ typedef mpl::integral_c<int_float_mixture_enum, float_to_integral> float2int_c ;
+ typedef mpl::integral_c<int_float_mixture_enum, float_to_float> float2float_c ;
+
+ // Metafunction:
+ //
+ // get_int_float_mixture<T,S>::type
+ //
+ // Selects the appropriate Int-Float Mixture Integral Constant for the combination T,S.
+ //
+ template<class T,class S>
+ struct get_int_float_mixture
+ {
+ typedef mpl::bool_< ::std::numeric_limits<S>::is_integer > S_int ;
+ typedef mpl::bool_< ::std::numeric_limits<T>::is_integer > T_int ;
+
+ typedef typename
+ for_both<S_int, T_int, int2int_c, int2float_c, float2int_c, float2float_c>::type
+ type ;
+ } ;
+
+ // Metafunction:
+ //
+ // for_int_float_mixture<Mixture,int_int,int_float,float_int,float_float>::type
+ //
+ // {Mixture} is one of the Integral Constants for Mixture, declared above.
+ // {int_int,int_float,float_int,float_float} are aribtrary types. (not metafunctions)
+ //
+ // According to the value of 'IntFloatMixture', selects the corresponding type.
+ //
+ template<class IntFloatMixture, class Int2Int, class Int2Float, class Float2Int, class Float2Float>
+ struct for_int_float_mixture
+ {
+ typedef typename
+ ct_switch4<IntFloatMixture
+ ,int2int_c, int2float_c, float2int_c // default
+ ,Int2Int , Int2Float , Float2Int , Float2Float
+ >::type
+ type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_IS_SUBRANGED_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_IS_SUBRANGED_FLC_12NOV2002_HPP
+
+#include "boost/config.hpp"
+#include "boost/limits.hpp"
+
+#include "boost/mpl/int.hpp"
+#include "boost/mpl/multiplies.hpp"
+#include "boost/mpl/less.hpp"
+#include "boost/mpl/equal_to.hpp"
+
+#include "boost/type_traits/is_same.hpp"
+
+#include "boost/numeric/conversion/detail/meta.hpp"
+#include "boost/numeric/conversion/detail/int_float_mixture.hpp"
+#include "boost/numeric/conversion/detail/sign_mixture.hpp"
+#include "boost/numeric/conversion/detail/udt_builtin_mixture.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ //---------------------------------------------------------------
+ // Implementations of the compile time predicate "T is subranged"
+ //---------------------------------------------------------------
+
+ // for integral to integral conversions
+ template<class T,class S>
+ struct subranged_Sig2Unsig
+ {
+ // Signed to unsigned conversions are 'subranged' because of possible loose
+ // of negative values.
+ typedef mpl::true_ type ;
+ } ;
+
+ // for unsigned integral to signed integral conversions
+ template<class T,class S>
+ struct subranged_Unsig2Sig
+ {
+ // IMPORTANT NOTE:
+ //
+ // This code assumes that signed/unsigned integral values are represented
+ // such that:
+ //
+ // numeric_limits<signed T>::digits + 1 == numeric_limits<unsigned T>::digits
+ //
+ // The '+1' is required since numeric_limits<>::digits gives 1 bit less for signed integral types.
+ //
+ // This fact is used by the following logic:
+ //
+ // if ( (numeric_limits<T>::digits+1) < (2*numeric_limits<S>::digits) )
+ // then the conversion is subranged.
+ //
+
+ typedef mpl::int_< ::std::numeric_limits<S>::digits > S_digits ;
+ typedef mpl::int_< ::std::numeric_limits<T>::digits > T_digits ;
+
+ // T is signed, so take digits+1
+ typedef typename T_digits::next u_T_digits ;
+
+ typedef mpl::int_<2> Two ;
+
+ typedef typename mpl::multiplies<S_digits,Two>::type S_digits_times_2 ;
+
+ typedef typename mpl::less<u_T_digits,S_digits_times_2>::type type ;
+ } ;
+
+ // for integral to integral conversions of the same sign.
+ template<class T,class S>
+ struct subranged_SameSign
+ {
+ // An integral conversion of the same sign is subranged if digits(T) < digits(S).
+
+ typedef mpl::int_< ::std::numeric_limits<S>::digits > S_digits ;
+ typedef mpl::int_< ::std::numeric_limits<T>::digits > T_digits ;
+
+ typedef typename mpl::less<T_digits,S_digits>::type type ;
+ } ;
+
+ // for integral to float conversions
+ template<class T,class S>
+ struct subranged_Int2Float
+ {
+ typedef mpl::false_ type ;
+ } ;
+
+ // for float to integral conversions
+ template<class T,class S>
+ struct subranged_Float2Int
+ {
+ typedef mpl::true_ type ;
+ } ;
+
+ // for float to float conversions
+ template<class T,class S>
+ struct subranged_Float2Float
+ {
+ // If both T and S are floats,
+ // compare exponent bits and if they match, mantisa bits.
+
+ typedef mpl::int_< ::std::numeric_limits<S>::digits > S_mantisa ;
+ typedef mpl::int_< ::std::numeric_limits<T>::digits > T_mantisa ;
+
+ typedef mpl::int_< ::std::numeric_limits<S>::max_exponent > S_exponent ;
+ typedef mpl::int_< ::std::numeric_limits<T>::max_exponent > T_exponent ;
+
+ typedef typename mpl::less<T_exponent,S_exponent>::type T_smaller_exponent ;
+
+ typedef typename mpl::equal_to<T_exponent,S_exponent>::type equal_exponents ;
+
+ typedef mpl::less<T_mantisa,S_mantisa> T_smaller_mantisa ;
+
+ typedef mpl::eval_if<equal_exponents,T_smaller_mantisa,mpl::false_> not_bigger_exponent_case ;
+
+ typedef typename
+ mpl::eval_if<T_smaller_exponent,mpl::true_,not_bigger_exponent_case>::type
+ type ;
+ } ;
+
+ // for Udt to built-in conversions
+ template<class T,class S>
+ struct subranged_Udt2BuiltIn
+ {
+ typedef mpl::true_ type ;
+ } ;
+
+ // for built-in to Udt conversions
+ template<class T,class S>
+ struct subranged_BuiltIn2Udt
+ {
+ typedef mpl::false_ type ;
+ } ;
+
+ // for Udt to Udt conversions
+ template<class T,class S>
+ struct subranged_Udt2Udt
+ {
+ typedef mpl::false_ type ;
+ } ;
+
+ //-------------------------------------------------------------------
+ // Selectors for the implementations of the subranged predicate
+ //-------------------------------------------------------------------
+
+ template<class T,class S>
+ struct get_subranged_Int2Int
+ {
+ typedef subranged_SameSign<T,S> Sig2Sig ;
+ typedef subranged_Sig2Unsig<T,S> Sig2Unsig ;
+ typedef subranged_Unsig2Sig<T,S> Unsig2Sig ;
+ typedef Sig2Sig Unsig2Unsig ;
+
+ typedef typename get_sign_mixture<T,S>::type sign_mixture ;
+
+ typedef typename
+ for_sign_mixture<sign_mixture, Sig2Sig, Sig2Unsig, Unsig2Sig, Unsig2Unsig>::type
+ type ;
+ } ;
+
+ template<class T,class S>
+ struct get_subranged_BuiltIn2BuiltIn
+ {
+ typedef get_subranged_Int2Int<T,S> Int2IntQ ;
+
+ typedef subranged_Int2Float <T,S> Int2Float ;
+ typedef subranged_Float2Int <T,S> Float2Int ;
+ typedef subranged_Float2Float<T,S> Float2Float ;
+
+ typedef mpl::identity<Int2Float > Int2FloatQ ;
+ typedef mpl::identity<Float2Int > Float2IntQ ;
+ typedef mpl::identity<Float2Float> Float2FloatQ ;
+
+ typedef typename get_int_float_mixture<T,S>::type int_float_mixture ;
+
+ typedef for_int_float_mixture<int_float_mixture, Int2IntQ, Int2FloatQ, Float2IntQ, Float2FloatQ> for_ ;
+
+ typedef typename for_::type selected ;
+
+ typedef typename selected::type type ;
+ } ;
+
+ template<class T,class S>
+ struct get_subranged
+ {
+ typedef get_subranged_BuiltIn2BuiltIn<T,S> BuiltIn2BuiltInQ ;
+
+ typedef subranged_BuiltIn2Udt<T,S> BuiltIn2Udt ;
+ typedef subranged_Udt2BuiltIn<T,S> Udt2BuiltIn ;
+ typedef subranged_Udt2Udt<T,S> Udt2Udt ;
+
+ typedef mpl::identity<BuiltIn2Udt> BuiltIn2UdtQ ;
+ typedef mpl::identity<Udt2BuiltIn> Udt2BuiltInQ ;
+ typedef mpl::identity<Udt2Udt > Udt2UdtQ ;
+
+ typedef typename get_udt_builtin_mixture<T,S>::type udt_builtin_mixture ;
+
+ typedef typename
+ for_udt_builtin_mixture<udt_builtin_mixture, BuiltIn2BuiltInQ, BuiltIn2UdtQ, Udt2BuiltInQ, Udt2UdtQ>::type
+ selected ;
+
+ typedef typename selected::type selected2 ;
+
+ typedef typename selected2::type type ;
+ } ;
+
+
+ //-------------------------------------------------------------------
+ // Top level implementation selector.
+ //-------------------------------------------------------------------
+ template<class T, class S>
+ struct get_is_subranged
+ {
+ typedef get_subranged<T,S> non_trivial_case ;
+ typedef mpl::identity<mpl::false_> trivial_case ;
+
+ typedef is_same<T,S> is_trivial ;
+
+ typedef typename mpl::if_<is_trivial,trivial_case,non_trivial_case>::type selected ;
+
+ typedef typename selected::type type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+
+
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_META_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_META_FLC_12NOV2002_HPP
+
+#include "boost/type_traits/remove_cv.hpp"
+
+#include "boost/mpl/if.hpp"
+#include "boost/mpl/eval_if.hpp"
+#include "boost/mpl/equal_to.hpp"
+#include "boost/mpl/not.hpp"
+#include "boost/mpl/and.hpp"
+#include "boost/mpl/bool.hpp"
+#include "boost/mpl/identity.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ template< class T1, class T2>
+ struct equal_to
+ {
+ #if !defined(__BORLANDC__)
+
+ enum { x = ( BOOST_MPL_AUX_VALUE_WKND(T1)::value == BOOST_MPL_AUX_VALUE_WKND(T2)::value ) };
+
+ BOOST_STATIC_CONSTANT(bool, value = x);
+
+ typedef mpl::bool_<value> type;
+
+ #else
+
+ BOOST_STATIC_CONSTANT(bool, value = (
+ BOOST_MPL_AUX_VALUE_WKND(T1)::value
+ == BOOST_MPL_AUX_VALUE_WKND(T2)::value
+ ));
+
+ typedef mpl::bool_<(
+ BOOST_MPL_AUX_VALUE_WKND(T1)::value
+ == BOOST_MPL_AUX_VALUE_WKND(T2)::value
+ )> type;
+ #endif
+ };
+
+// Metafunction:
+ //
+ // ct_switch4<Value,Case0Val,Case1Val,Case2Val,Case0Type,Case1Type,Case2Type,DefaultType>::type
+ //
+ // {Value,Case(X)Val} are Integral Constants (such as: mpl::int_<>)
+ // {Case(X)Type,DefaultType} are arbitrary types. (not metafunctions)
+ //
+ // Returns Case(X)Type if Val==Case(X)Val; DefaultType otherwise.
+ //
+ template<class Value,
+ class Case0Val,
+ class Case1Val,
+ class Case2Val,
+ class Case0Type,
+ class Case1Type,
+ class Case2Type,
+ class DefaultType
+ >
+ struct ct_switch4
+ {
+ typedef mpl::identity<Case0Type> Case0TypeQ ;
+ typedef mpl::identity<Case1Type> Case1TypeQ ;
+
+ typedef equal_to<Value,Case0Val> is_case0 ;
+ typedef equal_to<Value,Case1Val> is_case1 ;
+ typedef equal_to<Value,Case2Val> is_case2 ;
+
+ typedef mpl::if_<is_case2,Case2Type,DefaultType> choose_2_3Q ;
+ typedef mpl::eval_if<is_case1,Case1TypeQ,choose_2_3Q> choose_1_2_3Q ;
+
+ typedef typename
+ mpl::eval_if<is_case0,Case0TypeQ,choose_1_2_3Q>::type
+ type ;
+ } ;
+
+
+
+
+ // Metafunction:
+ //
+ // for_both<expr0,expr1,TT,TF,FT,FF>::type
+ //
+ // {exp0,expr1} are Boolean Integral Constants
+ // {TT,TF,FT,FF} are aribtrary types. (not metafunctions)
+ //
+ // According to the combined boolean value of 'expr0 && expr1', selects the corresponding type.
+ //
+ template<class expr0, class expr1, class TT, class TF, class FT, class FF>
+ struct for_both
+ {
+ typedef mpl::identity<TF> TF_Q ;
+ typedef mpl::identity<TT> TT_Q ;
+
+ typedef typename mpl::not_<expr0>::type not_expr0 ;
+ typedef typename mpl::not_<expr1>::type not_expr1 ;
+
+ typedef typename mpl::and_<expr0,expr1>::type caseTT ;
+ typedef typename mpl::and_<expr0,not_expr1>::type caseTF ;
+ typedef typename mpl::and_<not_expr0,expr1>::type caseFT ;
+
+ typedef mpl::if_<caseFT,FT,FF> choose_FT_FF_Q ;
+ typedef mpl::eval_if<caseTF,TF_Q,choose_FT_FF_Q> choose_TF_FT_FF_Q ;
+
+ typedef typename mpl::eval_if<caseTT,TT_Q,choose_TF_FT_FF_Q>::type type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+
+
--- /dev/null
+//
+//! Copyright (c) 2011-2012
+//! Brandon Kohn
+//
+// 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)
+//
+
+#if !defined(BOOST_NUMERIC_CONVERSION_DONT_USE_PREPROCESSED_FILES)
+
+ #include <boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp>
+
+ #if !defined(BOOST_NO_LONG_LONG)
+ #include <boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp>
+ #endif
+
+#else
+#if !BOOST_PP_IS_ITERATING
+
+ #include <boost/preprocessor/seq/elem.hpp>
+ #include <boost/preprocessor/seq/size.hpp>
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+ #pragma wave option(preserve: 2, line: 0, output: "preprocessed/numeric_cast_traits_common.hpp")
+ #endif
+//
+//! Copyright (c) 2011-2012
+//! Brandon Kohn
+//
+// 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)
+//
+ #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+ #pragma wave option(preserve: 1)
+ #endif
+
+ //! These are the assumed common built in fundamental types (not typedefs/macros.)
+ #define BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES() \
+ (char) \
+ (signed char) \
+ (unsigned char) \
+ (short) \
+ (unsigned short) \
+ (int) \
+ (unsigned int) \
+ (long) \
+ (unsigned long) \
+ (float) \
+ (double) \
+ (long double) \
+ /***/
+
+ #define BOOST_NUMERIC_CONVERSION_SEQ_A() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()
+ #define BOOST_NUMERIC_CONVERSION_SEQ_B() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()
+
+namespace boost { namespace numeric {
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_A())), <boost/numeric/conversion/detail/numeric_cast_traits.hpp>))
+ #include BOOST_PP_ITERATE()
+
+}}//namespace boost::numeric;
+
+ #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+ #pragma wave option(output: null)
+ #endif
+
+ #if ( defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) ) || !defined(BOOST_NO_LONG_LONG)
+
+ #undef BOOST_NUMERIC_CONVERSION_SEQ_A
+ #undef BOOST_NUMERIC_CONVERSION_SEQ_B
+
+ #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+ #pragma wave option(preserve: 2, line: 0, output: "preprocessed/numeric_cast_traits_long_long.hpp")
+ #endif
+
+//
+//! Copyright (c) 2011-2012
+//! Brandon Kohn
+//
+// 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)
+//
+ #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+ #pragma wave option(preserve: 1)
+ #endif
+
+namespace boost { namespace numeric {
+
+ #define BOOST_NUMERIC_CONVERSION_SEQ_A() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()(boost::long_long_type)(boost::ulong_long_type)
+ #define BOOST_NUMERIC_CONVERSION_SEQ_B() (boost::long_long_type)(boost::ulong_long_type)
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_A())), <boost/numeric/conversion/detail/numeric_cast_traits.hpp>))
+ #include BOOST_PP_ITERATE()
+
+}}//namespace boost::numeric;
+
+ #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+ #pragma wave option(output: null)
+ #endif
+
+ #endif
+
+ #undef BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES
+ #undef BOOST_NUMERIC_CONVERSION_SEQ_A
+ #undef BOOST_NUMERIC_CONVERSION_SEQ_B
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ #define BOOST_PP_ITERATION_PARAMS_2 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_B())), <boost/numeric/conversion/detail/numeric_cast_traits.hpp>))
+ #include BOOST_PP_ITERATE()
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+ //! Generate default traits for the specified source and target.
+ #define BOOST_NUMERIC_CONVERSION_A BOOST_PP_FRAME_ITERATION(1)
+ #define BOOST_NUMERIC_CONVERSION_B BOOST_PP_FRAME_ITERATION(2)
+
+ template <>
+ struct numeric_cast_traits
+ <
+ BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_A, BOOST_NUMERIC_CONVERSION_SEQ_A())
+ , BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_B, BOOST_NUMERIC_CONVERSION_SEQ_B())
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_B, BOOST_NUMERIC_CONVERSION_SEQ_B())> rounding_policy;
+ };
+
+ #undef BOOST_NUMERIC_CONVERSION_A
+ #undef BOOST_NUMERIC_CONVERSION_B
+
+#endif//! Depth 2.
+#endif// BOOST_NUMERIC_CONVERSION_DONT_USE_PREPROCESSED_FILES
--- /dev/null
+// boost cast.hpp header file ----------------------------------------------//
+
+// (C) Copyright Kevlin Henney and Dave Abrahams 1999.
+// 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)
+
+// See http://www.boost.org/libs/conversion for Documentation.
+
+// Revision History
+// 23 JUN 05 Code extracted from /boost/cast.hpp into this new header.
+// Keeps this legacy version of numeric_cast<> for old compilers
+// wich can't compile the new version in /boost/numeric/conversion/cast.hpp
+// (Fernando Cacciola)
+// 02 Apr 01 Removed BOOST_NO_LIMITS workarounds and included
+// <boost/limits.hpp> instead (the workaround did not
+// actually compile when BOOST_NO_LIMITS was defined in
+// any case, so we loose nothing). (John Maddock)
+// 21 Jan 01 Undid a bug I introduced yesterday. numeric_cast<> never
+// worked with stock GCC; trying to get it to do that broke
+// vc-stlport.
+// 20 Jan 01 Moved BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS to config.hpp.
+// Removed unused BOOST_EXPLICIT_TARGET macro. Moved
+// boost::detail::type to boost/type.hpp. Made it compile with
+// stock gcc again (Dave Abrahams)
+// 29 Nov 00 Remove nested namespace cast, cleanup spacing before Formal
+// Review (Beman Dawes)
+// 19 Oct 00 Fix numeric_cast for floating-point types (Dave Abrahams)
+// 15 Jul 00 Suppress numeric_cast warnings for GCC, Borland and MSVC
+// (Dave Abrahams)
+// 30 Jun 00 More MSVC6 wordarounds. See comments below. (Dave Abrahams)
+// 28 Jun 00 Removed implicit_cast<>. See comment below. (Beman Dawes)
+// 27 Jun 00 More MSVC6 workarounds
+// 15 Jun 00 Add workarounds for MSVC6
+// 2 Feb 00 Remove bad_numeric_cast ";" syntax error (Doncho Angelov)
+// 26 Jan 00 Add missing throw() to bad_numeric_cast::what(0 (Adam Levar)
+// 29 Dec 99 Change using declarations so usages in other namespaces work
+// correctly (Dave Abrahams)
+// 23 Sep 99 Change polymorphic_downcast assert to also detect M.I. errors
+// as suggested Darin Adler and improved by Valentin Bonnard.
+// 2 Sep 99 Remove controversial asserts, simplify, rename.
+// 30 Aug 99 Move to cast.hpp, replace value_cast with numeric_cast,
+// place in nested namespace.
+// 3 Aug 99 Initial version
+
+#ifndef BOOST_OLD_NUMERIC_CAST_HPP
+#define BOOST_OLD_NUMERIC_CAST_HPP
+
+# include <boost/config.hpp>
+# include <cassert>
+# include <typeinfo>
+# include <boost/type.hpp>
+# include <boost/limits.hpp>
+# include <boost/numeric/conversion/converter_policies.hpp>
+
+// It has been demonstrated numerous times that MSVC 6.0 fails silently at link
+// time if you use a template function which has template parameters that don't
+// appear in the function's argument list.
+//
+// TODO: Add this to config.hpp?
+// FLC: This macro is repeated in boost/cast.hpp but only locally (is undefined at the bottom)
+// so is OK to reproduce it here.
+# if defined(BOOST_MSVC) && BOOST_MSVC < 1300
+# define BOOST_EXPLICIT_DEFAULT_TARGET , ::boost::type<Target>* = 0
+# else
+# define BOOST_EXPLICIT_DEFAULT_TARGET
+# endif
+
+namespace boost
+{
+ using numeric::bad_numeric_cast;
+
+// LEGACY numeric_cast [only for some old broken compilers] --------------------------------------//
+
+// Contributed by Kevlin Henney
+
+// numeric_cast ------------------------------------------------------------//
+
+#if !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || defined(BOOST_SGI_CPP_LIMITS)
+
+ namespace detail
+ {
+ template <class T>
+ struct signed_numeric_limits : std::numeric_limits<T>
+ {
+ static inline T min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+ return (std::numeric_limits<T>::min)() >= 0
+ // unary minus causes integral promotion, thus the static_cast<>
+ ? static_cast<T>(-(std::numeric_limits<T>::max)())
+ : (std::numeric_limits<T>::min)();
+ };
+ };
+
+ // Move to namespace boost in utility.hpp?
+ template <class T, bool specialized>
+ struct fixed_numeric_limits_base
+ : public if_true< std::numeric_limits<T>::is_signed >
+ ::BOOST_NESTED_TEMPLATE then< signed_numeric_limits<T>,
+ std::numeric_limits<T>
+ >::type
+ {};
+
+ template <class T>
+ struct fixed_numeric_limits
+ : fixed_numeric_limits_base<T,(std::numeric_limits<T>::is_specialized)>
+ {};
+
+# ifdef BOOST_HAS_LONG_LONG
+ // cover implementations which supply no specialization for long
+ // long / unsigned long long. Not intended to be full
+ // numeric_limits replacements, but good enough for numeric_cast<>
+ template <>
+ struct fixed_numeric_limits_base< ::boost::long_long_type, false>
+ {
+ BOOST_STATIC_CONSTANT(bool, is_specialized = true);
+ BOOST_STATIC_CONSTANT(bool, is_signed = true);
+ static ::boost::long_long_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+# ifdef LONGLONG_MAX
+ return LONGLONG_MAX;
+# else
+ return 9223372036854775807LL; // hope this is portable
+# endif
+ }
+
+ static ::boost::long_long_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+# ifdef LONGLONG_MIN
+ return LONGLONG_MIN;
+# else
+ return -( 9223372036854775807LL )-1; // hope this is portable
+# endif
+ }
+ };
+
+ template <>
+ struct fixed_numeric_limits_base< ::boost::ulong_long_type, false>
+ {
+ BOOST_STATIC_CONSTANT(bool, is_specialized = true);
+ BOOST_STATIC_CONSTANT(bool, is_signed = false);
+ static ::boost::ulong_long_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+# ifdef ULONGLONG_MAX
+ return ULONGLONG_MAX;
+# else
+ return 0xffffffffffffffffULL; // hope this is portable
+# endif
+ }
+
+ static ::boost::ulong_long_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }
+ };
+# endif
+ } // namespace detail
+
+// less_than_type_min -
+ // x_is_signed should be numeric_limits<X>::is_signed
+ // y_is_signed should be numeric_limits<Y>::is_signed
+ // y_min should be numeric_limits<Y>::min()
+ //
+ // check(x, y_min) returns true iff x < y_min without invoking comparisons
+ // between signed and unsigned values.
+ //
+ // "poor man's partial specialization" is in use here.
+ template <bool x_is_signed, bool y_is_signed>
+ struct less_than_type_min
+ {
+ template <class X, class Y>
+ static bool check(X x, Y y_min)
+ { return x < y_min; }
+ };
+
+ template <>
+ struct less_than_type_min<false, true>
+ {
+ template <class X, class Y>
+ static bool check(X, Y)
+ { return false; }
+ };
+
+ template <>
+ struct less_than_type_min<true, false>
+ {
+ template <class X, class Y>
+ static bool check(X x, Y)
+ { return x < 0; }
+ };
+
+ // greater_than_type_max -
+ // same_sign should be:
+ // numeric_limits<X>::is_signed == numeric_limits<Y>::is_signed
+ // y_max should be numeric_limits<Y>::max()
+ //
+ // check(x, y_max) returns true iff x > y_max without invoking comparisons
+ // between signed and unsigned values.
+ //
+ // "poor man's partial specialization" is in use here.
+ template <bool same_sign, bool x_is_signed>
+ struct greater_than_type_max;
+
+ template<>
+ struct greater_than_type_max<true, true>
+ {
+ template <class X, class Y>
+ static inline bool check(X x, Y y_max)
+ { return x > y_max; }
+ };
+
+ template <>
+ struct greater_than_type_max<false, true>
+ {
+ // What does the standard say about this? I think it's right, and it
+ // will work with every compiler I know of.
+ template <class X, class Y>
+ static inline bool check(X x, Y)
+ { return x >= 0 && static_cast<X>(static_cast<Y>(x)) != x; }
+
+# if defined(BOOST_MSVC) && BOOST_MSVC < 1300
+ // MSVC6 can't static_cast unsigned __int64 -> floating types
+# define BOOST_UINT64_CAST(src_type) \
+ static inline bool check(src_type x, unsigned __int64) \
+ { \
+ if (x < 0) return false; \
+ unsigned __int64 y = static_cast<unsigned __int64>(x); \
+ bool odd = y & 0x1; \
+ __int64 div2 = static_cast<__int64>(y >> 1); \
+ return ((static_cast<src_type>(div2) * 2.0) + odd) != x; \
+ }
+
+ BOOST_UINT64_CAST(long double);
+ BOOST_UINT64_CAST(double);
+ BOOST_UINT64_CAST(float);
+# undef BOOST_UINT64_CAST
+# endif
+ };
+
+ template<>
+ struct greater_than_type_max<true, false>
+ {
+ template <class X, class Y>
+ static inline bool check(X x, Y y_max)
+ { return x > y_max; }
+ };
+
+ template <>
+ struct greater_than_type_max<false, false>
+ {
+ // What does the standard say about this? I think it's right, and it
+ // will work with every compiler I know of.
+ template <class X, class Y>
+ static inline bool check(X x, Y)
+ { return static_cast<X>(static_cast<Y>(x)) != x; }
+ };
+
+#else // use #pragma hacks if available
+
+ namespace detail
+ {
+# if BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4018)
+# pragma warning(disable : 4146)
+#elif defined(__BORLANDC__)
+# pragma option push -w-8041
+# endif
+
+ // Move to namespace boost in utility.hpp?
+ template <class T>
+ struct fixed_numeric_limits : public std::numeric_limits<T>
+ {
+ static inline T min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+ return std::numeric_limits<T>::is_signed && (std::numeric_limits<T>::min)() >= 0
+ ? T(-(std::numeric_limits<T>::max)()) : (std::numeric_limits<T>::min)();
+ }
+ };
+
+# if BOOST_MSVC
+# pragma warning(pop)
+#elif defined(__BORLANDC__)
+# pragma option pop
+# endif
+ } // namespace detail
+
+#endif
+
+ template<typename Target, typename Source>
+ inline Target numeric_cast(Source arg BOOST_EXPLICIT_DEFAULT_TARGET)
+ {
+ // typedefs abbreviating respective trait classes
+ typedef detail::fixed_numeric_limits<Source> arg_traits;
+ typedef detail::fixed_numeric_limits<Target> result_traits;
+
+#if defined(BOOST_STRICT_CONFIG) \
+ || (!defined(__HP_aCC) || __HP_aCC > 33900) \
+ && (!defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) \
+ || defined(BOOST_SGI_CPP_LIMITS))
+ // typedefs that act as compile time assertions
+ // (to be replaced by boost compile time assertions
+ // as and when they become available and are stable)
+ typedef bool argument_must_be_numeric[arg_traits::is_specialized];
+ typedef bool result_must_be_numeric[result_traits::is_specialized];
+
+ const bool arg_is_signed = arg_traits::is_signed;
+ const bool result_is_signed = result_traits::is_signed;
+ const bool same_sign = arg_is_signed == result_is_signed;
+
+ if (less_than_type_min<arg_is_signed, result_is_signed>::check(arg, (result_traits::min)())
+ || greater_than_type_max<same_sign, arg_is_signed>::check(arg, (result_traits::max)())
+ )
+
+#else // We need to use #pragma hacks if available
+
+# if BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4018)
+#elif defined(__BORLANDC__)
+#pragma option push -w-8012
+# endif
+ if ((arg < 0 && !result_traits::is_signed) // loss of negative range
+ || (arg_traits::is_signed && arg < (result_traits::min)()) // underflow
+ || arg > (result_traits::max)()) // overflow
+# if BOOST_MSVC
+# pragma warning(pop)
+#elif defined(__BORLANDC__)
+#pragma option pop
+# endif
+#endif
+ {
+ throw bad_numeric_cast();
+ }
+ return static_cast<Target>(arg);
+ } // numeric_cast
+
+# undef BOOST_EXPLICIT_DEFAULT_TARGET
+
+} // namespace boost
+
+#endif // BOOST_OLD_NUMERIC_CAST_HPP
--- /dev/null
+//
+//! Copyright (c) 2011-2012
+//! Brandon Kohn
+//
+// 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)
+//
+
+
+
+namespace boost { namespace numeric {
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , signed char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<signed char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , unsigned char
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned char> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , unsigned short
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned short> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , unsigned int
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned int> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , unsigned long
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<unsigned long> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , float
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<float> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<double> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , long double
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<long double> rounding_policy;
+ };
+}}
--- /dev/null
+//
+//! Copyright (c) 2011-2012
+//! Brandon Kohn
+//
+// 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)
+//
+namespace boost { namespace numeric {
+
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ char
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ signed char
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned char
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ short
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned short
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ int
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned int
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ unsigned long
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ float
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ double
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ long double
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ boost::long_long_type
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ boost::long_long_type
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ boost::ulong_long_type
+ , boost::long_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::long_long_type> rounding_policy;
+ };
+
+ template <>
+ struct numeric_cast_traits
+ <
+ boost::ulong_long_type
+ , boost::ulong_long_type
+ >
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<boost::ulong_long_type> rounding_policy;
+ };
+}}
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_SIGN_MIXTURE_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_SIGN_MIXTURE_FLC_12NOV2002_HPP
+
+#include "boost/config.hpp"
+#include "boost/limits.hpp"
+
+#include "boost/numeric/conversion/sign_mixture_enum.hpp"
+#include "boost/numeric/conversion/detail/meta.hpp"
+
+#include "boost/mpl/integral_c.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ // Integral Constants for 'SignMixture'
+ typedef mpl::integral_c<sign_mixture_enum, unsigned_to_unsigned> unsig2unsig_c ;
+ typedef mpl::integral_c<sign_mixture_enum, signed_to_signed> sig2sig_c ;
+ typedef mpl::integral_c<sign_mixture_enum, signed_to_unsigned> sig2unsig_c ;
+ typedef mpl::integral_c<sign_mixture_enum, unsigned_to_signed> unsig2sig_c ;
+
+ // Metafunction:
+ //
+ // get_sign_mixture<T,S>::type
+ //
+ // Selects the appropriate SignMixture Integral Constant for the combination T,S.
+ //
+ template<class T,class S>
+ struct get_sign_mixture
+ {
+ typedef mpl::bool_< ::std::numeric_limits<S>::is_signed > S_signed ;
+ typedef mpl::bool_< ::std::numeric_limits<T>::is_signed > T_signed ;
+
+ typedef typename
+ for_both<S_signed, T_signed, sig2sig_c, sig2unsig_c, unsig2sig_c, unsig2unsig_c>::type
+ type ;
+ } ;
+
+ // Metafunction:
+ //
+ // for_sign_mixture<SignMixture,Sig2Sig,Sig2Unsig,Unsig2Sig,Unsig2Unsig>::type
+ //
+ // {SignMixture} is one of the Integral Constants for SignMixture, declared above.
+ // {Sig2Sig,Sig2Unsig,Unsig2Sig,Unsig2Unsig} are aribtrary types. (not metafunctions)
+ //
+ // According to the value of 'SignMixture', selects the corresponding type.
+ //
+ template<class SignMixture, class Sig2Sig, class Sig2Unsig, class Unsig2Sig, class Unsig2Unsig>
+ struct for_sign_mixture
+ {
+ typedef typename
+ ct_switch4<SignMixture
+ , sig2sig_c, sig2unsig_c, unsig2sig_c // default
+ , Sig2Sig , Sig2Unsig , Unsig2Sig , Unsig2Unsig
+ >::type
+ type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_UDT_BUILTIN_MIXTURE_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_UDT_BUILTIN_MIXTURE_FLC_12NOV2002_HPP
+
+#include "boost/type_traits/is_arithmetic.hpp"
+
+#include "boost/numeric/conversion/udt_builtin_mixture_enum.hpp"
+#include "boost/numeric/conversion/detail/meta.hpp"
+
+#include "boost/mpl/integral_c.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ // Integral Constants for 'UdtMixture'
+ typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_builtin> builtin2builtin_c ;
+ typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_udt> builtin2udt_c ;
+ typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_builtin> udt2builtin_c ;
+ typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_udt> udt2udt_c ;
+
+ // Metafunction:
+ //
+ // for_udt_mixture<UdtMixture,BuiltIn2BuiltIn,BuiltIn2Udt,Udt2BuiltIn,Udt2Udt>::type
+ //
+ // {UdtMixture} is one of the Integral Constants for UdMixture, declared above.
+ // {BuiltIn2BuiltIn,BuiltIn2Udt,Udt2BuiltIn,Udt2Udt} are aribtrary types. (not metafunctions)
+ //
+ // According to the value of 'UdtMixture', selects the corresponding type.
+ //
+ template<class UdtMixture, class BuiltIn2BuiltIn, class BuiltIn2Udt, class Udt2BuiltIn, class Udt2Udt>
+ struct for_udt_builtin_mixture
+ {
+ typedef typename
+ ct_switch4<UdtMixture
+ , builtin2builtin_c, builtin2udt_c, udt2builtin_c // default
+ , BuiltIn2BuiltIn , BuiltIn2Udt , Udt2BuiltIn , Udt2Udt
+ >::type
+ type ;
+ } ;
+
+ // Metafunction:
+ //
+ // get_udt_mixture<T,S>::type
+ //
+ // Selects the appropriate UdtMixture Integral Constant for the combination T,S.
+ //
+ template<class T,class S>
+ struct get_udt_builtin_mixture
+ {
+ typedef is_arithmetic<S> S_builtin ;
+ typedef is_arithmetic<T> T_builtin ;
+
+ typedef typename
+ for_both<S_builtin, T_builtin, builtin2builtin_c, builtin2udt_c, udt2builtin_c, udt2udt_c>::type
+ type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+
+
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_INT_FLOAT_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_INT_FLOAT_MIXTURE_ENUM_FLC_12NOV2002_HPP
+
+namespace boost { namespace numeric
+{
+ enum int_float_mixture_enum
+ {
+ integral_to_integral
+ ,integral_to_float
+ ,float_to_integral
+ ,float_to_float
+ } ;
+
+} } // namespace boost::numeric
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
--- /dev/null
+//
+//! Copyright (c) 2011
+//! Brandon Kohn
+//
+// 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)
+//
+#ifndef BOOST_NUMERIC_CAST_TRAITS_HPP
+#define BOOST_NUMERIC_CAST_TRAITS_HPP
+
+#include <boost/numeric/conversion/converter_policies.hpp>
+
+namespace boost { namespace numeric {
+
+ template <typename Target, typename Source, typename EnableIf = void>
+ struct numeric_cast_traits
+ {
+ typedef def_overflow_handler overflow_policy;
+ typedef UseInternalRangeChecker range_checking_policy;
+ typedef Trunc<Source> rounding_policy;
+ };
+
+}}//namespace boost::numeric;
+
+#if !defined( BOOST_NUMERIC_CONVERSION_RELAX_BUILT_IN_CAST_TRAITS )
+#include <boost/cstdint.hpp>
+#include <boost/numeric/conversion/detail/numeric_cast_traits.hpp>
+#endif//!defined BOOST_NUMERIC_CONVERSION_RELAX_BUILT_IN_CAST_TRAITS
+
+#endif//BOOST_NUMERIC_CAST_TRAITS_HPP
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_SIGN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_SIGN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+
+namespace boost { namespace numeric
+{
+ enum sign_mixture_enum
+ {
+ unsigned_to_unsigned
+ ,signed_to_signed
+ ,signed_to_unsigned
+ ,unsigned_to_signed
+ } ;
+
+} } // namespace boost::numeric
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
--- /dev/null
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to 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)
+
+// See library home page at http://www.boost.org/libs/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_UDT_BUILTIN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_UDT_BUILTIN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+
+namespace boost { namespace numeric
+{
+ enum udt_builtin_mixture_enum
+ {
+ builtin_to_builtin
+ ,builtin_to_udt
+ ,udt_to_builtin
+ ,udt_to_udt
+ } ;
+
+} } // namespace boost::numeric
+
+#endif
+
-// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
//
// Use, modification, and distribution is subject to the Boost Software
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// You are welcome to contact the author at:
// fernando_cacciola@hotmail.com
//
+// Revisions:
+// 27 Apr 2008 (improved swap) Fernando Cacciola, Niels Dekker, Thorsten Ottosen
+//
#ifndef BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP
#define BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP
-#include<new>
-#include<algorithm>
-
-#include "boost/config.hpp"
-#include "boost/assert.hpp"
-#include "boost/type.hpp"
-#include "boost/type_traits/alignment_of.hpp"
-#include "boost/type_traits/type_with_alignment.hpp"
-#include "boost/type_traits/remove_reference.hpp"
-#include "boost/type_traits/is_reference.hpp"
-#include "boost/mpl/if.hpp"
-#include "boost/mpl/bool.hpp"
-#include "boost/mpl/not.hpp"
-#include "boost/detail/reference_content.hpp"
-#include "boost/none.hpp"
-#include "boost/utility/compare_pointees.hpp"
-
-#include "boost/optional/optional_fwd.hpp"
+#include <new>
+#include <algorithm>
+
+#include <boost/config.hpp>
+#include <boost/assert.hpp>
+#include <boost/type.hpp>
+#include <boost/type_traits/alignment_of.hpp>
+#include <boost/type_traits/has_nothrow_constructor.hpp>
+#include <boost/type_traits/type_with_alignment.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/detail/reference_content.hpp>
+#include <boost/none.hpp>
+#include <boost/utility/swap.hpp>
+#include <boost/utility/addressof.hpp>
+#include <boost/utility/compare_pointees.hpp>
+#include <boost/utility/in_place_factory.hpp>
+
+#include <boost/optional/optional_fwd.hpp>
#if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
// VC6.0 has the following bug:
#define BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION
#endif
+#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) > 302 \
+ && !defined(__INTEL_COMPILER)
+// GCC since 3.3 has may_alias attribute that helps to alleviate optimizer issues with
+// regard to violation of the strict aliasing rules. The optional< T > storage type is marked
+// with this attribute in order to let the compiler know that it will alias objects of type T
+// and silence compilation warnings.
+#define BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS
+#endif
+
// Daniel Wallin discovered that bind/apply.hpp badly interacts with the apply<>
// member template of a factory as used in the optional<> implementation.
// He proposed this simple fix which is to move the call to apply<> outside
namespace boost_optional_detail
{
template <class T, class Factory>
- void construct(Factory const& factory, void* address)
+ inline void construct(Factory const& factory, void* address)
{
factory.BOOST_NESTED_TEMPLATE apply<T>(address);
}
class in_place_factory_base ;
class typed_in_place_factory_base ;
+// This forward is needed to refer to namespace scope swap from the member swap
+template<class T> void swap ( optional<T>& x, optional<T>& y );
+
namespace optional_detail {
// This local class is used instead of that in "aligned_storage.hpp"
class aligned_storage
{
// Borland ICEs if unnamed unions are used for this!
- union dummy_u
+ union
+ // This works around GCC warnings about breaking strict aliasing rules when casting storage address to T*
+#if defined(BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS)
+ __attribute__((may_alias))
+#endif
+ dummy_u
{
char data[ sizeof(T) ];
BOOST_DEDUCED_TYPENAME type_with_alignment<
public:
- void const* address() const { return &dummy_.data[0]; }
- void * address() { return &dummy_.data[0]; }
+#if defined(BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS)
+ void const* address() const { return &dummy_; }
+ void * address() { return &dummy_; }
+#else
+ void const* address() const { return dummy_.data; }
+ void * address() { return dummy_.data; }
+#endif
} ;
template<class T>
typedef
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
BOOST_DEDUCED_TYPENAME
-#endif
+#endif
::boost::detail::make_reference_content<T>::type internal_type ;
typedef aligned_storage<internal_type> storage_type ;
{
construct(val);
}
-
+
// Creates an optional<T> initialized with 'val' IFF cond is true, otherwise creates an uninitialzed optional<T>.
// Can throw if T::T(T const&) does
optional_base ( bool cond, argument_type val )
private :
// internal_type can be either T or reference_content<T>
+#if defined(BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS)
+ // This workaround is supposed to silence GCC warnings about broken strict aliasing rules
+ internal_type const* get_object() const
+ {
+ union { void const* ap_pvoid; internal_type const* as_ptype; } caster = { m_storage.address() };
+ return caster.as_ptype;
+ }
+ internal_type * get_object()
+ {
+ union { void* ap_pvoid; internal_type* as_ptype; } caster = { m_storage.address() };
+ return caster.as_ptype;
+ }
+#else
internal_type const* get_object() const { return static_cast<internal_type const*>(m_storage.address()); }
internal_type * get_object() { return static_cast<internal_type *> (m_storage.address()); }
+#endif
// reference_content<T> lacks an implicit conversion to T&, so the following is needed to obtain a proper reference.
reference_const_type dereference( internal_type const* p, is_not_reference_tag ) const { return *p ; }
// Depending on the above some T ctor is called.
// Can throw is the resolved T ctor throws.
template<class Expr>
- explicit optional ( Expr const& expr ) : base(expr,&expr) {}
+ explicit optional ( Expr const& expr ) : base(expr,boost::addressof(expr)) {}
#endif
// Creates a deep copy of another optional<T>
// Can throw if T::T(T const&) does
- optional ( optional const& rhs ) : base(rhs) {}
+ optional ( optional const& rhs ) : base( static_cast<base const&>(rhs) ) {}
// No-throw (assuming T::~T() doesn't)
~optional() {}
// Assigns from an expression. See corresponding constructor.
// Basic Guarantee: If the resolved T ctor throws, this is left UNINITIALIZED
template<class Expr>
- optional& operator= ( Expr expr )
+ optional& operator= ( Expr const& expr )
{
- this->assign_expr(expr,&expr);
+ this->assign_expr(expr,boost::addressof(expr));
return *this ;
}
#endif
// (NOTE: On BCB, this operator is not actually called and left is left UNMODIFIED in case of a throw)
optional& operator= ( optional const& rhs )
{
- this->assign( rhs ) ;
+ this->assign( static_cast<base const&>(rhs) ) ;
return *this ;
}
return *this ;
}
+ void swap( optional & arg )
+ {
+ // allow for Koenig lookup
+ using boost::swap;
+ swap(*this, arg);
+ }
+
+
// Returns a reference to the value if this is initialized, otherwise,
// the behaviour is UNDEFINED
// No-throw
// Returns a copy of the value if this is initialized, 'v' otherwise
reference_const_type get_value_or ( reference_const_type v ) const { return this->is_initialized() ? get() : v ; }
reference_type get_value_or ( reference_type v ) { return this->is_initialized() ? get() : v ; }
-
+
// Returns a pointer to the value if this is initialized, otherwise,
// the behaviour is UNDEFINED
// No-throw
// No-throw
operator unspecified_bool_type() const { return this->safe_bool() ; }
- // This is provided for those compilers which don't like the conversion to bool
- // on some contexts.
- bool operator!() const { return !this->is_initialized() ; }
+ // This is provided for those compilers which don't like the conversion to bool
+ // on some contexts.
+ bool operator!() const { return !this->is_initialized() ; }
} ;
// Returns optional<T>(v)
-template<class T>
-inline
+template<class T>
+inline
optional<T> make_optional ( T const& v )
{
return optional<T>(v);
}
// Returns optional<T>(cond,v)
-template<class T>
-inline
+template<class T>
+inline
optional<T> make_optional ( bool cond, T const& v )
{
return optional<T>(cond,v);
template<class T>
inline
-bool operator == ( none_t x, optional<T> const& y )
+bool operator == ( none_t , optional<T> const& y )
{ return equal_pointees(optional<T>() ,y); }
template<class T>
inline
-bool operator < ( none_t x, optional<T> const& y )
+bool operator < ( none_t , optional<T> const& y )
{ return less_pointees(optional<T>() ,y); }
template<class T>
bool operator >= ( none_t x, optional<T> const& y )
{ return !( x < y ) ; }
-//
-// The following swap implementation follows the GCC workaround as found in
-// "boost/detail/compressed_pair.hpp"
-//
namespace optional_detail {
-// GCC < 3.2 gets the using declaration at namespace scope (FLC, DWA)
-#if BOOST_WORKAROUND(__GNUC__, < 3) \
- || BOOST_WORKAROUND(__GNUC__, == 3) && __GNUC_MINOR__ <= 2
- using std::swap;
-#define BOOST_OPTIONAL_STD_SWAP_INTRODUCED_AT_NS_SCOPE
-#endif
+template<bool use_default_constructor> struct swap_selector;
-// optional's swap:
-// If both are initialized, calls swap(T&, T&). If this swap throws, both will remain initialized but their values are now unspecified.
-// If only one is initialized, calls U.reset(*I), THEN I.reset().
-// If U.reset(*I) throws, both are left UNCHANGED (U is kept uinitialized and I is never reset)
-// If both are uninitialized, do nothing (no-throw)
-template<class T>
-inline
-void optional_swap ( optional<T>& x, optional<T>& y )
+template<>
+struct swap_selector<true>
{
- if ( !x && !!y )
- {
- x.reset(*y);
- y.reset();
- }
- else if ( !!x && !y )
- {
- y.reset(*x);
- x.reset();
- }
- else if ( !!x && !!y )
- {
-// GCC > 3.2 and all other compilers have the using declaration at function scope (FLC)
-#ifndef BOOST_OPTIONAL_STD_SWAP_INTRODUCED_AT_NS_SCOPE
- // allow for Koenig lookup
- using std::swap ;
-#endif
- swap(*x,*y);
- }
-}
+ template<class T>
+ static void optional_swap ( optional<T>& x, optional<T>& y )
+ {
+ const bool hasX = !!x;
+ const bool hasY = !!y;
+
+ if ( !hasX && !hasY )
+ return;
+
+ if( !hasX )
+ x = boost::in_place();
+ else if ( !hasY )
+ y = boost::in_place();
+
+ // Boost.Utility.Swap will take care of ADL and workarounds for broken compilers
+ boost::swap(x.get(),y.get());
+
+ if( !hasX )
+ y = boost::none ;
+ else if( !hasY )
+ x = boost::none ;
+ }
+};
+
+template<>
+struct swap_selector<false>
+{
+ template<class T>
+ static void optional_swap ( optional<T>& x, optional<T>& y )
+ {
+ const bool hasX = !!x;
+ const bool hasY = !!y;
+
+ if ( !hasX && hasY )
+ {
+ x = y.get();
+ y = boost::none ;
+ }
+ else if ( hasX && !hasY )
+ {
+ y = x.get();
+ x = boost::none ;
+ }
+ else if ( hasX && hasY )
+ {
+ // Boost.Utility.Swap will take care of ADL and workarounds for broken compilers
+ boost::swap(x.get(),y.get());
+ }
+ }
+};
} // namespace optional_detail
+template<class T>
+struct optional_swap_should_use_default_constructor : has_nothrow_default_constructor<T> {} ;
+
template<class T> inline void swap ( optional<T>& x, optional<T>& y )
{
- optional_detail::optional_swap(x,y);
+ optional_detail::swap_selector<optional_swap_should_use_default_constructor<T>::value>::optional_swap(x, y);
}
-
} // namespace boost
#endif
-
-// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
//
// Use, modification, and distribution is subject to the Boost Software
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// You are welcome to contact the author at:
// fernando_cacciola@hotmail.com
//
+// Revisions:
+// 10 May 2008 (added swap related forward declaration) Niels Dekker
+//
#ifndef BOOST_OPTIONAL_OPTIONAL_FWD_FLC_19NOV2002_HPP
#define BOOST_OPTIONAL_OPTIONAL_FWD_FLC_19NOV2002_HPP
template<class T> class optional ;
+template<class T> void swap ( optional<T>& , optional<T>& ) ;
+
+template<class T> struct optional_swap_should_use_default_constructor ;
+
} // namespace boost
#endif
--- /dev/null
+// -----------------------------------------------------------
+// integer_log2.hpp
+//
+// Gives the integer part of the logarithm, in base 2, of a
+// given number. Behavior is undefined if the argument is <= 0.
+//
+// Copyright (c) 2003-2004, 2008 Gennaro Prota
+//
+// 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)
+//
+// -----------------------------------------------------------
+
+#ifndef BOOST_INTEGER_LOG2_HPP_GP_20030301
+#define BOOST_INTEGER_LOG2_HPP_GP_20030301
+
+#include <assert.h>
+#ifdef __BORLANDC__
+#include <climits>
+#endif
+#include "boost/limits.hpp"
+#include "boost/config.hpp"
+
+
+namespace boost {
+ namespace detail {
+
+ template <typename T>
+ int integer_log2_impl(T x, int n) {
+
+ int result = 0;
+
+ while (x != 1) {
+
+ const T t = static_cast<T>(x >> n);
+ if (t) {
+ result += n;
+ x = t;
+ }
+ n /= 2;
+
+ }
+
+ return result;
+ }
+
+
+
+ // helper to find the maximum power of two
+ // less than p (more involved than necessary,
+ // to avoid PTS)
+ //
+ template <int p, int n>
+ struct max_pow2_less {
+
+ enum { c = 2*n < p };
+
+ BOOST_STATIC_CONSTANT(int, value =
+ c ? (max_pow2_less< c*p, 2*c*n>::value) : n);
+
+ };
+
+ template <>
+ struct max_pow2_less<0, 0> {
+
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+
+ // this template is here just for Borland :(
+ // we could simply rely on numeric_limits but sometimes
+ // Borland tries to use numeric_limits<const T>, because
+ // of its usual const-related problems in argument deduction
+ // - gps
+ template <typename T>
+ struct width {
+
+#ifdef __BORLANDC__
+ BOOST_STATIC_CONSTANT(int, value = sizeof(T) * CHAR_BIT);
+#else
+ BOOST_STATIC_CONSTANT(int, value = (std::numeric_limits<T>::digits));
+#endif
+
+ };
+
+ } // detail
+
+
+ // ---------
+ // integer_log2
+ // ---------------
+ //
+ template <typename T>
+ int integer_log2(T x) {
+
+ assert(x > 0);
+
+ const int n = detail::max_pow2_less<
+ detail::width<T> :: value, 4
+ > :: value;
+
+ return detail::integer_log2_impl(x, n);
+
+ }
+
+
+
+}
+
+
+
+#endif // include guard
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_H
+#define BOOST_PREDEF_ARCHITECTURE_H
+
+#include <boost/predef/architecture/alpha.h>
+#include <boost/predef/architecture/arm.h>
+#include <boost/predef/architecture/blackfin.h>
+#include <boost/predef/architecture/convex.h>
+#include <boost/predef/architecture/ia64.h>
+#include <boost/predef/architecture/m68k.h>
+#include <boost/predef/architecture/mips.h>
+#include <boost/predef/architecture/parisc.h>
+#include <boost/predef/architecture/ppc.h>
+#include <boost/predef/architecture/pyramid.h>
+#include <boost/predef/architecture/rs6k.h>
+#include <boost/predef/architecture/sparc.h>
+#include <boost/predef/architecture/superh.h>
+#include <boost/predef/architecture/sys370.h>
+#include <boost/predef/architecture/sys390.h>
+#include <boost/predef/architecture/x86.h>
+#include <boost/predef/architecture/z.h>
+/*#include <boost/predef/architecture/.h>*/
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_ALPHA_H
+#define BOOST_PREDEF_ARCHITECTURE_ALPHA_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_ALPHA`]
+
+[@http://en.wikipedia.org/wiki/DEC_Alpha DEC Alpha] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+ [[`__alpha__`] [__predef_detection__]]
+ [[`__alpha`] [__predef_detection__]]
+ [[`_M_ALPHA`] [__predef_detection__]]
+
+ [[`__alpha_ev4__`] [4.0.0]]
+ [[`__alpha_ev5__`] [5.0.0]]
+ [[`__alpha_ev6__`] [6.0.0]]
+ ]
+ */
+
+#define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__alpha__) || defined(__alpha) || \
+ defined(_M_ALPHA)
+# undef BOOST_ARCH_ALPHA
+# if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev4__)
+# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev5__)
+# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(5,0,0)
+# endif
+# if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev6__)
+# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(6,0,0)
+# endif
+# if !defined(BOOST_ARCH_ALPHA)
+# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_ARCH_ALPHA
+# define BOOST_ARCH_ALPHA_AVAILABLE
+#endif
+
+#define BOOST_ARCH_ALPHA_NAME "DEC Alpha"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ALPHA,BOOST_ARCH_ALPHA_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_ARM_H
+#define BOOST_PREDEF_ARCHITECTURE_ARM_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_ARM`]
+
+[@http://en.wikipedia.org/wiki/ARM_architecture ARM] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__arm__`] [__predef_detection__]]
+ [[`__thumb__`] [__predef_detection__]]
+ [[`__TARGET_ARCH_ARM`] [__predef_detection__]]
+ [[`__TARGET_ARCH_THUMB`] [__predef_detection__]]
+
+ [[`__TARGET_ARCH_ARM`] [V.0.0]]
+ [[`__TARGET_ARCH_THUMB`] [V.0.0]]
+ ]
+ */
+
+#define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__arm__) || defined(__thumb__) || \
+ defined(__TARGET_ARCH_ARM) || defined(__TARGET_ARCH_THUMB)
+# undef BOOST_ARCH_ARM
+# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM)
+# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0)
+# endif
+# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB)
+# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0)
+# endif
+# if !defined(BOOST_ARCH_ARM)
+# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_ARCH_ARM
+# define BOOST_ARCH_ARM_AVAILABLE
+#endif
+
+#define BOOST_ARCH_ARM_NAME "ARM"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ARM,BOOST_ARCH_ARM_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software Inc 2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_BLACKFIN_H
+#define BOOST_PREDEF_ARCHITECTURE_BLACKFIN_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_BLACKFIN`]
+
+Blackfin Processors from Analog Devices.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__bfin__`] [__predef_detection__]]
+ [[`__BFIN__`] [__predef_detection__]]
+ [[`bfin`] [__predef_detection__]]
+ [[`BFIN`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_ARCH_BLACKFIN BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__bfin__) || defined(__BFIN__) || \
+ defined(bfin) || defined(BFIN)
+# undef BOOST_ARCH_BLACKFIN
+# define BOOST_ARCH_BLACKFIN BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_ARCH_BLACKFIN
+# define BOOST_ARCH_BLACKFIN_AVAILABLE
+#endif
+
+#define BOOST_ARCH_BLACKFIN_NAME "Blackfin"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_BLACKFIN,BOOST_ARCH_BLACKFIN_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software Inc 2011-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_CONVEX_H
+#define BOOST_PREDEF_ARCHITECTURE_CONVEX_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_CONVEX`]
+
+[@http://en.wikipedia.org/wiki/Convex_Computer Convex Computer] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__convex__`] [__predef_detection__]]
+
+ [[`__convex_c1__`] [1.0.0]]
+ [[`__convex_c2__`] [2.0.0]]
+ [[`__convex_c32__`] [3.2.0]]
+ [[`__convex_c34__`] [3.4.0]]
+ [[`__convex_c38__`] [3.8.0]]
+ ]
+ */
+
+#define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__convex__)
+# undef BOOST_ARCH_CONVEX
+# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c1__)
+# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c2__)
+# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c32__)
+# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,2,0)
+# endif
+# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c34__)
+# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,4,0)
+# endif
+# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c38__)
+# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,8,0)
+# endif
+# if !defined(BOOST_ARCH_CONVEX)
+# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_ARCH_CONVEX
+# define BOOST_ARCH_CONVEX_AVAILABLE
+#endif
+
+#define BOOST_ARCH_CONVEX_NAME "Convex Computer"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_CONVEX,BOOST_ARCH_CONVEX_NAME)
+
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_IA64_H
+#define BOOST_PREDEF_ARCHITECTURE_IA64_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_IA64`]
+
+[@http://en.wikipedia.org/wiki/Ia64 Intel Itanium 64] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__ia64__`] [__predef_detection__]]
+ [[`_IA64`] [__predef_detection__]]
+ [[`__IA64__`] [__predef_detection__]]
+ [[`__ia64`] [__predef_detection__]]
+ [[`_M_IA64`] [__predef_detection__]]
+ [[`__itanium__`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__ia64__) || defined(_IA64) || \
+ defined(__IA64__) || defined(__ia64) || \
+ defined(_M_IA64) || defined(__itanium__)
+# undef BOOST_ARCH_IA64
+# define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_ARCH_IA64
+# define BOOST_ARCH_IA64_AVAILABLE
+#endif
+
+#define BOOST_ARCH_IA64_NAME "Intel Itanium 64"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_IA64,BOOST_ARCH_IA64_NAME)
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_M68K_H
+#define BOOST_PREDEF_ARCHITECTURE_M68K_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_M68K`]
+
+[@http://en.wikipedia.org/wiki/M68k Motorola 68k] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__m68k__`] [__predef_detection__]]
+ [[`M68000`] [__predef_detection__]]
+
+ [[`__mc68060__`] [6.0.0]]
+ [[`mc68060`] [6.0.0]]
+ [[`__mc68060`] [6.0.0]]
+ [[`__mc68040__`] [4.0.0]]
+ [[`mc68040`] [4.0.0]]
+ [[`__mc68040`] [4.0.0]]
+ [[`__mc68030__`] [3.0.0]]
+ [[`mc68030`] [3.0.0]]
+ [[`__mc68030`] [3.0.0]]
+ [[`__mc68020__`] [2.0.0]]
+ [[`mc68020`] [2.0.0]]
+ [[`__mc68020`] [2.0.0]]
+ [[`__mc68010__`] [1.0.0]]
+ [[`mc68010`] [1.0.0]]
+ [[`__mc68010`] [1.0.0]]
+ [[`__mc68000__`] [0.0.1]]
+ [[`mc68000`] [0.0.1]]
+ [[`__mc68000`] [0.0.1]]
+ ]
+ */
+
+#define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__m68k__) || defined(M68000)
+# undef BOOST_ARCH_M68K
+# if !defined(BOOST_ARCH_M68K) && (defined(__mc68060__) || defined(mc68060) || defined(__mc68060))
+# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(6,0,0)
+# endif
+# if !defined(BOOST_ARCH_M68K) && (defined(__mc68040__) || defined(mc68040) || defined(__mc68040))
+# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(BOOST_ARCH_M68K) && (defined(__mc68030__) || defined(mc68030) || defined(__mc68030))
+# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(BOOST_ARCH_M68K) && (defined(__mc68020__) || defined(mc68020) || defined(__mc68020))
+# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(BOOST_ARCH_M68K) && (defined(__mc68010__) || defined(mc68010) || defined(__mc68010))
+# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(BOOST_ARCH_M68K) && (defined(__mc68000__) || defined(mc68000) || defined(__mc68000))
+# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# if !defined(BOOST_ARCH_M68K)
+# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_ARCH_M68K
+# define BOOST_ARCH_M68K_AVAILABLE
+#endif
+
+#define BOOST_ARCH_M68K_NAME "Motorola 68k"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_M68K,BOOST_ARCH_M68K_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_MIPS_H
+#define BOOST_PREDEF_ARCHITECTURE_MIPS_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_MIPS`]
+
+[@http://en.wikipedia.org/wiki/MIPS_architecture MIPS] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__mips__`] [__predef_detection__]]
+ [[`__mips`] [__predef_detection__]]
+ [[`__MIPS__`] [__predef_detection__]]
+
+ [[`__mips`] [V.0.0]]
+ [[`_MIPS_ISA_MIPS1`] [1.0.0]]
+ [[`_R3000`] [1.0.0]]
+ [[`_MIPS_ISA_MIPS2`] [2.0.0]]
+ [[`__MIPS_ISA2__`] [2.0.0]]
+ [[`_R4000`] [2.0.0]]
+ [[`_MIPS_ISA_MIPS3`] [3.0.0]]
+ [[`__MIPS_ISA3__`] [3.0.0]]
+ [[`_MIPS_ISA_MIPS4`] [4.0.0]]
+ [[`__MIPS_ISA4__`] [4.0.0]]
+ ]
+ */
+
+#define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__mips__) || defined(__mips) || \
+ defined(__MIPS__)
+# undef BOOST_ARCH_MIPS
+# if !defined(BOOST_ARCH_MIPS) && (defined(__mips))
+# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(__mips,0,0)
+# endif
+# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS1) || defined(_R3000))
+# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS2) || defined(__MIPS_ISA2__) || defined(_R4000))
+# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS3) || defined(__MIPS_ISA3__))
+# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS4) || defined(__MIPS_ISA4__))
+# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(BOOST_ARCH_MIPS)
+# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_ARCH_MIPS
+# define BOOST_ARCH_MIPS_AVAILABLE
+#endif
+
+#define BOOST_ARCH_MIPS_NAME "MIPS"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_MIPS,BOOST_ARCH_MIPS_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_PARISC_H
+#define BOOST_PREDEF_ARCHITECTURE_PARISC_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_PARISK`]
+
+[@http://en.wikipedia.org/wiki/PA-RISC_family HP/PA RISC] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__hppa__`] [__predef_detection__]]
+ [[`__hppa`] [__predef_detection__]]
+ [[`__HPPA__`] [__predef_detection__]]
+
+ [[`_PA_RISC1_0`] [1.0.0]]
+ [[`_PA_RISC1_1`] [1.1.0]]
+ [[`__HPPA11__`] [1.1.0]]
+ [[`__PA7100__`] [1.1.0]]
+ [[`_PA_RISC2_0`] [2.0.0]]
+ [[`__RISC2_0__`] [2.0.0]]
+ [[`__HPPA20__`] [2.0.0]]
+ [[`__PA8000__`] [2.0.0]]
+ ]
+ */
+
+#define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__hppa__) || defined(__hppa) || defined(__HPPA__)
+# undef BOOST_ARCH_PARISC
+# if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC1_0))
+# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC1_1) || defined(__HPPA11__) || defined(__PA7100__))
+# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(1,1,0)
+# endif
+# if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC2_0) || defined(__RISC2_0__) || defined(__HPPA20__) || defined(__PA8000__))
+# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(BOOST_ARCH_PARISC)
+# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_ARCH_PARISC
+# define BOOST_ARCH_PARISC_AVAILABLE
+#endif
+
+#define BOOST_ARCH_PARISC_NAME "HP/PA RISC"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PARISC,BOOST_ARCH_PARISC_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_PPC_H
+#define BOOST_PREDEF_ARCHITECTURE_PPC_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_PPC`]
+
+[@http://en.wikipedia.org/wiki/PowerPC PowerPC] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__powerpc`] [__predef_detection__]]
+ [[`__powerpc__`] [__predef_detection__]]
+ [[`__POWERPC__`] [__predef_detection__]]
+ [[`__ppc__`] [__predef_detection__]]
+ [[`_M_PPC`] [__predef_detection__]]
+ [[`_ARCH_PPC`] [__predef_detection__]]
+ [[`__PPCGECKO__`] [__predef_detection__]]
+ [[`__PPCBROADWAY__`] [__predef_detection__]]
+ [[`_XENON`] [__predef_detection__]]
+
+ [[`__ppc601__`] [6.1.0]]
+ [[`_ARCH_601`] [6.1.0]]
+ [[`__ppc603__`] [6.3.0]]
+ [[`_ARCH_603`] [6.3.0]]
+ [[`__ppc604__`] [6.4.0]]
+ [[`__ppc604__`] [6.4.0]]
+ ]
+ */
+
+#define BOOST_ARCH_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__powerpc) || defined(__powerpc__) || \
+ defined(__POWERPC__) || defined(__ppc__) || \
+ defined(_M_PPC) || defined(_ARCH_PPC) || \
+ defined(__PPCGECKO__) || defined(__PPCBROADWAY__) || \
+ defined(_XENON)
+# undef BOOST_ARCH_PPC
+# if !defined (BOOST_ARCH_PPC) && (defined(__ppc601__) || defined(_ARCH_601))
+# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,1,0)
+# endif
+# if !defined (BOOST_ARCH_PPC) && (defined(__ppc603__) || defined(_ARCH_603))
+# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,3,0)
+# endif
+# if !defined (BOOST_ARCH_PPC) && (defined(__ppc604__) || defined(__ppc604__))
+# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,4,0)
+# endif
+# if !defined (BOOST_ARCH_PPC)
+# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_ARCH_PPC
+# define BOOST_ARCH_PPC_AVAILABLE
+#endif
+
+#define BOOST_ARCH_PPC_NAME "PowerPC"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PPC,BOOST_ARCH_PPC_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software Inc 2011-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_PYRAMID_H
+#define BOOST_PREDEF_ARCHITECTURE_PYRAMID_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_PYRAMID`]
+
+Pyramid 9810 architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`pyr`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_ARCH_PYRAMID BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(pyr)
+# undef BOOST_ARCH_PYRAMID
+# define BOOST_ARCH_PYRAMID BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_ARCH_PYRAMID
+# define BOOST_ARCH_PYRAMID_AVAILABLE
+#endif
+
+#define BOOST_ARCH_PYRAMID_NAME "Pyramid 9810"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PYRAMID,BOOST_ARCH_PYRAMID_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_RS6K_H
+#define BOOST_PREDEF_ARCHITECTURE_RS6K_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_RS6000`]
+
+[@http://en.wikipedia.org/wiki/RS/6000 RS/6000] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__THW_RS6000`] [__predef_detection__]]
+ [[`_IBMR2`] [__predef_detection__]]
+ [[`_POWER`] [__predef_detection__]]
+ [[`_ARCH_PWR`] [__predef_detection__]]
+ [[`_ARCH_PWR2`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_ARCH_RS6000 BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__THW_RS6000) || defined(_IBMR2) || \
+ defined(_POWER) || defined(_ARCH_PWR) || \
+ defined(_ARCH_PWR2)
+# undef BOOST_ARCH_RS6000
+# define BOOST_ARCH_RS6000 BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_ARCH_RS6000
+# define BOOST_ARCH_RS6000_AVAILABLE
+#endif
+
+#define BOOST_ARCH_RS6000_NAME "RS/6000"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_RS6000,BOOST_ARCH_RS6000_NAME)
+
+#define BOOST_ARCH_PWR BOOST_ARCH_RS6000
+
+#if BOOST_ARCH_PWR
+# define BOOST_ARCH_PWR_AVAILABLE
+#endif
+
+#define BOOST_ARCH_PWR_NAME BOOST_ARCH_RS6000_NAME
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_SPARC_H
+#define BOOST_PREDEF_ARCHITECTURE_SPARC_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_SPARC`]
+
+[@http://en.wikipedia.org/wiki/SPARC SPARC] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__sparc__`] [__predef_detection__]]
+ [[`__sparc`] [__predef_detection__]]
+
+ [[`__sparcv9`] [9.0.0]]
+ [[`__sparcv8`] [8.0.0]]
+ ]
+ */
+
+#define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__sparc__) || defined(__sparc)
+# undef BOOST_ARCH_SPARC
+# if !defined(BOOST_ARCH_SPARC) && defined(__sparcv9)
+# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(9,0,0)
+# endif
+# if !defined(BOOST_ARCH_SPARC) && defined(__sparcv8)
+# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(8,0,0)
+# endif
+# if !defined(BOOST_ARCH_SPARC) &&
+# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_ARCH_SPARC
+# define BOOST_ARCH_SPARC_AVAILABLE
+#endif
+
+#define BOOST_ARCH_SPARC_NAME "SPARC"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SPARC,BOOST_ARCH_SPARC_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_SUPERH_H
+#define BOOST_PREDEF_ARCHITECTURE_SUPERH_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_SH`]
+
+[@http://en.wikipedia.org/wiki/SuperH SuperH] architecture:
+If available versions \[1-5\] are specifically detected.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__sh__`] [__predef_detection__]]
+
+ [[`__SH5__`] [5.0.0]]
+ [[`__SH4__`] [4.0.0]]
+ [[`__sh3__`] [3.0.0]]
+ [[`__SH3__`] [3.0.0]]
+ [[`__sh2__`] [2.0.0]]
+ [[`__sh1__`] [1.0.0]]
+ ]
+ */
+
+#define BOOST_ARCH_SH BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__sh__)
+# undef BOOST_ARCH_SH
+# if !defined(BOOST_ARCH_SH) && (defined(__SH5__))
+# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(5,0,0)
+# endif
+# if !defined(BOOST_ARCH_SH) && (defined(__SH4__))
+# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(BOOST_ARCH_SH) && (defined(__sh3__) || defined(__SH3__))
+# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(BOOST_ARCH_SH) && (defined(__sh2__))
+# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(BOOST_ARCH_SH) && (defined(__sh1__))
+# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(BOOST_ARCH_SH)
+# define BOOST_ARCH_SH BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_ARCH_SH
+# define BOOST_ARCH_SH_AVAILABLE
+#endif
+
+#define BOOST_ARCH_SH_NAME "SuperH"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SH,BOOST_ARCH_SH_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_SYS370_H
+#define BOOST_PREDEF_ARCHITECTURE_SYS370_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_SYS370`]
+
+[@http://en.wikipedia.org/wiki/System/370 System/370] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__370__`] [__predef_detection__]]
+ [[`__THW_370__`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_ARCH_SYS370 BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__370__) || defined(__THW_370__)
+# undef BOOST_ARCH_SYS370
+# define BOOST_ARCH_SYS370 BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_ARCH_SYS370
+# define BOOST_ARCH_SYS370_AVAILABLE
+#endif
+
+#define BOOST_ARCH_SYS370_NAME "System/370"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SYS370,BOOST_ARCH_SYS370_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_SYS390_H
+#define BOOST_PREDEF_ARCHITECTURE_SYS390_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_SYS390`]
+
+[@http://en.wikipedia.org/wiki/System/390 System/390] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__s390__`] [__predef_detection__]]
+ [[`__s390x__`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_ARCH_SYS390 BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__s390__) || defined(__s390x__)
+# undef BOOST_ARCH_SYS390
+# define BOOST_ARCH_SYS390 BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_ARCH_SYS390
+# define BOOST_ARCH_SYS390_AVAILABLE
+#endif
+
+#define BOOST_ARCH_SYS390_NAME "System/390"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SYS390,BOOST_ARCH_SYS390_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_X86_H
+#define BOOST_PREDEF_ARCHITECTURE_X86_H
+
+#include <boost/predef/architecture/x86/32.h>
+#include <boost/predef/architecture/x86/64.h>
+
+/*`
+[heading `BOOST_ARCH_X86`]
+
+[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture. This is
+a category to indicate that either `BOOST_ARCH_X86_32` or
+`BOOST_ARCH_X86_64` is detected.
+ */
+
+#define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if BOOST_ARCH_X86_32 || BOOST_ARCH_X86_64
+# undef BOOST_ARCH_X86
+# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_ARCH_X86
+# define BOOST_ARCH_X86_AVAILABLE
+#endif
+
+#define BOOST_ARCH_X86_NAME "Intel x86"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86,BOOST_ARCH_X86_NAME)
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_X86_32_H
+#define BOOST_PREDEF_ARCHITECTURE_X86_32_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_X86_32`]
+
+[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture:
+If available versions \[3-6\] are specifically detected.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`i386`] [__predef_detection__]]
+ [[`__i386__`] [__predef_detection__]]
+ [[`__i486__`] [__predef_detection__]]
+ [[`__i586__`] [__predef_detection__]]
+ [[`__i686__`] [__predef_detection__]]
+ [[`__i386`] [__predef_detection__]]
+ [[`_M_IX86`] [__predef_detection__]]
+ [[`_X86_`] [__predef_detection__]]
+ [[`__THW_INTEL__`] [__predef_detection__]]
+ [[`__I86__`] [__predef_detection__]]
+ [[`__INTEL__`] [__predef_detection__]]
+
+ [[`__I86__`] [V.0.0]]
+ [[`_M_IX86`] [V.0.0]]
+ [[`__i686__`] [6.0.0]]
+ [[`__i586__`] [5.0.0]]
+ [[`__i486__`] [4.0.0]]
+ [[`__i386__`] [3.0.0]]
+ ]
+ */
+
+#define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(i386) || defined(__i386__) || \
+ defined(__i486__) || defined(__i586__) || \
+ defined(__i686__) || defined(__i386) || \
+ defined(_M_IX86) || defined(_X86_) || \
+ defined(__THW_INTEL__) || defined(__I86__) || \
+ defined(__INTEL__)
+# undef BOOST_ARCH_X86_32
+# if !defined(BOOST_ARCH_X86_32) && defined(__I86__)
+# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(__I86__,0,0)
+# endif
+# if !defined(BOOST_ARCH_X86_32) && defined(_M_IX86)
+# define BOOST_ARCH_X86_32 BOOST_PREDEF_MAKE_10_VV00(_M_IX86)
+# endif
+# if !defined(BOOST_ARCH_X86_32) && defined(__i686__)
+# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(6,0,0)
+# endif
+# if !defined(BOOST_ARCH_X86_32) && defined(__i586__)
+# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(5,0,0)
+# endif
+# if !defined(BOOST_ARCH_X86_32) && defined(__i486__)
+# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(BOOST_ARCH_X86_32) && defined(__i386__)
+# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(BOOST_ARCH_X86_32)
+# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_ARCH_X86_32
+# define BOOST_ARCH_X86_32_AVAILABLE
+#endif
+
+#define BOOST_ARCH_X86_32_NAME "Intel x86-32"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_32,BOOST_ARCH_X86_32_NAME)
+
+#include <boost/predef/architecture/x86.h>
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_X86_64_H
+#define BOOST_PREDEF_ARCHITECTURE_X86_64_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_X86_64`]
+
+[@http://en.wikipedia.org/wiki/Ia64 Intel IA-64] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__x86_64`] [__predef_detection__]]
+ [[`__x86_64__`] [__predef_detection__]]
+ [[`__amd64__`] [__predef_detection__]]
+ [[`__amd64`] [__predef_detection__]]
+ [[`_M_X64`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__x86_64) || defined(__x86_64__) || \
+ defined(__amd64__) || defined(__amd64) || \
+ defined(_M_X64)
+# undef BOOST_ARCH_X86_64
+# define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_ARCH_X86_64
+# define BOOST_ARCH_X86_64_AVAILABLE
+#endif
+
+#define BOOST_ARCH_X86_64_NAME "Intel x86-64"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_64,BOOST_ARCH_X86_64_NAME)
+
+#include <boost/predef/architecture/x86.h>
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ARCHITECTURE_Z_H
+#define BOOST_PREDEF_ARCHITECTURE_Z_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_ARCH_Z`]
+
+[@http://en.wikipedia.org/wiki/Z/Architecture z/Architecture] architecture.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__SYSC_ZARCH__`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_ARCH_Z BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__SYSC_ZARCH__)
+# undef BOOST_ARCH_Z
+# define BOOST_ARCH_Z BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_ARCH_Z
+# define BOOST_ARCH_Z_AVAILABLE
+#endif
+
+#define BOOST_ARCH_Z_NAME "z/Architecture"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_Z,BOOST_ARCH_Z_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2011-2012
+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)
+*/
+
+#ifndef BOOST_PREDEF_DETAIL__CASSERT_H
+#define BOOST_PREDEF_DETAIL__CASSERT_H
+
+#if defined(__cpluplus)
+#include <cassert>
+#else
+#include <assert.h>
+#endif
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_DETAIL_ENDIAN_COMPAT_H
+#define BOOST_PREDEF_DETAIL_ENDIAN_COMPAT_H
+
+#include <boost/predef/other/endian.h>
+
+#if BOOST_ENDIAN_BIG_BYTE
+# define BOOST_BIG_ENDIAN
+# define BOOST_BYTE_ORDER 4321
+#endif
+#if BOOST_ENDIAN_LITTLE_BYTE
+# define BOOST_LITTLE_ENDIAN
+# define BOOST_BYTE_ORDER 1234
+#endif
+#if BOOST_ENDIAN_LITTLE_WORD
+# define BOOST_PDP_ENDIAN
+# define BOOST_BYTE_ORDER 2134
+#endif
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_DETAIL_OS_DETECTED
+#define BOOST_PREDEF_DETAIL_OS_DETECTED 1
+#endif
--- /dev/null
+/*
+Copyright Redshift Software Inc. 2011-2012
+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)
+*/
+
+#ifndef BOOST_PREDEF_DETAIL_TEST_H
+#define BOOST_PREDEF_DETAIL_TEST_H
+
+#if !defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
+
+#define BOOST_PREDEF_DECLARE_TEST(x,s)
+
+#endif
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_LIBRARY_C__PREFIX_H
+#define BOOST_PREDEF_LIBRARY_C__PREFIX_H
+
+#include <boost/predef/detail/_cassert.h>
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_LIBRARY_C_GNU_H
+#define BOOST_PREDEF_LIBRARY_C_GNU_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+#include <boost/predef/library/c/_prefix.h>
+
+#if defined(__STDC__)
+#include <stddef.h>
+#elif defined(__cplusplus)
+#include <cstddef>
+#endif
+
+/*`
+[heading `BOOST_LIB_C_GNU`]
+
+[@http://en.wikipedia.org/wiki/Glibc GNU glibc] Standard C library.
+Version number available as major, and minor.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__GLIBC__`] [__predef_detection__]]
+ [[`__GNU_LIBRARY__`] [__predef_detection__]]
+
+ [[`__GLIBC__`, `__GLIBC_MINOR__`] [V.R.0]]
+ [[`__GNU_LIBRARY__`, `__GNU_LIBRARY_MINOR__`] [V.R.0]]
+ ]
+ */
+
+#define BOOST_LIB_C_GNU BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if defined(__GLIBC__) || defined(__GNU_LIBRARY__)
+# undef BOOST_LIB_C_GNU
+# if defined(__GLIBC__)
+# define BOOST_LIB_C_GNU \
+ BOOST_VERSION_NUMBER(__GLIBC__,__GLIBC_MINOR__,0)
+# else
+# define BOOST_LIB_C_GNU \
+ BOOST_VERSION_NUMBER(__GNU_LIBRARY__,__GNU_LIBRARY_MINOR__,0)
+# endif
+#endif
+
+#if BOOST_LIB_C_GNU
+# define BOOST_LIB_C_GNU_AVAILABLE
+#endif
+
+#define BOOST_LIB_C_GNU_NAME "GNU"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_GNU,BOOST_LIB_C_GNU_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+#include <boost/predef/detail/test.h>
+
+#ifndef BOOST_PREDEF_MAKE_H
+#define BOOST_PREDEF_MAKE_H
+
+/*
+Shorthands for the common version number formats used by vendors...
+*/
+
+/*`
+[heading `BOOST_PREDEF_MAKE_..` macros]
+
+These set of macros decompose common vendor version number
+macros which are composed version, revision, and patch digits.
+The naming convention indicates:
+
+* The base of the specified version number. "`BOOST_PREDEF_MAKE_0X`" for
+ hexadecimal digits, and "`BOOST_PREDEF_MAKE_10`" for decimal digits.
+* The format of the vendor version number. Where "`V`" indicates the version digits,
+ "`R`" indicates the revision digits, "`P`" indicates the patch digits, and "`0`"
+ indicates an ignored digit.
+
+Macros are:
+*/
+/*` `BOOST_PREDEF_MAKE_0X_VRP(V)` */
+#define BOOST_PREDEF_MAKE_0X_VRP(V) BOOST_VERSION_NUMBER((V&0xF00)>>8,(V&0xF0)>>4,(V&0xF))
+/*` `BOOST_PREDEF_MAKE_0X_VVRP(V)` */
+#define BOOST_PREDEF_MAKE_0X_VVRP(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xF0)>>4,(V&0xF))
+/*` `BOOST_PREDEF_MAKE_0X_VRPP(V)` */
+#define BOOST_PREDEF_MAKE_0X_VRPP(V) BOOST_VERSION_NUMBER((V&0xF000)>>12,(V&0xF00)>>8,(V&0xFF))
+/*` `BOOST_PREDEF_MAKE_0X_VVRR(V)` */
+#define BOOST_PREDEF_MAKE_0X_VVRR(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xFF),0)
+/*` `BOOST_PREDEF_MAKE_0X_VRRPPPP(V)` */
+#define BOOST_PREDEF_MAKE_0X_VRRPPPP(V) BOOST_VERSION_NUMBER((V&0xF000000)>>24,(V&0xFF0000)>>16,(V&0xFFFF))
+/*` `BOOST_PREDEF_MAKE_0X_VVRRP(V)` */
+#define BOOST_PREDEF_MAKE_0X_VVRRP(V) BOOST_VERSION_NUMBER((V&0xFF000)>>12,(V&0xFF0)>>4,(V&0xF))
+/*` `BOOST_PREDEF_MAKE_0X_VRRPP000(V)` */
+#define BOOST_PREDEF_MAKE_0X_VRRPP000(V) BOOST_VERSION_NUMBER((V&0xF0000000)>>28,(V&0xFF00000)>>20,(V&0xFF000)>>12)
+/*` `BOOST_PREDEF_MAKE_10_VPPP(V)` */
+#define BOOST_PREDEF_MAKE_10_VPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,0,(V)%1000)
+/*` `BOOST_PREDEF_MAKE_10_VRP(V)` */
+#define BOOST_PREDEF_MAKE_10_VRP(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,(V)%10)
+/*` `BOOST_PREDEF_MAKE_10_VRP000(V)` */
+#define BOOST_PREDEF_MAKE_10_VRP000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,((V)/1000)%10)
+/*` `BOOST_PREDEF_MAKE_10_VRPP(V)` */
+#define BOOST_PREDEF_MAKE_10_VRPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,((V)/100)%10,(V)%100)
+/*` `BOOST_PREDEF_MAKE_10_VRR(V)` */
+#define BOOST_PREDEF_MAKE_10_VRR(V) BOOST_VERSION_NUMBER(((V)/100)%10,(V)%100,0)
+/*` `BOOST_PREDEF_MAKE_10_VRRPP(V)` */
+#define BOOST_PREDEF_MAKE_10_VRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%10,((V)/100)%100,(V)%100)
+/*` `BOOST_PREDEF_MAKE_10_VRR000(V)` */
+#define BOOST_PREDEF_MAKE_10_VRR000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/1000)%100,0)
+/*` `BOOST_PREDEF_MAKE_10_VV00(V)` */
+#define BOOST_PREDEF_MAKE_10_VV00(V) BOOST_VERSION_NUMBER(((V)/100)%100,0,0)
+/*` `BOOST_PREDEF_MAKE_10_VVRR(V)` */
+#define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0)
+/*` `BOOST_PREDEF_MAKE_10_VVRRPP(V)` */
+#define BOOST_PREDEF_MAKE_10_VVRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%100,((V)/100)%100,(V)%100)
+/*` `BOOST_PREDEF_MAKE_10_VVRR0PP00(V)` */
+#define BOOST_PREDEF_MAKE_10_VVRR0PP00(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,((V)/100)%100)
+/*` `BOOST_PREDEF_MAKE_10_VVRR0PPPP(V)` */
+#define BOOST_PREDEF_MAKE_10_VVRR0PPPP(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,(V)%10000)
+/*` `BOOST_PREDEF_MAKE_10_VVRR00PP00(V)` */
+#define BOOST_PREDEF_MAKE_10_VVRR00PP00(V) BOOST_VERSION_NUMBER(((V)/100000000)%100,((V)/1000000)%100,((V)/100)%100)
+/*`
+[heading `BOOST_PREDEF_MAKE_*..` date macros]
+
+Date decomposition macros return a date in the relative to the 1970
+Epoch date. If the month is not available, January 1st is used as the month and day.
+If the day is not available, but the month is, the 1st of the month is used as the day.
+*/
+/*` `BOOST_PREDEF_MAKE_DATE(Y,M,D)` */
+#define BOOST_PREDEF_MAKE_DATE(Y,M,D) BOOST_VERSION_NUMBER((Y)%10000-1970,(M)%100,(D)%100)
+/*` `BOOST_PREDEF_MAKE_YYYYMMDD(V)` */
+#define BOOST_PREDEF_MAKE_YYYYMMDD(V) BOOST_PREDEF_MAKE_DATE(((V)/10000)%10000,((V)/100)%100,(V)%100)
+/*` `BOOST_PREDEF_MAKE_YYYY(V)` */
+#define BOOST_PREDEF_MAKE_YYYY(V) BOOST_PREDEF_MAKE_DATE(V,1,1)
+/*` `BOOST_PREDEF_MAKE_YYYYMM(V)` */
+#define BOOST_PREDEF_MAKE_YYYYMM(V) BOOST_PREDEF_MAKE_DATE((V)/100,(V),1)
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_OS_BSD_H
+#define BOOST_PREDEF_OS_BSD_H
+
+/* Special case: OSX will define BSD predefs if the sys/param.h
+ * header is included. We can guard against that, but only if we
+ * detect OSX first. Hence we will force include OSX detection
+ * before doing any BSD detection.
+ */
+#include <boost/predef/os/macos.h>
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_OS_BSD`]
+
+[@http://en.wikipedia.org/wiki/Berkeley_Software_Distribution BSD] operating system.
+
+BSD has various branch operating systems possible and each detected
+individually. This detects the following variations and sets a specific
+version number macro to match:
+
+* `BOOST_OS_BSD_DRAGONFLY` [@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD]
+* `BOOST_OS_BSD_FREE` [@http://en.wikipedia.org/wiki/Freebsd FreeBSD]
+* `BOOST_OS_BSD_BSDI` [@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS]
+* `BOOST_OS_BSD_NET` [@http://en.wikipedia.org/wiki/Netbsd NetBSD]
+* `BOOST_OS_BSD_OPEN` [@http://en.wikipedia.org/wiki/Openbsd OpenBSD]
+
+[note The general `BOOST_OS_BSD` is set in all cases to indicate some form
+of BSD. If the above variants is detected the corresponding macro is also set.]
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`BSD`] [__predef_detection__]]
+ [[`_SYSTYPE_BSD`] [__predef_detection__]]
+
+ [[`BSD4_2`] [4.2.0]]
+ [[`BSD4_3`] [4.3.0]]
+ [[`BSD4_4`] [4.4.0]]
+ [[`BSD`] [V.R.0]]
+ ]
+ */
+
+#include <boost/predef/os/bsd/bsdi.h>
+#include <boost/predef/os/bsd/dragonfly.h>
+#include <boost/predef/os/bsd/free.h>
+#include <boost/predef/os/bsd/open.h>
+#include <boost/predef/os/bsd/net.h>
+
+#ifndef BOOST_OS_BSD
+#define BOOST_OS_BSD BOOST_VERSION_NUMBER_NOT_AVAILABLE
+#endif
+
+#if !BOOST_PREDEF_DETAIL_OS_DETECTED && ( \
+ defined(BSD) || \
+ defined(_SYSTYPE_BSD) \
+ )
+# undef BOOST_OS_BSD
+# include <sys/param.h>
+# if !defined(BOOST_OS_BSD) && defined(BSD4_4)
+# define BOOST_OS_BSD BOOST_VERSION_NUMBER(4,4,0)
+# endif
+# if !defined(BOOST_OS_BSD) && defined(BSD4_3)
+# define BOOST_OS_BSD BOOST_VERSION_NUMBER(4,3,0)
+# endif
+# if !defined(BOOST_OS_BSD) && defined(BSD4_2)
+# define BOOST_OS_BSD BOOST_VERSION_NUMBER(4,2,0)
+# endif
+# if !defined(BOOST_OS_BSD) && defined(BSD)
+# define BOOST_OS_BSD BOOST_PREDEF_MAKE_10_VVRR(BSD)
+# endif
+# if !defined(BOOST_OS_BSD)
+# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_OS_BSD
+# define BOOST_OS_BSD_AVAILABLE
+# include <boost/predef/detail/os_detected.h>
+#endif
+
+#define BOOST_OS_BSD_NAME "BSD"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD,BOOST_OS_BSD_NAME)
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2012-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_OS_BSD_BSDI_H
+#define BOOST_PREDEF_OS_BSD_BSDI_H
+
+#include <boost/predef/os/bsd.h>
+
+/*`
+[heading `BOOST_OS_BSD_BSDI`]
+
+[@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__bsdi__`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_OS_BSD_BSDI BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !BOOST_PREDEF_DETAIL_OS_DETECTED && ( \
+ defined(__bsdi__) \
+ )
+# ifndef BOOST_OS_BSD_AVAILABLE
+# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
+# define BOOST_OS_BSD_AVAILABLE
+# endif
+# undef BOOST_OS_BSD_BSDI
+# define BOOST_OS_BSD_BSDI BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_OS_BSD_BSDI
+# define BOOST_OS_BSD_BSDI_AVAILABLE
+# include <boost/predef/detail/os_detected.h>
+#endif
+
+#define BOOST_OS_BSD_BSDI_NAME "BSDi BSD/OS"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_BSDI,BOOST_OS_BSD_BSDI_NAME)
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2012-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_OS_BSD_DRAGONFLY_H
+#define BOOST_PREDEF_OS_BSD_DRAGONFLY_H
+
+#include <boost/predef/os/bsd.h>
+
+/*`
+[heading `BOOST_OS_BSD_DRAGONFLY`]
+
+[@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__DragonFly__`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_OS_BSD_DRAGONFLY BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !BOOST_PREDEF_DETAIL_OS_DETECTED && ( \
+ defined(__DragonFly__) \
+ )
+# ifndef BOOST_OS_BSD_AVAILABLE
+# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
+# define BOOST_OS_BSD_AVAILABLE
+# endif
+# undef BOOST_OS_BSD_DRAGONFLY
+# if defined(__DragonFly__)
+# define BOOST_OS_DRAGONFLY_BSD BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_OS_BSD_DRAGONFLY
+# define BOOST_OS_BSD_DRAGONFLY_AVAILABLE
+# include <boost/predef/detail/os_detected.h>
+#endif
+
+#define BOOST_OS_BSD_DRAGONFLY_NAME "DragonFly BSD"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_DRAGONFLY,BOOST_OS_BSD_DRAGONFLY_NAME)
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2012-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_OS_BSD_FREE_H
+#define BOOST_PREDEF_OS_BSD_FREE_H
+
+#include <boost/predef/os/bsd.h>
+
+/*`
+[heading `BOOST_OS_BSD_FREE`]
+
+[@http://en.wikipedia.org/wiki/Freebsd FreeBSD] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__FreeBSD__`] [__predef_detection__]]
+
+ [[`__FreeBSD_version`] [V.R.P]]
+ ]
+ */
+
+#define BOOST_OS_BSD_FREE BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !BOOST_PREDEF_DETAIL_OS_DETECTED && ( \
+ defined(__FreeBSD__) \
+ )
+# ifndef BOOST_OS_BSD_AVAILABLE
+# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
+# define BOOST_OS_BSD_AVAILABLE
+# endif
+# undef BOOST_OS_BSD_FREE
+# if defined(__FreeBSD_version)
+# if __FreeBSD_version < 500000
+# define BOOST_OS_BSD_FREE \
+ BOOST_PREDEF_MAKE_10_VRP000(__FreeBSD_version)
+# else
+# define BOOST_OS_BSD_FREE \
+ BOOST_PREDEF_MAKE_10_VRR000(__FreeBSD_version)
+# endif
+# else
+# define BOOST_OS_BSD_FREE BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_OS_BSD_FREE
+# define BOOST_OS_BSD_FREE_AVAILABLE
+# include <boost/predef/detail/os_detected.h>
+#endif
+
+#define BOOST_OS_BSD_FREE_NAME "Free BSD"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_FREE,BOOST_OS_BSD_FREE_NAME)
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2012-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_OS_BSD_NET_H
+#define BOOST_PREDEF_OS_BSD_NET_H
+
+#include <boost/predef/os/bsd.h>
+
+/*`
+[heading `BOOST_OS_BSD_NET`]
+
+[@http://en.wikipedia.org/wiki/Netbsd NetBSD] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__NETBSD__`] [__predef_detection__]]
+ [[`__NetBSD__`] [__predef_detection__]]
+
+ [[`__NETBSD_version`] [V.R.P]]
+ [[`NetBSD0_8`] [0.8.0]]
+ [[`NetBSD0_9`] [0.9.0]]
+ [[`NetBSD1_0`] [1.0.0]]
+ [[`__NetBSD_Version`] [V.R.P]]
+ ]
+ */
+
+#define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !BOOST_PREDEF_DETAIL_OS_DETECTED && ( \
+ defined(__NETBSD__) || defined(__NetBSD__) \
+ )
+# ifndef BOOST_OS_BSD_AVAILABLE
+# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
+# define BOOST_OS_BSD_AVAILABLE
+# endif
+# undef BOOST_OS_BSD_NET
+# if defined(__NETBSD__)
+# if defined(__NETBSD_version)
+# if __NETBSD_version < 500000
+# define BOOST_OS_BSD_NET \
+ BOOST_PREDEF_MAKE_10_VRP000(__NETBSD_version)
+# else
+# define BOOST_OS_BSD_NET \
+ BOOST_PREDEF_MAKE_10_VRR000(__NETBSD_version)
+# endif
+# else
+# define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# elif defined(__NetBSD__)
+# if !defined(BOOST_OS_BSD_NET) && defined(NetBSD0_8)
+# define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER(0,8,0)
+# endif
+# if !defined(BOOST_OS_BSD_NET) && defined(NetBSD0_9)
+# define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER(0,9,0)
+# endif
+# if !defined(BOOST_OS_BSD_NET) && defined(NetBSD1_0)
+# define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER(1,0,0)
+# endif
+# if !defined(BOOST_OS_BSD_NET) && defined(__NetBSD_Version)
+# define BOOST_OS_BSD_NET \
+ BOOST_PREDEF_MAKE_10_VVRR00PP00(__NetBSD_Version)
+# endif
+# if !defined(BOOST_OS_BSD_NET)
+# define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# endif
+#endif
+
+#if BOOST_OS_BSD_NET
+# define BOOST_OS_BSD_NET_AVAILABLE
+# include <boost/predef/detail/os_detected.h>
+#endif
+
+#define BOOST_OS_BSD_NET_NAME "DragonFly BSD"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_NET,BOOST_OS_BSD_NET_NAME)
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2012-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_OS_BSD_OPEN_H
+#define BOOST_PREDEF_OS_BSD_OPEN_H
+
+#include <boost/predef/os/bsd.h>
+
+/*`
+[heading `BOOST_OS_BSD_OPEN`]
+
+[@http://en.wikipedia.org/wiki/Openbsd OpenBSD] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`__OpenBSD__`] [__predef_detection__]]
+
+ [[`OpenBSD2_0`] [2.0.0]]
+ [[`OpenBSD2_1`] [2.1.0]]
+ [[`OpenBSD2_2`] [2.2.0]]
+ [[`OpenBSD2_3`] [2.3.0]]
+ [[`OpenBSD2_4`] [2.4.0]]
+ [[`OpenBSD2_5`] [2.5.0]]
+ [[`OpenBSD2_6`] [2.6.0]]
+ [[`OpenBSD2_7`] [2.7.0]]
+ [[`OpenBSD2_8`] [2.8.0]]
+ [[`OpenBSD2_9`] [2.9.0]]
+ [[`OpenBSD3_0`] [3.0.0]]
+ [[`OpenBSD3_1`] [3.1.0]]
+ [[`OpenBSD3_2`] [3.2.0]]
+ [[`OpenBSD3_3`] [3.3.0]]
+ [[`OpenBSD3_4`] [3.4.0]]
+ [[`OpenBSD3_5`] [3.5.0]]
+ [[`OpenBSD3_6`] [3.6.0]]
+ [[`OpenBSD3_7`] [3.7.0]]
+ [[`OpenBSD3_8`] [3.8.0]]
+ [[`OpenBSD3_9`] [3.9.0]]
+ [[`OpenBSD4_0`] [4.0.0]]
+ [[`OpenBSD4_1`] [4.1.0]]
+ [[`OpenBSD4_2`] [4.2.0]]
+ [[`OpenBSD4_3`] [4.3.0]]
+ [[`OpenBSD4_4`] [4.4.0]]
+ [[`OpenBSD4_5`] [4.5.0]]
+ [[`OpenBSD4_6`] [4.6.0]]
+ [[`OpenBSD4_7`] [4.7.0]]
+ [[`OpenBSD4_8`] [4.8.0]]
+ [[`OpenBSD4_9`] [4.9.0]]
+ ]
+ */
+
+#define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !BOOST_PREDEF_DETAIL_OS_DETECTED && ( \
+ defined(__OpenBSD__) \
+ )
+# ifndef BOOST_OS_BSD_AVAILABLE
+# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
+# define BOOST_OS_BSD_AVAILABLE
+# endif
+# undef BOOST_OS_BSD_OPEN
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_0)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,0,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_1)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,1,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_2)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,2,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_3)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,3,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_4)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,4,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_5)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,5,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_6)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,6,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_7)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,7,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_8)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,8,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_9)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,9,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_0)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,0,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_1)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,1,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_2)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,2,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_3)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,3,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_4)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,4,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_5)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,5,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_6)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,6,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_7)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,7,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_8)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,8,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_9)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,9,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_0)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,0,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_1)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,1,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_2)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,2,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_3)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,3,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_4)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,4,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_5)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,5,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_6)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,6,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_7)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,7,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_8)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,8,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_9)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,9,0)
+# endif
+# if !defined(BOOST_OS_BSD_OPEN)
+# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+#if BOOST_OS_BSD_OPEN
+# define BOOST_OS_BSD_OPEN_AVAILABLE
+# include <boost/predef/detail/os_detected.h>
+#endif
+
+#define BOOST_OS_BSD_OPEN_NAME "OpenBSD"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_OPEN,BOOST_OS_BSD_OPEN_NAME)
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_OS_MACOS_H
+#define BOOST_PREDEF_OS_MACOS_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_OS_MACOS`]
+
+[@http://en.wikipedia.org/wiki/Mac_OS Mac OS] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`macintosh`] [__predef_detection__]]
+ [[`Macintosh`] [__predef_detection__]]
+ [[`__APPLE__`] [__predef_detection__]]
+ [[`__MACH__`] [__predef_detection__]]
+
+ [[`__APPLE__`, `__MACH__`] [10.0.0]]
+ [[ /otherwise/ ] [9.0.0]]
+ ]
+ */
+
+#define BOOST_OS_MACOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !BOOST_PREDEF_DETAIL_OS_DETECTED && ( \
+ defined(macintosh) || defined(Macintosh) || \
+ (defined(__APPLE__) && defined(__MACH__)) \
+ )
+# undef BOOST_OS_MACOS
+# if !defined(BOOST_OS_MACOS) && defined(__APPLE__) && defined(__MACH__)
+# define BOOST_OS_MACOS BOOST_VERSION_NUMBER(10,0,0)
+# endif
+# if !defined(BOOST_OS_MACOS)
+# define BOOST_OS_MACOS BOOST_VERSION_NUMBER(9,0,0)
+# endif
+#endif
+
+#if BOOST_OS_MACOS
+# define BOOST_OS_MACOS_AVAILABLE
+# include <boost/predef/detail/os_detected.h>
+#endif
+
+#define BOOST_OS_MACOS_NAME "Mac OS"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_OS_MACOS,BOOST_OS_MACOS_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_OS_WINDOWS_H
+#define BOOST_PREDEF_OS_WINDOWS_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+
+/*`
+[heading `BOOST_OS_WINDOWS`]
+
+[@http://en.wikipedia.org/wiki/Category:Microsoft_Windows Microsoft Windows] operating system.
+
+[table
+ [[__predef_symbol__] [__predef_version__]]
+
+ [[`_WIN32`] [__predef_detection__]]
+ [[`_WIN64`] [__predef_detection__]]
+ [[`__WIN32__`] [__predef_detection__]]
+ [[`__TOS_WIN__`] [__predef_detection__]]
+ [[`__WINDOWS__`] [__predef_detection__]]
+ ]
+ */
+
+#define BOOST_OS_WINDOWS BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+#if !BOOST_PREDEF_DETAIL_OS_DETECTED && ( \
+ defined(_WIN32) || defined(_WIN64) || \
+ defined(__WIN32__) || defined(__TOS_WIN__) || \
+ defined(__WINDOWS__) \
+ )
+# undef BOOST_OS_WINDOWS
+# define BOOST_OS_WINDOWS BOOST_VERSION_NUMBER_AVAILABLE
+#endif
+
+#if BOOST_OS_WINDOWS
+# define BOOST_OS_WINDOWS_AVAILABLE
+# include <boost/predef/detail/os_detected.h>
+#endif
+
+#define BOOST_OS_WINDOWS_NAME "Microsoft Windows"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_OS_WINDOWS,BOOST_OS_WINDOWS_NAME)
+
+#endif
--- /dev/null
+/*
+Copyright Redshift Software, Inc. 2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_ENDIAN_H
+#define BOOST_PREDEF_ENDIAN_H
+
+#include <boost/predef/version_number.h>
+#include <boost/predef/make.h>
+#include <boost/predef/library/c/gnu.h>
+#include <boost/predef/os/macos.h>
+#include <boost/predef/os/bsd.h>
+
+/*`
+[heading `BOOST_ENDIAN_*`]
+
+Detection of endian memory ordering. There are four defined macros
+in this header that define the various generally possible endian
+memory orderings:
+
+* `BOOST_ENDIAN_BIG_BYTE`, byte-swapped big-endian.
+* `BOOST_ENDIAN_BIG_WORD`, word-swapped big-endian.
+* `BOOST_ENDIAN_LITTLE_BYTE`, byte-swapped little-endian.
+* `BOOST_ENDIAN_LITTLE_WORD`, word-swapped little-endian.
+
+The detection is conservative in that it only identifies endianness
+that it knows for certain. In particular bi-endianness is not
+indicated as is it not practically possible to determine the
+endianness from anything but an operating system provided
+header. And the currently known headers do not define that
+programatic bi-endianness is available.
+
+This implementation is a compilation of various publicly available
+information and acquired knowledge:
+
+# The indispensable documentation of "Pre-defined Compiler Macros"
+ [@http://sourceforge.net/p/predef/wiki/Endianness Endianness].
+# The various endian specifications available in the
+ [@http://wikipedia.org/ Wikipedia] computer architecture pages.
+# Generally available searches for headers that define endianness.
+ */
+
+#define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_NOT_AVAILABLE
+#define BOOST_ENDIAN_BIG_WORD BOOST_VERSION_NUMBER_NOT_AVAILABLE
+#define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_NOT_AVAILABLE
+#define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_NOT_AVAILABLE
+
+/* GNU libc provides a header defining __BYTE_ORDER, or _BYTE_ORDER.
+ * And some OSs provide some for of endian header also.
+ */
+#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
+ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
+# if BOOST_LIB_C_GNU
+# include <endian.h>
+# else
+# if BOOST_OS_MACOS
+# include <machine/endian.h>
+# else
+# if BOOST_OS_BSD
+# if BOOST_OS_BSD_OPEN
+# include <machine/endian.h>
+# else
+# include <sys/endian.h>
+# endif
+# endif
+# endif
+# endif
+# if defined(__BYTE_ORDER)
+# if (__BYTE_ORDER == __BIG_ENDIAN)
+# undef BOOST_ENDIAN_BIG_BYTE
+# define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# if (__BYTE_ORDER == __LITTLE_ENDIAN)
+# undef BOOST_ENDIAN_LITTLE_BYTE
+# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# if (__BYTE_ORDER == __PDP_ENDIAN)
+# undef BOOST_ENDIAN_LITTLE_WORD
+# define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# endif
+# if !defined(__BYTE_ORDER) && defined(_BYTE_ORDER)
+# if (_BYTE_ORDER == _BIG_ENDIAN)
+# undef BOOST_ENDIAN_BIG_BYTE
+# define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# if (_BYTE_ORDER == _LITTLE_ENDIAN)
+# undef BOOST_ENDIAN_LITTLE_BYTE
+# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# if (_BYTE_ORDER == _PDP_ENDIAN)
+# undef BOOST_ENDIAN_LITTLE_WORD
+# define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# endif
+#endif
+
+/* Built-in byte-swpped big-endian macros.
+ */
+#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
+ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
+# if !BOOST_ENDIAN_BIG_BYTE
+# if (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) || \
+ defined(__ARMEB__) || \
+ defined(__THUMBEB__) || \
+ defined(__AARCH64EB__) || \
+ defined(_MIPSEB) || \
+ defined(__MIPSEB) || \
+ defined(__MIPSEB__)
+# undef BOOST_ENDIAN_BIG_BYTE
+# define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# endif
+#endif
+
+/* Built-in byte-swpped little-endian macros.
+ */
+#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
+ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
+# if !BOOST_ENDIAN_LITTLE_BYTE
+# if (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \
+ defined(__ARMEL__) || \
+ defined(__THUMBEL__) || \
+ defined(__AARCH64EL__) || \
+ defined(_MIPSEL) || \
+ defined(__MIPSEL) || \
+ defined(__MIPSEL__)
+# undef BOOST_ENDIAN_LITTLE_BYTE
+# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# endif
+#endif
+
+/* Some architectures are strictly one endianess (as opposed
+ * the current common bi-endianess).
+ */
+#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
+ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
+# include <boost/predef/architecture.h>
+# if BOOST_ARCH_M68K || \
+ BOOST_ARCH_PARISK || \
+ BOOST_ARCH_SYS370 || \
+ BOOST_ARCH_SYS390 || \
+ BOOST_ARCH_Z
+# undef BOOST_ENDIAN_BIG_BYTE
+# define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# if BOOST_ARCH_AMD64 || \
+ BOOST_ARCH_IA64 || \
+ BOOST_ARCH_X86 || \
+ BOOST_ARCH_BLACKFIN
+# undef BOOST_ENDIAN_LITTLE_BYTE
+# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+#endif
+
+/* Windows on ARM, if not otherwise detected/specified, is always
+ * byte-swaped little-endian.
+ */
+#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
+ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
+# if BOOST_ARCH_ARM
+# include <boost/predef/os/windows.h>
+# if BOOST_OS_WINDOWS
+# undef BOOST_ENDIAN_LITTLE_BYTE
+# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
+# endif
+# endif
+#endif
+
+#if BOOST_ENDIAN_BIG_BYTE
+# define BOOST_ENDIAN_BIG_BYTE_AVAILABLE
+#endif
+#if BOOST_ENDIAN_BIG_WORD
+# define BOOST_ENDIAN_BIG_WORD_BYTE_AVAILABLE
+#endif
+#if BOOST_ENDIAN_LITTLE_BYTE
+# define BOOST_ENDIAN_LITTLE_BYTE_AVAILABLE
+#endif
+#if BOOST_ENDIAN_LITTLE_WORD
+# define BOOST_ENDIAN_LITTLE_WORD_BYTE_AVAILABLE
+#endif
+
+#define BOOST_ENDIAN_BIG_BYTE_NAME "Byte-Swapped Big-Endian"
+#define BOOST_ENDIAN_BIG_WORD_NAME "Word-Swapped Big-Endian"
+#define BOOST_ENDIAN_LITTLE_BYTE_NAME "Byte-Swapped Little-Endian"
+#define BOOST_ENDIAN_LITTLE_WORD_NAME "Word-Swapped Little-Endian"
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_BIG_BYTE,BOOST_ENDIAN_BIG_BYTE_NAME)
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_BIG_WORD,BOOST_ENDIAN_BIG_WORD_NAME)
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_LITTLE_BYTE,BOOST_ENDIAN_LITTLE_BYTE_NAME)
+
+#include <boost/predef/detail/test.h>
+BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_LITTLE_WORD,BOOST_ENDIAN_LITTLE_WORD_NAME)
+
+
+#endif
--- /dev/null
+/*
+Copyright Rene Rivera 2005
+Copyright Redshift Software, Inc. 2008-2013
+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)
+*/
+
+#ifndef BOOST_PREDEF_VERSION_NUMBER_H
+#define BOOST_PREDEF_VERSION_NUMBER_H
+
+/*`
+[heading `BOOST_VERSION_NUMBER`]
+
+``
+BOOST_VERSION_NUMBER(major,minor,patch)
+``
+
+Defines standard version numbers, with these properties:
+
+* Decimal base whole numbers in the range \[0,1000000000).
+ The number range is designed to allow for a (2,2,5) triplet.
+ Which fits within a 32 bit value.
+* The `major` number can be in the \[0,99\] range.
+* The `minor` number can be in the \[0,99\] range.
+* The `patch` number can be in the \[0,99999\] range.
+* Values can be specified in any base. As the defined value
+ is an constant expression.
+* Value can be directly used in both preprocessor and compiler
+ expressions for comparison to other similarly defined values.
+* The implementation enforces the individual ranges for the
+ major, minor, and patch numbers. And values over the ranges
+ are truncated (modulo).
+
+*/
+#define BOOST_VERSION_NUMBER(major,minor,patch) \
+ ( (((major)%100)*10000000) + (((minor)%100)*100000) + ((patch)%100000) )
+
+#define BOOST_VERSION_NUMBER_MAX \
+ BOOST_VERSION_NUMBER(99,99,99999)
+
+#define BOOST_VERSION_NUMBER_ZERO \
+ BOOST_VERSION_NUMBER(0,0,0)
+
+#define BOOST_VERSION_NUMBER_MIN \
+ BOOST_VERSION_NUMBER(0,0,1)
+
+#define BOOST_VERSION_NUMBER_AVAILABLE \
+ BOOST_VERSION_NUMBER_MIN
+
+#define BOOST_VERSION_NUMBER_NOT_AVAILABLE \
+ BOOST_VERSION_NUMBER_ZERO
+
+#endif
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
# define BOOST_PP_CAT_I(a, b) a ## b
# else
-# define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(a ## b)
-# define BOOST_PP_CAT_II(res) res
+# define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
+# define BOOST_PP_CAT_II(p, res) res
# endif
#
# endif
--- /dev/null
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * 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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
+#
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_LESS */
+#
+# if BOOST_PP_CONFIG_FLAGS() & (BOOST_PP_CONFIG_MWCC() | BOOST_PP_CONFIG_DMC())
+# define BOOST_PP_LESS(x, y) BOOST_PP_BITAND(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL(x, y))
+# elif ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LESS(x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL, 0 BOOST_PP_TUPLE_EAT_2)(x, y)
+# else
+# define BOOST_PP_LESS(x, y) BOOST_PP_LESS_I(x, y)
+# define BOOST_PP_LESS_I(x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL, 0 BOOST_PP_TUPLE_EAT_2)(x, y)
+# endif
+#
+# /* BOOST_PP_LESS_D */
+#
+# if BOOST_PP_CONFIG_FLAGS() & (BOOST_PP_CONFIG_MWCC() | BOOST_PP_CONFIG_DMC())
+# define BOOST_PP_LESS_D(d, x, y) BOOST_PP_BITAND(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D(d, x, y))
+# elif ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LESS_D(d, x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D, 0 BOOST_PP_TUPLE_EAT_3)(d, x, y)
+# else
+# define BOOST_PP_LESS_D(d, x, y) BOOST_PP_LESS_D_I(d, x, y)
+# define BOOST_PP_LESS_D_I(d, x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D, 0 BOOST_PP_TUPLE_EAT_3)(d, x, y)
+# endif
+#
+# endif
--- /dev/null
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * 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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
+#
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/not.hpp>
+#
+# /* BOOST_PP_LESS_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LESS_EQUAL(x, y) BOOST_PP_NOT(BOOST_PP_SUB(x, y))
+# else
+# define BOOST_PP_LESS_EQUAL(x, y) BOOST_PP_LESS_EQUAL_I(x, y)
+# define BOOST_PP_LESS_EQUAL_I(x, y) BOOST_PP_NOT(BOOST_PP_SUB(x, y))
+# endif
+#
+# /* BOOST_PP_LESS_EQUAL_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LESS_EQUAL_D(d, x, y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y))
+# else
+# define BOOST_PP_LESS_EQUAL_D(d, x, y) BOOST_PP_LESS_EQUAL_D_I(d, x, y)
+# define BOOST_PP_LESS_EQUAL_D_I(d, x, y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y))
+# endif
+#
+# endif
--- /dev/null
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * 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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_NOT_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_NOT_EQUAL(x, y) BOOST_PP_NOT_EQUAL_I(x, y)
+# else
+# define BOOST_PP_NOT_EQUAL(x, y) BOOST_PP_NOT_EQUAL_OO((x, y))
+# define BOOST_PP_NOT_EQUAL_OO(par) BOOST_PP_NOT_EQUAL_I ## par
+# endif
+#
+# define BOOST_PP_NOT_EQUAL_I(x, y) BOOST_PP_CAT(BOOST_PP_NOT_EQUAL_CHECK_, BOOST_PP_NOT_EQUAL_ ## x(0, BOOST_PP_NOT_EQUAL_ ## y))
+#
+# /* BOOST_PP_NOT_EQUAL_D */
+#
+# define BOOST_PP_NOT_EQUAL_D(d, x, y) BOOST_PP_NOT_EQUAL(x, y)
+#
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_0(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_2(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_3(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_4(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_5(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_6(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_7(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_8(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_9(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_10(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_11(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_12(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_13(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_14(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_15(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_16(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_17(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_18(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_19(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_20(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_21(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_22(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_23(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_24(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_25(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_26(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_27(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_28(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_29(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_30(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_31(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_32(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_33(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_34(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_35(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_36(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_37(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_38(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_39(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_40(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_41(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_42(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_43(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_44(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_45(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_46(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_47(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_48(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_49(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_50(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_51(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_52(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_53(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_54(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_55(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_56(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_57(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_58(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_59(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_60(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_61(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_62(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_63(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_64(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_65(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_66(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_67(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_68(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_69(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_70(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_71(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_72(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_73(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_74(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_75(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_76(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_77(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_78(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_79(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_80(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_81(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_82(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_83(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_84(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_85(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_86(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_87(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_88(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_89(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_90(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_91(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_92(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_93(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_94(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_95(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_96(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_97(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_98(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_99(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_100(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_101(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_102(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_103(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_104(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_105(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_106(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_107(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_108(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_109(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_110(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_111(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_112(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_113(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_114(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_115(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_116(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_117(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_118(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_119(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_120(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_121(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_122(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_123(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_124(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_125(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_126(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_127(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_128(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_129(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_130(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_131(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_132(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_133(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_134(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_135(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_136(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_137(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_138(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_139(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_140(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_141(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_142(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_143(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_144(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_145(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_146(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_147(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_148(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_149(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_150(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_151(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_152(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_153(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_154(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_155(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_156(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_157(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_158(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_159(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_160(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_161(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_162(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_163(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_164(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_165(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_166(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_167(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_168(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_169(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_170(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_171(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_172(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_173(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_174(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_175(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_176(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_177(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_178(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_179(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_180(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_181(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_182(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_183(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_184(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_185(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_186(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_187(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_188(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_189(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_190(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_191(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_192(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_193(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_194(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_195(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_196(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_197(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_198(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_199(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_200(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_201(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_202(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_203(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_204(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_205(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_206(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_207(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_208(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_209(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_210(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_211(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_212(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_213(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_214(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_215(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_216(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_217(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_218(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_219(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_220(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_221(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_222(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_223(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_224(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_225(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_226(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_227(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_228(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_229(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_230(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_231(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_232(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_233(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_234(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_235(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_236(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_237(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_238(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_239(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_240(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_241(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_242(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_243(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_244(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_245(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_246(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_247(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_248(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_249(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_250(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_251(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_252(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_253(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_254(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_255(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_256(c, y) 0
+#
+#if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_NOT_EQUAL_0(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_1(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_2(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_3(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_4(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_5(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_6(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_7(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_8(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_9(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_10(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_11(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_12(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_13(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_14(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_15(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_16(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_17(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_18(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_19(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_20(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_21(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_22(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_23(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_24(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_25(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_26(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_27(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_28(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_29(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_30(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_31(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_32(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_33(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_34(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_35(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_36(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_37(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_38(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_39(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_40(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_41(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_42(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_43(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_44(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_45(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_46(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_47(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_48(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_49(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_50(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_51(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_52(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_53(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_54(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_55(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_56(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_57(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_58(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_59(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_60(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_61(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_62(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_63(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_64(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_65(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_66(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_67(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_68(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_69(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_70(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_71(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_72(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_73(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_74(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_75(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_76(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_77(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_78(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_79(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_80(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_81(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_82(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_83(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_84(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_85(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_86(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_87(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_88(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_89(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_90(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_91(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_92(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_93(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_94(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_95(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_96(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_97(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_98(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_99(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_100(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_101(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_102(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_103(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_104(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_105(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_106(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_107(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_108(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_109(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_110(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_111(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_112(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_113(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_114(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_115(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_116(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_117(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_118(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_119(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_120(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_121(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_122(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_123(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_124(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_125(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_126(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_127(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_128(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_129(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_130(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_131(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_132(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_133(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_134(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_135(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_136(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_137(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_138(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_139(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_140(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_141(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_142(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_143(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_144(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_145(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_146(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_147(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_148(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_149(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_150(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_151(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_152(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_153(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_154(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_155(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_156(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_157(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_158(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_159(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_160(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_161(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_162(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_163(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_164(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_165(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_166(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_167(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_168(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_169(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_170(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_171(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_172(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_173(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_174(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_175(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_176(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_177(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_178(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_179(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_180(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_181(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_182(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_183(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_184(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_185(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_186(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_187(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_188(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_189(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_190(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_191(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_192(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_193(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_194(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_195(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_196(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_197(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_198(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_199(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_200(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_201(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_202(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_203(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_204(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_205(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_206(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_207(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_208(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_209(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_210(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_211(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_212(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_213(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_214(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_215(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_216(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_217(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_218(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_219(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_220(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_221(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_222(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_223(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_224(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_225(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_226(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_227(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_228(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_229(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_230(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_231(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_232(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_233(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_234(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_235(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_236(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_237(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_238(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_239(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_240(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_241(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_242(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_243(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_244(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_245(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_246(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_247(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_248(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_249(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_250(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_251(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_252(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_253(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_254(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_255(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_256(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# else
+# define BOOST_PP_NOT_EQUAL_0(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_1(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_2(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_3(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_4(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_5(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_6(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_7(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_8(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_9(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_10(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_11(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_12(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_13(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_14(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_15(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_16(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_17(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_18(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_19(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_20(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_21(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_22(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_23(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_24(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_25(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_26(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_27(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_28(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_29(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_30(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_31(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_32(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_33(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_34(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_35(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_36(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_37(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_38(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_39(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_40(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_41(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_42(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_43(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_44(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_45(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_46(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_47(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_48(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_49(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_50(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_51(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_52(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_53(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_54(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_55(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_56(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_57(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_58(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_59(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_60(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_61(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_62(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_63(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_64(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_65(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_66(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_67(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_68(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_69(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_70(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_71(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_72(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_73(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_74(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_75(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_76(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_77(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_78(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_79(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_80(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_81(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_82(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_83(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_84(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_85(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_86(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_87(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_88(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_89(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_90(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_91(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_92(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_93(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_94(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_95(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_96(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_97(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_98(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_99(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_100(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_101(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_102(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_103(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_104(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_105(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_106(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_107(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_108(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_109(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_110(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_111(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_112(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_113(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_114(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_115(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_116(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_117(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_118(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_119(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_120(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_121(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_122(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_123(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_124(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_125(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_126(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_127(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_128(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_129(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_130(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_131(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_132(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_133(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_134(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_135(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_136(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_137(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_138(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_139(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_140(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_141(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_142(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_143(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_144(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_145(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_146(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_147(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_148(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_149(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_150(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_151(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_152(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_153(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_154(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_155(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_156(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_157(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_158(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_159(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_160(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_161(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_162(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_163(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_164(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_165(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_166(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_167(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_168(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_169(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_170(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_171(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_172(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_173(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_174(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_175(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_176(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_177(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_178(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_179(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_180(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_181(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_182(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_183(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_184(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_185(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_186(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_187(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_188(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_189(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_190(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_191(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_192(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_193(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_194(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_195(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_196(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_197(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_198(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_199(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_200(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_201(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_202(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_203(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_204(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_205(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_206(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_207(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_208(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_209(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_210(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_211(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_212(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_213(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_214(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_215(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_216(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_217(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_218(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_219(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_220(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_221(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_222(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_223(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_224(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_225(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_226(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_227(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_228(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_229(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_230(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_231(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_232(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_233(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_234(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_235(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_236(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_237(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_238(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_239(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_240(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_241(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_242(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_243(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_244(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_245(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_246(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_247(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_248(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_249(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_250(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_251(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_252(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_253(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_254(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_255(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_256(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# endif
+#
+# endif
# /* **************************************************************************
# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * 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)
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * 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) *
# * *
# ************************************************************************** */
#
# endif
# endif
#
+# /* BOOST_PP_VARIADICS */
+#
+# if !defined BOOST_PP_VARIADICS
+# /* variadic support explicitly disabled for all untested compilers */
+# if defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI
+# define BOOST_PP_VARIADICS 0
+# /* VC++ (C/C++) */
+# elif defined _MSC_VER && _MSC_VER >= 1400 && !defined __EDG__
+# if _MSC_VER >= 1400
+# define BOOST_PP_VARIADICS 1
+# define BOOST_PP_VARIADICS_MSVC 1
+# else
+# define BOOST_PP_VARIADICS 0
+# endif
+# /* Wave (C/C++), GCC (C++) */
+# elif defined __WAVE__ && __WAVE_HAS_VARIADICS__ || defined __GNUC__ && __GXX_EXPERIMENTAL_CXX0X__
+# define BOOST_PP_VARIADICS 1
+# /* EDG-based (C/C++), GCC (C), and unknown (C/C++) */
+# elif !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L
+# define BOOST_PP_VARIADICS 1
+# else
+# define BOOST_PP_VARIADICS 0
+# endif
+# elif !BOOST_PP_VARIADICS + 1 < 2
+# undef BOOST_PP_VARIADICS
+# define BOOST_PP_VARIADICS 1
+# if defined _MSC_VER && _MSC_VER >= 1400 && !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI)
+# define BOOST_PP_VARIADICS_MSVC 1
+# endif
+# else
+# undef BOOST_PP_VARIADICS
+# define BOOST_PP_VARIADICS 0
+# endif
+#
# endif
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * 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)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_IS_UNARY_HPP
+# define BOOST_PREPROCESSOR_DETAIL_IS_UNARY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/detail/check.hpp>
+#
+# /* BOOST_PP_IS_UNARY */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_IS_UNARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_UNARY_CHECK)
+# else
+# define BOOST_PP_IS_UNARY(x) BOOST_PP_IS_UNARY_I(x)
+# define BOOST_PP_IS_UNARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_UNARY_CHECK)
+# endif
+#
+# define BOOST_PP_IS_UNARY_CHECK(a) 1
+# define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_UNARY_CHECK 0, BOOST_PP_NIL
+#
+# endif
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * 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) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_OVERLOAD_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_OVERLOAD_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
+#
+# /* BOOST_PP_OVERLOAD */
+#
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_OVERLOAD(prefix, ...) BOOST_PP_CAT(prefix, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__))
+# endif
+#
+# endif
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * 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)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_IF_HPP
+# define BOOST_PREPROCESSOR_IF_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+#
+# endif
# include <boost/preprocessor/iteration/detail/bounds/lower1.hpp>
# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
# include <boost/preprocessor/iteration/detail/bounds/upper1.hpp>
-# define BOOST_PP_ITERATION_FLAGS_1 0
+# define BOOST_PP_ITERATION_FLAGS_1() 0
# undef BOOST_PP_ITERATION_LIMITS
# elif defined(BOOST_PP_ITERATION_PARAMS_1)
# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_1)
# include <boost/preprocessor/iteration/detail/bounds/upper1.hpp>
# define BOOST_PP_FILENAME_1 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_1)
# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_1) >= 4
-# define BOOST_PP_ITERATION_FLAGS_1 BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_1)
+# define BOOST_PP_ITERATION_FLAGS_1() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_1)
# else
-# define BOOST_PP_ITERATION_FLAGS_1 0
+# define BOOST_PP_ITERATION_FLAGS_1() 0
# endif
# else
# error BOOST_PP_ERROR: depth #1 iteration boundaries or filename not defined
# include <boost/preprocessor/iteration/detail/bounds/lower2.hpp>
# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
# include <boost/preprocessor/iteration/detail/bounds/upper2.hpp>
-# define BOOST_PP_ITERATION_FLAGS_2 0
+# define BOOST_PP_ITERATION_FLAGS_2() 0
# undef BOOST_PP_ITERATION_LIMITS
# elif defined(BOOST_PP_ITERATION_PARAMS_2)
# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_2)
# include <boost/preprocessor/iteration/detail/bounds/upper2.hpp>
# define BOOST_PP_FILENAME_2 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_2)
# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_2) >= 4
-# define BOOST_PP_ITERATION_FLAGS_2 BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_2)
+# define BOOST_PP_ITERATION_FLAGS_2() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_2)
# else
-# define BOOST_PP_ITERATION_FLAGS_2 0
+# define BOOST_PP_ITERATION_FLAGS_2() 0
# endif
# else
# error BOOST_PP_ERROR: depth #2 iteration boundaries or filename not defined
# include <boost/preprocessor/iteration/detail/bounds/lower3.hpp>
# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
# include <boost/preprocessor/iteration/detail/bounds/upper3.hpp>
-# define BOOST_PP_ITERATION_FLAGS_3 0
+# define BOOST_PP_ITERATION_FLAGS_3() 0
# undef BOOST_PP_ITERATION_LIMITS
# elif defined(BOOST_PP_ITERATION_PARAMS_3)
# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_3)
# include <boost/preprocessor/iteration/detail/bounds/upper3.hpp>
# define BOOST_PP_FILENAME_3 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_3)
# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_3) >= 4
-# define BOOST_PP_ITERATION_FLAGS_3 BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_3)
+# define BOOST_PP_ITERATION_FLAGS_3() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_3)
# else
-# define BOOST_PP_ITERATION_FLAGS_3 0
+# define BOOST_PP_ITERATION_FLAGS_3() 0
# endif
# else
# error BOOST_PP_ERROR: depth #3 iteration boundaries or filename not defined
# include <boost/preprocessor/iteration/detail/bounds/lower4.hpp>
# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
# include <boost/preprocessor/iteration/detail/bounds/upper4.hpp>
-# define BOOST_PP_ITERATION_FLAGS_4 0
+# define BOOST_PP_ITERATION_FLAGS_4() 0
# undef BOOST_PP_ITERATION_LIMITS
# elif defined(BOOST_PP_ITERATION_PARAMS_4)
# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_4)
# include <boost/preprocessor/iteration/detail/bounds/upper4.hpp>
# define BOOST_PP_FILENAME_4 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_4)
# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_4) >= 4
-# define BOOST_PP_ITERATION_FLAGS_4 BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_4)
+# define BOOST_PP_ITERATION_FLAGS_4() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_4)
# else
-# define BOOST_PP_ITERATION_FLAGS_4 0
+# define BOOST_PP_ITERATION_FLAGS_4() 0
# endif
# else
# error BOOST_PP_ERROR: depth #4 iteration boundaries or filename not defined
# include <boost/preprocessor/iteration/detail/bounds/lower5.hpp>
# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
# include <boost/preprocessor/iteration/detail/bounds/upper5.hpp>
-# define BOOST_PP_ITERATION_FLAGS_5 0
+# define BOOST_PP_ITERATION_FLAGS_5() 0
# undef BOOST_PP_ITERATION_LIMITS
# elif defined(BOOST_PP_ITERATION_PARAMS_5)
# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_5)
# include <boost/preprocessor/iteration/detail/bounds/upper5.hpp>
# define BOOST_PP_FILENAME_5 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_5)
# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_5) >= 4
-# define BOOST_PP_ITERATION_FLAGS_5 BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_5)
+# define BOOST_PP_ITERATION_FLAGS_5() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_5)
# else
-# define BOOST_PP_ITERATION_FLAGS_5 0
+# define BOOST_PP_ITERATION_FLAGS_5() 0
# endif
# else
# error BOOST_PP_ERROR: depth #5 iteration boundaries or filename not defined
#
# /* BOOST_PP_ITERATION_FLAGS */
#
-# define BOOST_PP_ITERATION_FLAGS() (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, BOOST_PP_ITERATION_DEPTH()))
+# define BOOST_PP_ITERATION_FLAGS() (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, BOOST_PP_ITERATION_DEPTH())())
#
# /* BOOST_PP_FRAME_ITERATION */
#
#
# /* BOOST_PP_FRAME_FLAGS */
#
-# define BOOST_PP_FRAME_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, i))
+# define BOOST_PP_FRAME_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, i)())
#
# /* BOOST_PP_RELATIVE_ITERATION */
#
#
# /* BOOST_PP_RELATIVE_FLAGS */
#
-# define BOOST_PP_RELATIVE_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FLAGS_))
+# define BOOST_PP_RELATIVE_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FLAGS_)())
#
# /* BOOST_PP_ITERATE */
#
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * 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)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BITOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_I(x, y)
+# else
+# define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_OO((x, y))
+# define BOOST_PP_BITOR_OO(par) BOOST_PP_BITOR_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ ## x ## y
+# else
+# define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ID(BOOST_PP_BITOR_ ## x ## y)
+# define BOOST_PP_BITOR_ID(id) id
+# endif
+#
+# define BOOST_PP_BITOR_00 0
+# define BOOST_PP_BITOR_01 1
+# define BOOST_PP_BITOR_10 1
+# define BOOST_PP_BITOR_11 1
+#
+# endif
--- /dev/null
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * 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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+#
+# /* BOOST_PP_NOT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_NOT(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
+# else
+# define BOOST_PP_NOT(x) BOOST_PP_NOT_I(x)
+# define BOOST_PP_NOT_I(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
+# endif
+#
+# endif
--- /dev/null
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * 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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_OR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_OR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitor.hpp>
+#
+# /* BOOST_PP_OR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_OR(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+# define BOOST_PP_OR(p, q) BOOST_PP_OR_I(p, q)
+# define BOOST_PP_OR_I(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * 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)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_PUNCTUATION_PAREN_HPP
+# define BOOST_PREPROCESSOR_PUNCTUATION_PAREN_HPP
+#
+# /* BOOST_PP_LPAREN */
+#
+# define BOOST_PP_LPAREN() (
+#
+# /* BOOST_PP_RPAREN */
+#
+# define BOOST_PP_RPAREN() )
+#
+# endif
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * 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)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP
+# define BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP
+#
+# include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * 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)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ENUM_TRAILING */
+#
+# if 0
+# define BOOST_PP_ENUM_TRAILING(count, macro, data)
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_TRAILING_1(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_TRAILING_M_1, (m, d))
+# define BOOST_PP_ENUM_TRAILING_2(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_TRAILING_M_2, (m, d))
+# define BOOST_PP_ENUM_TRAILING_3(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_TRAILING_M_3, (m, d))
+# else
+# define BOOST_PP_ENUM_TRAILING_1(c, m, d) BOOST_PP_ENUM_TRAILING_1_I(c, m, d)
+# define BOOST_PP_ENUM_TRAILING_2(c, m, d) BOOST_PP_ENUM_TRAILING_2_I(c, m, d)
+# define BOOST_PP_ENUM_TRAILING_3(c, m, d) BOOST_PP_ENUM_TRAILING_3_I(c, m, d)
+# define BOOST_PP_ENUM_TRAILING_1_I(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_TRAILING_M_1, (m, d))
+# define BOOST_PP_ENUM_TRAILING_2_I(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_TRAILING_M_2, (m, d))
+# define BOOST_PP_ENUM_TRAILING_3_I(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_TRAILING_M_3, (m, d))
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING_4(c, m, d) BOOST_PP_ERROR(0x0003)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ENUM_TRAILING_M_1(z, n, md) BOOST_PP_ENUM_TRAILING_M_1_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_TRAILING_M_2(z, n, md) BOOST_PP_ENUM_TRAILING_M_2_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_TRAILING_M_3(z, n, md) BOOST_PP_ENUM_TRAILING_M_3_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_TRAILING_M_1_IM(z, n, im) BOOST_PP_ENUM_TRAILING_M_1_I(z, n, im)
+# define BOOST_PP_ENUM_TRAILING_M_2_IM(z, n, im) BOOST_PP_ENUM_TRAILING_M_2_I(z, n, im)
+# define BOOST_PP_ENUM_TRAILING_M_3_IM(z, n, im) BOOST_PP_ENUM_TRAILING_M_3_I(z, n, im)
+# else
+# define BOOST_PP_ENUM_TRAILING_M_1(z, n, md) BOOST_PP_ENUM_TRAILING_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_TRAILING_M_2(z, n, md) BOOST_PP_ENUM_TRAILING_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_TRAILING_M_3(z, n, md) BOOST_PP_ENUM_TRAILING_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING_M_1_I(z, n, m, d) , m(z, n, d)
+# define BOOST_PP_ENUM_TRAILING_M_2_I(z, n, m, d) , m(z, n, d)
+# define BOOST_PP_ENUM_TRAILING_M_3_I(z, n, m, d) , m(z, n, d)
+#
+# endif
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * 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)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_CAT_HPP
+# define BOOST_PREPROCESSOR_SEQ_CAT_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_SEQ_CAT */
+#
+# define BOOST_PP_SEQ_CAT(seq) \
+ BOOST_PP_IF( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), \
+ BOOST_PP_SEQ_CAT_I, \
+ BOOST_PP_SEQ_HEAD \
+ )(seq) \
+ /**/
+# define BOOST_PP_SEQ_CAT_I(seq) BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
+#
+# define BOOST_PP_SEQ_CAT_O(s, st, elem) BOOST_PP_SEQ_CAT_O_I(st, elem)
+# define BOOST_PP_SEQ_CAT_O_I(a, b) a ## b
+#
+# /* BOOST_PP_SEQ_CAT_S */
+#
+# define BOOST_PP_SEQ_CAT_S(s, seq) \
+ BOOST_PP_IF( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), \
+ BOOST_PP_SEQ_CAT_S_I_A, \
+ BOOST_PP_SEQ_CAT_S_I_B \
+ )(s, seq) \
+ /**/
+# define BOOST_PP_SEQ_CAT_S_I_A(s, seq) BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
+# define BOOST_PP_SEQ_CAT_S_I_B(s, seq) BOOST_PP_SEQ_HEAD(seq)
+#
+# endif
#
# include <boost/preprocessor/cat.hpp>
# include <boost/preprocessor/config/config.hpp>
-# include <boost/preprocessor/tuple/eat.hpp>
#
# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_SEQ_SIZE_I((seq))
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * 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)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_TRANSFORM_HPP
+# define BOOST_PREPROCESSOR_SEQ_TRANSFORM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_SEQ_TRANSFORM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_TRANSFORM(op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# else
+# define BOOST_PP_SEQ_TRANSFORM(op, data, seq) BOOST_PP_SEQ_TRANSFORM_I(op, data, seq)
+# define BOOST_PP_SEQ_TRANSFORM_I(op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_TRANSFORM_O(s, state, elem) BOOST_PP_SEQ_TRANSFORM_O_IM(s, BOOST_PP_TUPLE_REM_3 state, elem)
+# define BOOST_PP_SEQ_TRANSFORM_O_IM(s, im, elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, im, elem)
+# else
+# define BOOST_PP_SEQ_TRANSFORM_O(s, state, elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, BOOST_PP_TUPLE_ELEM(3, 0, state), BOOST_PP_TUPLE_ELEM(3, 1, state), BOOST_PP_TUPLE_ELEM(3, 2, state), elem)
+# endif
+#
+# define BOOST_PP_SEQ_TRANSFORM_O_I(s, op, data, res, elem) (op, data, res (op(s, data, elem)))
+#
+# /* BOOST_PP_SEQ_TRANSFORM_S */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_TRANSFORM_S(s, op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# else
+# define BOOST_PP_SEQ_TRANSFORM_S(s, op, data, seq) BOOST_PP_SEQ_TRANSFORM_S_I(s, op, data, seq)
+# define BOOST_PP_SEQ_TRANSFORM_S_I(s, op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# endif
+#
+# endif
# * http://www.boost.org/LICENSE_1_0.txt)
# */
#
-# /* Revised by Paul Mensonides (2002) */
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011) */
#
# /* See http://www.boost.org for most recent version. */
#
#
# include <boost/preprocessor/config/config.hpp>
#
-# /* BOOST_PP_TUPLE_EAT */
+# /* BOOST_PP_EAT */
#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_I(size)
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_EAT(...)
# else
-# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_OO((size))
-# define BOOST_PP_TUPLE_EAT_OO(par) BOOST_PP_TUPLE_EAT_I ## par
+# define BOOST_PP_EAT(x)
# endif
#
-# define BOOST_PP_TUPLE_EAT_I(size) BOOST_PP_TUPLE_EAT_ ## size
-#
-# define BOOST_PP_TUPLE_EAT_0()
-# define BOOST_PP_TUPLE_EAT_1(a)
-# define BOOST_PP_TUPLE_EAT_2(a, b)
-# define BOOST_PP_TUPLE_EAT_3(a, b, c)
-# define BOOST_PP_TUPLE_EAT_4(a, b, c, d)
-# define BOOST_PP_TUPLE_EAT_5(a, b, c, d, e)
-# define BOOST_PP_TUPLE_EAT_6(a, b, c, d, e, f)
-# define BOOST_PP_TUPLE_EAT_7(a, b, c, d, e, f, g)
-# define BOOST_PP_TUPLE_EAT_8(a, b, c, d, e, f, g, h)
-# define BOOST_PP_TUPLE_EAT_9(a, b, c, d, e, f, g, h, i)
-# define BOOST_PP_TUPLE_EAT_10(a, b, c, d, e, f, g, h, i, j)
-# define BOOST_PP_TUPLE_EAT_11(a, b, c, d, e, f, g, h, i, j, k)
-# define BOOST_PP_TUPLE_EAT_12(a, b, c, d, e, f, g, h, i, j, k, l)
-# define BOOST_PP_TUPLE_EAT_13(a, b, c, d, e, f, g, h, i, j, k, l, m)
-# define BOOST_PP_TUPLE_EAT_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n)
-# define BOOST_PP_TUPLE_EAT_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
-# define BOOST_PP_TUPLE_EAT_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
-# define BOOST_PP_TUPLE_EAT_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)
-# define BOOST_PP_TUPLE_EAT_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)
-# define BOOST_PP_TUPLE_EAT_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)
-# define BOOST_PP_TUPLE_EAT_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)
-# define BOOST_PP_TUPLE_EAT_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u)
-# define BOOST_PP_TUPLE_EAT_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v)
-# define BOOST_PP_TUPLE_EAT_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w)
-# define BOOST_PP_TUPLE_EAT_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x)
-# define BOOST_PP_TUPLE_EAT_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y)
+# /* BOOST_PP_TUPLE_EAT */
+#
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_EAT
+# else
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_I(size)
+# else
+# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_OO((size))
+# define BOOST_PP_TUPLE_EAT_OO(par) BOOST_PP_TUPLE_EAT_I ## par
+# endif
+# define BOOST_PP_TUPLE_EAT_I(size) BOOST_PP_TUPLE_EAT_ ## size
+# endif
+# define BOOST_PP_TUPLE_EAT_1(e0)
+# define BOOST_PP_TUPLE_EAT_2(e0, e1)
+# define BOOST_PP_TUPLE_EAT_3(e0, e1, e2)
+# define BOOST_PP_TUPLE_EAT_4(e0, e1, e2, e3)
+# define BOOST_PP_TUPLE_EAT_5(e0, e1, e2, e3, e4)
+# define BOOST_PP_TUPLE_EAT_6(e0, e1, e2, e3, e4, e5)
+# define BOOST_PP_TUPLE_EAT_7(e0, e1, e2, e3, e4, e5, e6)
+# define BOOST_PP_TUPLE_EAT_8(e0, e1, e2, e3, e4, e5, e6, e7)
+# define BOOST_PP_TUPLE_EAT_9(e0, e1, e2, e3, e4, e5, e6, e7, e8)
+# define BOOST_PP_TUPLE_EAT_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9)
+# define BOOST_PP_TUPLE_EAT_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10)
+# define BOOST_PP_TUPLE_EAT_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11)
+# define BOOST_PP_TUPLE_EAT_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12)
+# define BOOST_PP_TUPLE_EAT_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13)
+# define BOOST_PP_TUPLE_EAT_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14)
+# define BOOST_PP_TUPLE_EAT_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15)
+# define BOOST_PP_TUPLE_EAT_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16)
+# define BOOST_PP_TUPLE_EAT_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17)
+# define BOOST_PP_TUPLE_EAT_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18)
+# define BOOST_PP_TUPLE_EAT_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19)
+# define BOOST_PP_TUPLE_EAT_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20)
+# define BOOST_PP_TUPLE_EAT_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21)
+# define BOOST_PP_TUPLE_EAT_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22)
+# define BOOST_PP_TUPLE_EAT_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23)
+# define BOOST_PP_TUPLE_EAT_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24)
+# define BOOST_PP_TUPLE_EAT_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25)
+# define BOOST_PP_TUPLE_EAT_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26)
+# define BOOST_PP_TUPLE_EAT_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27)
+# define BOOST_PP_TUPLE_EAT_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28)
+# define BOOST_PP_TUPLE_EAT_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29)
+# define BOOST_PP_TUPLE_EAT_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30)
+# define BOOST_PP_TUPLE_EAT_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31)
+# define BOOST_PP_TUPLE_EAT_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32)
+# define BOOST_PP_TUPLE_EAT_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33)
+# define BOOST_PP_TUPLE_EAT_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34)
+# define BOOST_PP_TUPLE_EAT_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35)
+# define BOOST_PP_TUPLE_EAT_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36)
+# define BOOST_PP_TUPLE_EAT_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37)
+# define BOOST_PP_TUPLE_EAT_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38)
+# define BOOST_PP_TUPLE_EAT_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39)
+# define BOOST_PP_TUPLE_EAT_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40)
+# define BOOST_PP_TUPLE_EAT_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41)
+# define BOOST_PP_TUPLE_EAT_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42)
+# define BOOST_PP_TUPLE_EAT_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43)
+# define BOOST_PP_TUPLE_EAT_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44)
+# define BOOST_PP_TUPLE_EAT_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45)
+# define BOOST_PP_TUPLE_EAT_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46)
+# define BOOST_PP_TUPLE_EAT_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47)
+# define BOOST_PP_TUPLE_EAT_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48)
+# define BOOST_PP_TUPLE_EAT_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49)
+# define BOOST_PP_TUPLE_EAT_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50)
+# define BOOST_PP_TUPLE_EAT_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51)
+# define BOOST_PP_TUPLE_EAT_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52)
+# define BOOST_PP_TUPLE_EAT_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53)
+# define BOOST_PP_TUPLE_EAT_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54)
+# define BOOST_PP_TUPLE_EAT_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55)
+# define BOOST_PP_TUPLE_EAT_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56)
+# define BOOST_PP_TUPLE_EAT_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57)
+# define BOOST_PP_TUPLE_EAT_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58)
+# define BOOST_PP_TUPLE_EAT_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59)
+# define BOOST_PP_TUPLE_EAT_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60)
+# define BOOST_PP_TUPLE_EAT_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61)
+# define BOOST_PP_TUPLE_EAT_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62)
+# define BOOST_PP_TUPLE_EAT_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63)
#
# endif
# * http://www.boost.org/LICENSE_1_0.txt)
# */
#
-# /* Revised by Paul Mensonides (2002) */
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
# define BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
#
+# include <boost/preprocessor/cat.hpp>
# include <boost/preprocessor/config/config.hpp>
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_ELEM(size, index, tuple) BOOST_PP_TUPLE_ELEM_I(size, index, tuple)
+# include <boost/preprocessor/facilities/overload.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# include <boost/preprocessor/variadic/elem.hpp>
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__), (__VA_ARGS__))
+# define BOOST_PP_TUPLE_ELEM_I(m, args) BOOST_PP_TUPLE_ELEM_II(m, args)
+# define BOOST_PP_TUPLE_ELEM_II(m, args) BOOST_PP_CAT(m ## args,)
+# else
+# define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__)(__VA_ARGS__)
+# endif
+# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_REM tuple)
+# define BOOST_PP_TUPLE_ELEM_O_3(size, n, tuple) BOOST_PP_TUPLE_ELEM_O_2(n, tuple)
# else
-# define BOOST_PP_TUPLE_ELEM(size, index, tuple) BOOST_PP_TUPLE_ELEM_OO((size, index, tuple))
-# define BOOST_PP_TUPLE_ELEM_OO(par) BOOST_PP_TUPLE_ELEM_I ## par
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_, n), BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_E_, size), tuple))
+# define BOOST_PP_TUPLE_ELEM_I(m, args) BOOST_PP_TUPLE_ELEM_II(m, args)
+# define BOOST_PP_TUPLE_ELEM_II(m, args) BOOST_PP_CAT(m ## args,)
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I_OO((size, n, tuple))
+# define BOOST_PP_TUPLE_ELEM_I_OO(par) BOOST_PP_TUPLE_ELEM_I ## par
+# define BOOST_PP_TUPLE_ELEM_I(size, n, tuple) BOOST_PP_TUPLE_ELEM_II((n, BOOST_PP_TUPLE_ELEM_E_ ## size ## tuple))
+# define BOOST_PP_TUPLE_ELEM_II(par) BOOST_PP_TUPLE_ELEM_III_OO(par)
+# define BOOST_PP_TUPLE_ELEM_III_OO(par) BOOST_PP_TUPLE_ELEM_III ## par
+# define BOOST_PP_TUPLE_ELEM_III(n, etuple) BOOST_PP_TUPLE_ELEM_ ## n ## etuple
+# else
+# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_, n) BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_E_, size) tuple)
+# define BOOST_PP_TUPLE_ELEM_I(x) x
+# endif
+# define BOOST_PP_TUPLE_ELEM_E_1(e0) (e0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_2(e0, e1) (e0, e1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_3(e0, e1, e2) (e0, e1, e2, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_4(e0, e1, e2, e3) (e0, e1, e2, e3, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_5(e0, e1, e2, e3, e4) (e0, e1, e2, e3, e4, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_6(e0, e1, e2, e3, e4, e5) (e0, e1, e2, e3, e4, e5, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_7(e0, e1, e2, e3, e4, e5, e6) (e0, e1, e2, e3, e4, e5, e6, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0, e1, e2, e3, e4, e5, e6, e7, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, e1, e2, e3, e4, e5, e6, e7, e8, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ?)
+# define BOOST_PP_TUPLE_ELEM_E_64
+# define BOOST_PP_TUPLE_ELEM_0(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e0
+# define BOOST_PP_TUPLE_ELEM_1(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e1
+# define BOOST_PP_TUPLE_ELEM_2(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e2
+# define BOOST_PP_TUPLE_ELEM_3(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e3
+# define BOOST_PP_TUPLE_ELEM_4(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e4
+# define BOOST_PP_TUPLE_ELEM_5(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e5
+# define BOOST_PP_TUPLE_ELEM_6(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e6
+# define BOOST_PP_TUPLE_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e7
+# define BOOST_PP_TUPLE_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e8
+# define BOOST_PP_TUPLE_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e9
+# define BOOST_PP_TUPLE_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e10
+# define BOOST_PP_TUPLE_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e11
+# define BOOST_PP_TUPLE_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e12
+# define BOOST_PP_TUPLE_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e13
+# define BOOST_PP_TUPLE_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e14
+# define BOOST_PP_TUPLE_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e15
+# define BOOST_PP_TUPLE_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e16
+# define BOOST_PP_TUPLE_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e17
+# define BOOST_PP_TUPLE_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e18
+# define BOOST_PP_TUPLE_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e19
+# define BOOST_PP_TUPLE_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e20
+# define BOOST_PP_TUPLE_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e21
+# define BOOST_PP_TUPLE_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e22
+# define BOOST_PP_TUPLE_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e23
+# define BOOST_PP_TUPLE_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e24
+# define BOOST_PP_TUPLE_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e25
+# define BOOST_PP_TUPLE_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e26
+# define BOOST_PP_TUPLE_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e27
+# define BOOST_PP_TUPLE_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e28
+# define BOOST_PP_TUPLE_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e29
+# define BOOST_PP_TUPLE_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e30
+# define BOOST_PP_TUPLE_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e31
+# define BOOST_PP_TUPLE_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e32
+# define BOOST_PP_TUPLE_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e33
+# define BOOST_PP_TUPLE_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e34
+# define BOOST_PP_TUPLE_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e35
+# define BOOST_PP_TUPLE_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e36
+# define BOOST_PP_TUPLE_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e37
+# define BOOST_PP_TUPLE_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e38
+# define BOOST_PP_TUPLE_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e39
+# define BOOST_PP_TUPLE_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e40
+# define BOOST_PP_TUPLE_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e41
+# define BOOST_PP_TUPLE_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e42
+# define BOOST_PP_TUPLE_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e43
+# define BOOST_PP_TUPLE_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e44
+# define BOOST_PP_TUPLE_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e45
+# define BOOST_PP_TUPLE_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e46
+# define BOOST_PP_TUPLE_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e47
+# define BOOST_PP_TUPLE_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e48
+# define BOOST_PP_TUPLE_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e49
+# define BOOST_PP_TUPLE_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e50
+# define BOOST_PP_TUPLE_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e51
+# define BOOST_PP_TUPLE_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e52
+# define BOOST_PP_TUPLE_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e53
+# define BOOST_PP_TUPLE_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e54
+# define BOOST_PP_TUPLE_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e55
+# define BOOST_PP_TUPLE_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e56
+# define BOOST_PP_TUPLE_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e57
+# define BOOST_PP_TUPLE_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e58
+# define BOOST_PP_TUPLE_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e59
+# define BOOST_PP_TUPLE_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e60
+# define BOOST_PP_TUPLE_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e61
+# define BOOST_PP_TUPLE_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e62
+# define BOOST_PP_TUPLE_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e63
# endif
#
-# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i ## t
-# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_II(BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i t)
-# define BOOST_PP_TUPLE_ELEM_II(res) res
-# else
-# define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i t
-# endif
+# /* directly used elsewhere in Boost... */
#
# define BOOST_PP_TUPLE_ELEM_1_0(a) a
#
# define BOOST_PP_TUPLE_ELEM_3_1(a, b, c) b
# define BOOST_PP_TUPLE_ELEM_3_2(a, b, c) c
#
-# define BOOST_PP_TUPLE_ELEM_4_0(a, b, c, d) a
-# define BOOST_PP_TUPLE_ELEM_4_1(a, b, c, d) b
-# define BOOST_PP_TUPLE_ELEM_4_2(a, b, c, d) c
-# define BOOST_PP_TUPLE_ELEM_4_3(a, b, c, d) d
-#
-# define BOOST_PP_TUPLE_ELEM_5_0(a, b, c, d, e) a
-# define BOOST_PP_TUPLE_ELEM_5_1(a, b, c, d, e) b
-# define BOOST_PP_TUPLE_ELEM_5_2(a, b, c, d, e) c
-# define BOOST_PP_TUPLE_ELEM_5_3(a, b, c, d, e) d
-# define BOOST_PP_TUPLE_ELEM_5_4(a, b, c, d, e) e
-#
-# define BOOST_PP_TUPLE_ELEM_6_0(a, b, c, d, e, f) a
-# define BOOST_PP_TUPLE_ELEM_6_1(a, b, c, d, e, f) b
-# define BOOST_PP_TUPLE_ELEM_6_2(a, b, c, d, e, f) c
-# define BOOST_PP_TUPLE_ELEM_6_3(a, b, c, d, e, f) d
-# define BOOST_PP_TUPLE_ELEM_6_4(a, b, c, d, e, f) e
-# define BOOST_PP_TUPLE_ELEM_6_5(a, b, c, d, e, f) f
-#
-# define BOOST_PP_TUPLE_ELEM_7_0(a, b, c, d, e, f, g) a
-# define BOOST_PP_TUPLE_ELEM_7_1(a, b, c, d, e, f, g) b
-# define BOOST_PP_TUPLE_ELEM_7_2(a, b, c, d, e, f, g) c
-# define BOOST_PP_TUPLE_ELEM_7_3(a, b, c, d, e, f, g) d
-# define BOOST_PP_TUPLE_ELEM_7_4(a, b, c, d, e, f, g) e
-# define BOOST_PP_TUPLE_ELEM_7_5(a, b, c, d, e, f, g) f
-# define BOOST_PP_TUPLE_ELEM_7_6(a, b, c, d, e, f, g) g
-#
-# define BOOST_PP_TUPLE_ELEM_8_0(a, b, c, d, e, f, g, h) a
-# define BOOST_PP_TUPLE_ELEM_8_1(a, b, c, d, e, f, g, h) b
-# define BOOST_PP_TUPLE_ELEM_8_2(a, b, c, d, e, f, g, h) c
-# define BOOST_PP_TUPLE_ELEM_8_3(a, b, c, d, e, f, g, h) d
-# define BOOST_PP_TUPLE_ELEM_8_4(a, b, c, d, e, f, g, h) e
-# define BOOST_PP_TUPLE_ELEM_8_5(a, b, c, d, e, f, g, h) f
-# define BOOST_PP_TUPLE_ELEM_8_6(a, b, c, d, e, f, g, h) g
-# define BOOST_PP_TUPLE_ELEM_8_7(a, b, c, d, e, f, g, h) h
-#
-# define BOOST_PP_TUPLE_ELEM_9_0(a, b, c, d, e, f, g, h, i) a
-# define BOOST_PP_TUPLE_ELEM_9_1(a, b, c, d, e, f, g, h, i) b
-# define BOOST_PP_TUPLE_ELEM_9_2(a, b, c, d, e, f, g, h, i) c
-# define BOOST_PP_TUPLE_ELEM_9_3(a, b, c, d, e, f, g, h, i) d
-# define BOOST_PP_TUPLE_ELEM_9_4(a, b, c, d, e, f, g, h, i) e
-# define BOOST_PP_TUPLE_ELEM_9_5(a, b, c, d, e, f, g, h, i) f
-# define BOOST_PP_TUPLE_ELEM_9_6(a, b, c, d, e, f, g, h, i) g
-# define BOOST_PP_TUPLE_ELEM_9_7(a, b, c, d, e, f, g, h, i) h
-# define BOOST_PP_TUPLE_ELEM_9_8(a, b, c, d, e, f, g, h, i) i
-#
-# define BOOST_PP_TUPLE_ELEM_10_0(a, b, c, d, e, f, g, h, i, j) a
-# define BOOST_PP_TUPLE_ELEM_10_1(a, b, c, d, e, f, g, h, i, j) b
-# define BOOST_PP_TUPLE_ELEM_10_2(a, b, c, d, e, f, g, h, i, j) c
-# define BOOST_PP_TUPLE_ELEM_10_3(a, b, c, d, e, f, g, h, i, j) d
-# define BOOST_PP_TUPLE_ELEM_10_4(a, b, c, d, e, f, g, h, i, j) e
-# define BOOST_PP_TUPLE_ELEM_10_5(a, b, c, d, e, f, g, h, i, j) f
-# define BOOST_PP_TUPLE_ELEM_10_6(a, b, c, d, e, f, g, h, i, j) g
-# define BOOST_PP_TUPLE_ELEM_10_7(a, b, c, d, e, f, g, h, i, j) h
-# define BOOST_PP_TUPLE_ELEM_10_8(a, b, c, d, e, f, g, h, i, j) i
-# define BOOST_PP_TUPLE_ELEM_10_9(a, b, c, d, e, f, g, h, i, j) j
-#
-# define BOOST_PP_TUPLE_ELEM_11_0(a, b, c, d, e, f, g, h, i, j, k) a
-# define BOOST_PP_TUPLE_ELEM_11_1(a, b, c, d, e, f, g, h, i, j, k) b
-# define BOOST_PP_TUPLE_ELEM_11_2(a, b, c, d, e, f, g, h, i, j, k) c
-# define BOOST_PP_TUPLE_ELEM_11_3(a, b, c, d, e, f, g, h, i, j, k) d
-# define BOOST_PP_TUPLE_ELEM_11_4(a, b, c, d, e, f, g, h, i, j, k) e
-# define BOOST_PP_TUPLE_ELEM_11_5(a, b, c, d, e, f, g, h, i, j, k) f
-# define BOOST_PP_TUPLE_ELEM_11_6(a, b, c, d, e, f, g, h, i, j, k) g
-# define BOOST_PP_TUPLE_ELEM_11_7(a, b, c, d, e, f, g, h, i, j, k) h
-# define BOOST_PP_TUPLE_ELEM_11_8(a, b, c, d, e, f, g, h, i, j, k) i
-# define BOOST_PP_TUPLE_ELEM_11_9(a, b, c, d, e, f, g, h, i, j, k) j
-# define BOOST_PP_TUPLE_ELEM_11_10(a, b, c, d, e, f, g, h, i, j, k) k
-#
-# define BOOST_PP_TUPLE_ELEM_12_0(a, b, c, d, e, f, g, h, i, j, k, l) a
-# define BOOST_PP_TUPLE_ELEM_12_1(a, b, c, d, e, f, g, h, i, j, k, l) b
-# define BOOST_PP_TUPLE_ELEM_12_2(a, b, c, d, e, f, g, h, i, j, k, l) c
-# define BOOST_PP_TUPLE_ELEM_12_3(a, b, c, d, e, f, g, h, i, j, k, l) d
-# define BOOST_PP_TUPLE_ELEM_12_4(a, b, c, d, e, f, g, h, i, j, k, l) e
-# define BOOST_PP_TUPLE_ELEM_12_5(a, b, c, d, e, f, g, h, i, j, k, l) f
-# define BOOST_PP_TUPLE_ELEM_12_6(a, b, c, d, e, f, g, h, i, j, k, l) g
-# define BOOST_PP_TUPLE_ELEM_12_7(a, b, c, d, e, f, g, h, i, j, k, l) h
-# define BOOST_PP_TUPLE_ELEM_12_8(a, b, c, d, e, f, g, h, i, j, k, l) i
-# define BOOST_PP_TUPLE_ELEM_12_9(a, b, c, d, e, f, g, h, i, j, k, l) j
-# define BOOST_PP_TUPLE_ELEM_12_10(a, b, c, d, e, f, g, h, i, j, k, l) k
-# define BOOST_PP_TUPLE_ELEM_12_11(a, b, c, d, e, f, g, h, i, j, k, l) l
-#
-# define BOOST_PP_TUPLE_ELEM_13_0(a, b, c, d, e, f, g, h, i, j, k, l, m) a
-# define BOOST_PP_TUPLE_ELEM_13_1(a, b, c, d, e, f, g, h, i, j, k, l, m) b
-# define BOOST_PP_TUPLE_ELEM_13_2(a, b, c, d, e, f, g, h, i, j, k, l, m) c
-# define BOOST_PP_TUPLE_ELEM_13_3(a, b, c, d, e, f, g, h, i, j, k, l, m) d
-# define BOOST_PP_TUPLE_ELEM_13_4(a, b, c, d, e, f, g, h, i, j, k, l, m) e
-# define BOOST_PP_TUPLE_ELEM_13_5(a, b, c, d, e, f, g, h, i, j, k, l, m) f
-# define BOOST_PP_TUPLE_ELEM_13_6(a, b, c, d, e, f, g, h, i, j, k, l, m) g
-# define BOOST_PP_TUPLE_ELEM_13_7(a, b, c, d, e, f, g, h, i, j, k, l, m) h
-# define BOOST_PP_TUPLE_ELEM_13_8(a, b, c, d, e, f, g, h, i, j, k, l, m) i
-# define BOOST_PP_TUPLE_ELEM_13_9(a, b, c, d, e, f, g, h, i, j, k, l, m) j
-# define BOOST_PP_TUPLE_ELEM_13_10(a, b, c, d, e, f, g, h, i, j, k, l, m) k
-# define BOOST_PP_TUPLE_ELEM_13_11(a, b, c, d, e, f, g, h, i, j, k, l, m) l
-# define BOOST_PP_TUPLE_ELEM_13_12(a, b, c, d, e, f, g, h, i, j, k, l, m) m
-#
-# define BOOST_PP_TUPLE_ELEM_14_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n) a
-# define BOOST_PP_TUPLE_ELEM_14_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n) b
-# define BOOST_PP_TUPLE_ELEM_14_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n) c
-# define BOOST_PP_TUPLE_ELEM_14_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n) d
-# define BOOST_PP_TUPLE_ELEM_14_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n) e
-# define BOOST_PP_TUPLE_ELEM_14_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n) f
-# define BOOST_PP_TUPLE_ELEM_14_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n) g
-# define BOOST_PP_TUPLE_ELEM_14_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n) h
-# define BOOST_PP_TUPLE_ELEM_14_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n) i
-# define BOOST_PP_TUPLE_ELEM_14_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n) j
-# define BOOST_PP_TUPLE_ELEM_14_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n) k
-# define BOOST_PP_TUPLE_ELEM_14_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n) l
-# define BOOST_PP_TUPLE_ELEM_14_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n) m
-# define BOOST_PP_TUPLE_ELEM_14_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n) n
-#
-# define BOOST_PP_TUPLE_ELEM_15_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) a
-# define BOOST_PP_TUPLE_ELEM_15_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) b
-# define BOOST_PP_TUPLE_ELEM_15_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) c
-# define BOOST_PP_TUPLE_ELEM_15_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) d
-# define BOOST_PP_TUPLE_ELEM_15_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) e
-# define BOOST_PP_TUPLE_ELEM_15_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) f
-# define BOOST_PP_TUPLE_ELEM_15_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) g
-# define BOOST_PP_TUPLE_ELEM_15_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) h
-# define BOOST_PP_TUPLE_ELEM_15_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) i
-# define BOOST_PP_TUPLE_ELEM_15_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) j
-# define BOOST_PP_TUPLE_ELEM_15_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) k
-# define BOOST_PP_TUPLE_ELEM_15_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) l
-# define BOOST_PP_TUPLE_ELEM_15_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) m
-# define BOOST_PP_TUPLE_ELEM_15_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) n
-# define BOOST_PP_TUPLE_ELEM_15_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) o
-#
-# define BOOST_PP_TUPLE_ELEM_16_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) a
-# define BOOST_PP_TUPLE_ELEM_16_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) b
-# define BOOST_PP_TUPLE_ELEM_16_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) c
-# define BOOST_PP_TUPLE_ELEM_16_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) d
-# define BOOST_PP_TUPLE_ELEM_16_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) e
-# define BOOST_PP_TUPLE_ELEM_16_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) f
-# define BOOST_PP_TUPLE_ELEM_16_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) g
-# define BOOST_PP_TUPLE_ELEM_16_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) h
-# define BOOST_PP_TUPLE_ELEM_16_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) i
-# define BOOST_PP_TUPLE_ELEM_16_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) j
-# define BOOST_PP_TUPLE_ELEM_16_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) k
-# define BOOST_PP_TUPLE_ELEM_16_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) l
-# define BOOST_PP_TUPLE_ELEM_16_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) m
-# define BOOST_PP_TUPLE_ELEM_16_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) n
-# define BOOST_PP_TUPLE_ELEM_16_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) o
-# define BOOST_PP_TUPLE_ELEM_16_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) p
-#
-# define BOOST_PP_TUPLE_ELEM_17_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) a
-# define BOOST_PP_TUPLE_ELEM_17_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) b
-# define BOOST_PP_TUPLE_ELEM_17_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) c
-# define BOOST_PP_TUPLE_ELEM_17_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) d
-# define BOOST_PP_TUPLE_ELEM_17_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) e
-# define BOOST_PP_TUPLE_ELEM_17_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) f
-# define BOOST_PP_TUPLE_ELEM_17_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) g
-# define BOOST_PP_TUPLE_ELEM_17_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) h
-# define BOOST_PP_TUPLE_ELEM_17_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) i
-# define BOOST_PP_TUPLE_ELEM_17_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) j
-# define BOOST_PP_TUPLE_ELEM_17_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) k
-# define BOOST_PP_TUPLE_ELEM_17_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) l
-# define BOOST_PP_TUPLE_ELEM_17_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) m
-# define BOOST_PP_TUPLE_ELEM_17_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) n
-# define BOOST_PP_TUPLE_ELEM_17_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) o
-# define BOOST_PP_TUPLE_ELEM_17_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) p
-# define BOOST_PP_TUPLE_ELEM_17_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) q
-#
-# define BOOST_PP_TUPLE_ELEM_18_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) a
-# define BOOST_PP_TUPLE_ELEM_18_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) b
-# define BOOST_PP_TUPLE_ELEM_18_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) c
-# define BOOST_PP_TUPLE_ELEM_18_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) d
-# define BOOST_PP_TUPLE_ELEM_18_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) e
-# define BOOST_PP_TUPLE_ELEM_18_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) f
-# define BOOST_PP_TUPLE_ELEM_18_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) g
-# define BOOST_PP_TUPLE_ELEM_18_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) h
-# define BOOST_PP_TUPLE_ELEM_18_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) i
-# define BOOST_PP_TUPLE_ELEM_18_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) j
-# define BOOST_PP_TUPLE_ELEM_18_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) k
-# define BOOST_PP_TUPLE_ELEM_18_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) l
-# define BOOST_PP_TUPLE_ELEM_18_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) m
-# define BOOST_PP_TUPLE_ELEM_18_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) n
-# define BOOST_PP_TUPLE_ELEM_18_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) o
-# define BOOST_PP_TUPLE_ELEM_18_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) p
-# define BOOST_PP_TUPLE_ELEM_18_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) q
-# define BOOST_PP_TUPLE_ELEM_18_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) r
-#
-# define BOOST_PP_TUPLE_ELEM_19_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) a
-# define BOOST_PP_TUPLE_ELEM_19_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) b
-# define BOOST_PP_TUPLE_ELEM_19_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) c
-# define BOOST_PP_TUPLE_ELEM_19_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) d
-# define BOOST_PP_TUPLE_ELEM_19_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) e
-# define BOOST_PP_TUPLE_ELEM_19_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) f
-# define BOOST_PP_TUPLE_ELEM_19_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) g
-# define BOOST_PP_TUPLE_ELEM_19_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) h
-# define BOOST_PP_TUPLE_ELEM_19_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) i
-# define BOOST_PP_TUPLE_ELEM_19_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) j
-# define BOOST_PP_TUPLE_ELEM_19_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) k
-# define BOOST_PP_TUPLE_ELEM_19_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) l
-# define BOOST_PP_TUPLE_ELEM_19_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) m
-# define BOOST_PP_TUPLE_ELEM_19_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) n
-# define BOOST_PP_TUPLE_ELEM_19_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) o
-# define BOOST_PP_TUPLE_ELEM_19_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) p
-# define BOOST_PP_TUPLE_ELEM_19_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) q
-# define BOOST_PP_TUPLE_ELEM_19_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) r
-# define BOOST_PP_TUPLE_ELEM_19_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) s
-#
-# define BOOST_PP_TUPLE_ELEM_20_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) a
-# define BOOST_PP_TUPLE_ELEM_20_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) b
-# define BOOST_PP_TUPLE_ELEM_20_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) c
-# define BOOST_PP_TUPLE_ELEM_20_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) d
-# define BOOST_PP_TUPLE_ELEM_20_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) e
-# define BOOST_PP_TUPLE_ELEM_20_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) f
-# define BOOST_PP_TUPLE_ELEM_20_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) g
-# define BOOST_PP_TUPLE_ELEM_20_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) h
-# define BOOST_PP_TUPLE_ELEM_20_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) i
-# define BOOST_PP_TUPLE_ELEM_20_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) j
-# define BOOST_PP_TUPLE_ELEM_20_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) k
-# define BOOST_PP_TUPLE_ELEM_20_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) l
-# define BOOST_PP_TUPLE_ELEM_20_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) m
-# define BOOST_PP_TUPLE_ELEM_20_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) n
-# define BOOST_PP_TUPLE_ELEM_20_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) o
-# define BOOST_PP_TUPLE_ELEM_20_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) p
-# define BOOST_PP_TUPLE_ELEM_20_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) q
-# define BOOST_PP_TUPLE_ELEM_20_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) r
-# define BOOST_PP_TUPLE_ELEM_20_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) s
-# define BOOST_PP_TUPLE_ELEM_20_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) t
-#
-# define BOOST_PP_TUPLE_ELEM_21_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) a
-# define BOOST_PP_TUPLE_ELEM_21_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) b
-# define BOOST_PP_TUPLE_ELEM_21_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) c
-# define BOOST_PP_TUPLE_ELEM_21_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) d
-# define BOOST_PP_TUPLE_ELEM_21_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) e
-# define BOOST_PP_TUPLE_ELEM_21_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) f
-# define BOOST_PP_TUPLE_ELEM_21_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) g
-# define BOOST_PP_TUPLE_ELEM_21_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) h
-# define BOOST_PP_TUPLE_ELEM_21_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) i
-# define BOOST_PP_TUPLE_ELEM_21_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) j
-# define BOOST_PP_TUPLE_ELEM_21_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) k
-# define BOOST_PP_TUPLE_ELEM_21_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) l
-# define BOOST_PP_TUPLE_ELEM_21_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) m
-# define BOOST_PP_TUPLE_ELEM_21_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) n
-# define BOOST_PP_TUPLE_ELEM_21_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) o
-# define BOOST_PP_TUPLE_ELEM_21_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) p
-# define BOOST_PP_TUPLE_ELEM_21_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) q
-# define BOOST_PP_TUPLE_ELEM_21_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) r
-# define BOOST_PP_TUPLE_ELEM_21_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) s
-# define BOOST_PP_TUPLE_ELEM_21_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) t
-# define BOOST_PP_TUPLE_ELEM_21_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) u
-#
-# define BOOST_PP_TUPLE_ELEM_22_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) a
-# define BOOST_PP_TUPLE_ELEM_22_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) b
-# define BOOST_PP_TUPLE_ELEM_22_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) c
-# define BOOST_PP_TUPLE_ELEM_22_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) d
-# define BOOST_PP_TUPLE_ELEM_22_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) e
-# define BOOST_PP_TUPLE_ELEM_22_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) f
-# define BOOST_PP_TUPLE_ELEM_22_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) g
-# define BOOST_PP_TUPLE_ELEM_22_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) h
-# define BOOST_PP_TUPLE_ELEM_22_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) i
-# define BOOST_PP_TUPLE_ELEM_22_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) j
-# define BOOST_PP_TUPLE_ELEM_22_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) k
-# define BOOST_PP_TUPLE_ELEM_22_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) l
-# define BOOST_PP_TUPLE_ELEM_22_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) m
-# define BOOST_PP_TUPLE_ELEM_22_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) n
-# define BOOST_PP_TUPLE_ELEM_22_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) o
-# define BOOST_PP_TUPLE_ELEM_22_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) p
-# define BOOST_PP_TUPLE_ELEM_22_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) q
-# define BOOST_PP_TUPLE_ELEM_22_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) r
-# define BOOST_PP_TUPLE_ELEM_22_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) s
-# define BOOST_PP_TUPLE_ELEM_22_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) t
-# define BOOST_PP_TUPLE_ELEM_22_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) u
-# define BOOST_PP_TUPLE_ELEM_22_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) v
-#
-# define BOOST_PP_TUPLE_ELEM_23_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) a
-# define BOOST_PP_TUPLE_ELEM_23_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) b
-# define BOOST_PP_TUPLE_ELEM_23_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) c
-# define BOOST_PP_TUPLE_ELEM_23_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) d
-# define BOOST_PP_TUPLE_ELEM_23_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) e
-# define BOOST_PP_TUPLE_ELEM_23_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) f
-# define BOOST_PP_TUPLE_ELEM_23_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) g
-# define BOOST_PP_TUPLE_ELEM_23_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) h
-# define BOOST_PP_TUPLE_ELEM_23_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) i
-# define BOOST_PP_TUPLE_ELEM_23_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) j
-# define BOOST_PP_TUPLE_ELEM_23_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) k
-# define BOOST_PP_TUPLE_ELEM_23_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) l
-# define BOOST_PP_TUPLE_ELEM_23_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) m
-# define BOOST_PP_TUPLE_ELEM_23_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) n
-# define BOOST_PP_TUPLE_ELEM_23_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) o
-# define BOOST_PP_TUPLE_ELEM_23_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) p
-# define BOOST_PP_TUPLE_ELEM_23_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) q
-# define BOOST_PP_TUPLE_ELEM_23_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) r
-# define BOOST_PP_TUPLE_ELEM_23_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) s
-# define BOOST_PP_TUPLE_ELEM_23_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) t
-# define BOOST_PP_TUPLE_ELEM_23_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) u
-# define BOOST_PP_TUPLE_ELEM_23_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) v
-# define BOOST_PP_TUPLE_ELEM_23_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) w
-#
-# define BOOST_PP_TUPLE_ELEM_24_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) a
-# define BOOST_PP_TUPLE_ELEM_24_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) b
-# define BOOST_PP_TUPLE_ELEM_24_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) c
-# define BOOST_PP_TUPLE_ELEM_24_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) d
-# define BOOST_PP_TUPLE_ELEM_24_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) e
-# define BOOST_PP_TUPLE_ELEM_24_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) f
-# define BOOST_PP_TUPLE_ELEM_24_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) g
-# define BOOST_PP_TUPLE_ELEM_24_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) h
-# define BOOST_PP_TUPLE_ELEM_24_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) i
-# define BOOST_PP_TUPLE_ELEM_24_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) j
-# define BOOST_PP_TUPLE_ELEM_24_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) k
-# define BOOST_PP_TUPLE_ELEM_24_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) l
-# define BOOST_PP_TUPLE_ELEM_24_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) m
-# define BOOST_PP_TUPLE_ELEM_24_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) n
-# define BOOST_PP_TUPLE_ELEM_24_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) o
-# define BOOST_PP_TUPLE_ELEM_24_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) p
-# define BOOST_PP_TUPLE_ELEM_24_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) q
-# define BOOST_PP_TUPLE_ELEM_24_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) r
-# define BOOST_PP_TUPLE_ELEM_24_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) s
-# define BOOST_PP_TUPLE_ELEM_24_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) t
-# define BOOST_PP_TUPLE_ELEM_24_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) u
-# define BOOST_PP_TUPLE_ELEM_24_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) v
-# define BOOST_PP_TUPLE_ELEM_24_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) w
-# define BOOST_PP_TUPLE_ELEM_24_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) x
-#
-# define BOOST_PP_TUPLE_ELEM_25_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) a
-# define BOOST_PP_TUPLE_ELEM_25_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) b
-# define BOOST_PP_TUPLE_ELEM_25_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) c
-# define BOOST_PP_TUPLE_ELEM_25_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) d
-# define BOOST_PP_TUPLE_ELEM_25_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) e
-# define BOOST_PP_TUPLE_ELEM_25_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) f
-# define BOOST_PP_TUPLE_ELEM_25_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) g
-# define BOOST_PP_TUPLE_ELEM_25_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) h
-# define BOOST_PP_TUPLE_ELEM_25_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) i
-# define BOOST_PP_TUPLE_ELEM_25_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) j
-# define BOOST_PP_TUPLE_ELEM_25_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) k
-# define BOOST_PP_TUPLE_ELEM_25_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) l
-# define BOOST_PP_TUPLE_ELEM_25_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) m
-# define BOOST_PP_TUPLE_ELEM_25_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) n
-# define BOOST_PP_TUPLE_ELEM_25_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) o
-# define BOOST_PP_TUPLE_ELEM_25_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) p
-# define BOOST_PP_TUPLE_ELEM_25_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) q
-# define BOOST_PP_TUPLE_ELEM_25_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) r
-# define BOOST_PP_TUPLE_ELEM_25_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) s
-# define BOOST_PP_TUPLE_ELEM_25_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) t
-# define BOOST_PP_TUPLE_ELEM_25_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) u
-# define BOOST_PP_TUPLE_ELEM_25_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) v
-# define BOOST_PP_TUPLE_ELEM_25_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) w
-# define BOOST_PP_TUPLE_ELEM_25_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) x
-# define BOOST_PP_TUPLE_ELEM_25_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) y
-#
# endif
# /* **************************************************************************
# * *
-# * (C) Copyright Paul Mensonides 2002.
-# * 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)
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * 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) *
# * *
# ************************************************************************** */
#
# ifndef BOOST_PREPROCESSOR_TUPLE_REM_HPP
# define BOOST_PREPROCESSOR_TUPLE_REM_HPP
#
+# include <boost/preprocessor/cat.hpp>
# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/overload.hpp>
#
-# /* BOOST_PP_TUPLE_REM */
+# /* BOOST_PP_REM */
#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_I(size)
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_REM(...) __VA_ARGS__
# else
-# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_OO((size))
-# define BOOST_PP_TUPLE_REM_OO(par) BOOST_PP_TUPLE_REM_I ## par
+# define BOOST_PP_REM(x) x
# endif
#
-# define BOOST_PP_TUPLE_REM_I(size) BOOST_PP_TUPLE_REM_ ## size
+# /* BOOST_PP_TUPLE_REM */
#
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_TUPLE_REM(size) BOOST_PP_REM
+# else
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_I(size)
+# else
+# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_OO((size))
+# define BOOST_PP_TUPLE_REM_OO(par) BOOST_PP_TUPLE_REM_I ## par
+# endif
+# define BOOST_PP_TUPLE_REM_I(size) BOOST_PP_TUPLE_REM_ ## size
+# endif
# define BOOST_PP_TUPLE_REM_0()
-# define BOOST_PP_TUPLE_REM_1(a) a
-# define BOOST_PP_TUPLE_REM_2(a, b) a, b
-# define BOOST_PP_TUPLE_REM_3(a, b, c) a, b, c
-# define BOOST_PP_TUPLE_REM_4(a, b, c, d) a, b, c, d
-# define BOOST_PP_TUPLE_REM_5(a, b, c, d, e) a, b, c, d, e
-# define BOOST_PP_TUPLE_REM_6(a, b, c, d, e, f) a, b, c, d, e, f
-# define BOOST_PP_TUPLE_REM_7(a, b, c, d, e, f, g) a, b, c, d, e, f, g
-# define BOOST_PP_TUPLE_REM_8(a, b, c, d, e, f, g, h) a, b, c, d, e, f, g, h
-# define BOOST_PP_TUPLE_REM_9(a, b, c, d, e, f, g, h, i) a, b, c, d, e, f, g, h, i
-# define BOOST_PP_TUPLE_REM_10(a, b, c, d, e, f, g, h, i, j) a, b, c, d, e, f, g, h, i, j
-# define BOOST_PP_TUPLE_REM_11(a, b, c, d, e, f, g, h, i, j, k) a, b, c, d, e, f, g, h, i, j, k
-# define BOOST_PP_TUPLE_REM_12(a, b, c, d, e, f, g, h, i, j, k, l) a, b, c, d, e, f, g, h, i, j, k, l
-# define BOOST_PP_TUPLE_REM_13(a, b, c, d, e, f, g, h, i, j, k, l, m) a, b, c, d, e, f, g, h, i, j, k, l, m
-# define BOOST_PP_TUPLE_REM_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) a, b, c, d, e, f, g, h, i, j, k, l, m, n
-# define BOOST_PP_TUPLE_REM_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o
-# define BOOST_PP_TUPLE_REM_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p
-# define BOOST_PP_TUPLE_REM_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q
-# define BOOST_PP_TUPLE_REM_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r
-# define BOOST_PP_TUPLE_REM_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s
-# define BOOST_PP_TUPLE_REM_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t
-# define BOOST_PP_TUPLE_REM_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u
-# define BOOST_PP_TUPLE_REM_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v
-# define BOOST_PP_TUPLE_REM_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w
-# define BOOST_PP_TUPLE_REM_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x
-# define BOOST_PP_TUPLE_REM_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y
+# define BOOST_PP_TUPLE_REM_1(e0) e0
+# define BOOST_PP_TUPLE_REM_2(e0, e1) e0, e1
+# define BOOST_PP_TUPLE_REM_3(e0, e1, e2) e0, e1, e2
+# define BOOST_PP_TUPLE_REM_4(e0, e1, e2, e3) e0, e1, e2, e3
+# define BOOST_PP_TUPLE_REM_5(e0, e1, e2, e3, e4) e0, e1, e2, e3, e4
+# define BOOST_PP_TUPLE_REM_6(e0, e1, e2, e3, e4, e5) e0, e1, e2, e3, e4, e5
+# define BOOST_PP_TUPLE_REM_7(e0, e1, e2, e3, e4, e5, e6) e0, e1, e2, e3, e4, e5, e6
+# define BOOST_PP_TUPLE_REM_8(e0, e1, e2, e3, e4, e5, e6, e7) e0, e1, e2, e3, e4, e5, e6, e7
+# define BOOST_PP_TUPLE_REM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) e0, e1, e2, e3, e4, e5, e6, e7, e8
+# define BOOST_PP_TUPLE_REM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9
+# define BOOST_PP_TUPLE_REM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10
+# define BOOST_PP_TUPLE_REM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11
+# define BOOST_PP_TUPLE_REM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12
+# define BOOST_PP_TUPLE_REM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13
+# define BOOST_PP_TUPLE_REM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14
+# define BOOST_PP_TUPLE_REM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15
+# define BOOST_PP_TUPLE_REM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16
+# define BOOST_PP_TUPLE_REM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17
+# define BOOST_PP_TUPLE_REM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18
+# define BOOST_PP_TUPLE_REM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19
+# define BOOST_PP_TUPLE_REM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20
+# define BOOST_PP_TUPLE_REM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21
+# define BOOST_PP_TUPLE_REM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22
+# define BOOST_PP_TUPLE_REM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23
+# define BOOST_PP_TUPLE_REM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24
+# define BOOST_PP_TUPLE_REM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25
+# define BOOST_PP_TUPLE_REM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26
+# define BOOST_PP_TUPLE_REM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27
+# define BOOST_PP_TUPLE_REM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28
+# define BOOST_PP_TUPLE_REM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29
+# define BOOST_PP_TUPLE_REM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30
+# define BOOST_PP_TUPLE_REM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31
+# define BOOST_PP_TUPLE_REM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32
+# define BOOST_PP_TUPLE_REM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33
+# define BOOST_PP_TUPLE_REM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34
+# define BOOST_PP_TUPLE_REM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35
+# define BOOST_PP_TUPLE_REM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36
+# define BOOST_PP_TUPLE_REM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37
+# define BOOST_PP_TUPLE_REM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38
+# define BOOST_PP_TUPLE_REM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39
+# define BOOST_PP_TUPLE_REM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40
+# define BOOST_PP_TUPLE_REM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41
+# define BOOST_PP_TUPLE_REM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42
+# define BOOST_PP_TUPLE_REM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43
+# define BOOST_PP_TUPLE_REM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44
+# define BOOST_PP_TUPLE_REM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45
+# define BOOST_PP_TUPLE_REM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46
+# define BOOST_PP_TUPLE_REM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47
+# define BOOST_PP_TUPLE_REM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48
+# define BOOST_PP_TUPLE_REM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49
+# define BOOST_PP_TUPLE_REM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50
+# define BOOST_PP_TUPLE_REM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51
+# define BOOST_PP_TUPLE_REM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52
+# define BOOST_PP_TUPLE_REM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53
+# define BOOST_PP_TUPLE_REM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54
+# define BOOST_PP_TUPLE_REM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55
+# define BOOST_PP_TUPLE_REM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56
+# define BOOST_PP_TUPLE_REM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57
+# define BOOST_PP_TUPLE_REM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58
+# define BOOST_PP_TUPLE_REM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59
+# define BOOST_PP_TUPLE_REM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60
+# define BOOST_PP_TUPLE_REM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61
+# define BOOST_PP_TUPLE_REM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62
+# define BOOST_PP_TUPLE_REM_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63
#
# /* BOOST_PP_TUPLE_REM_CTOR */
#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
-# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple)
-# else
-# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_D(size, tuple)
-# define BOOST_PP_TUPLE_REM_CTOR_D(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple)
-# endif
-#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) ext tuple
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__), (__VA_ARGS__))
+# define BOOST_PP_TUPLE_REM_CTOR_I(m, args) BOOST_PP_TUPLE_REM_CTOR_II(m, args)
+# define BOOST_PP_TUPLE_REM_CTOR_II(m, args) BOOST_PP_CAT(m ## args,)
+# else
+# define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__)(__VA_ARGS__)
+# endif
+# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_REM tuple
+# define BOOST_PP_TUPLE_REM_CTOR_O_2(size, tuple) BOOST_PP_TUPLE_REM_CTOR_O_1(tuple)
# else
-# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) BOOST_PP_TUPLE_REM_CTOR_OO((ext, tuple))
-# define BOOST_PP_TUPLE_REM_CTOR_OO(par) BOOST_PP_TUPLE_REM_CTOR_II ## par
-# define BOOST_PP_TUPLE_REM_CTOR_II(ext, tuple) ext ## tuple
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple)
+# else
+# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_D(size, tuple)
+# define BOOST_PP_TUPLE_REM_CTOR_D(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple)
+# endif
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) ext tuple
+# else
+# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) BOOST_PP_TUPLE_REM_CTOR_OO((ext, tuple))
+# define BOOST_PP_TUPLE_REM_CTOR_OO(par) BOOST_PP_TUPLE_REM_CTOR_II ## par
+# define BOOST_PP_TUPLE_REM_CTOR_II(ext, tuple) ext ## tuple
+# endif
# endif
#
# endif
# * http://www.boost.org/LICENSE_1_0.txt)
# */
#
-# /* Revised by Paul Mensonides (2002) */
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
# define BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
#
+# include <boost/preprocessor/cat.hpp>
# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/overload.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
#
# /* BOOST_PP_TUPLE_TO_LIST */
#
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_I(size, tuple)
-# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s t
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_TUPLE_TO_LIST_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__), (__VA_ARGS__))
+# define BOOST_PP_TUPLE_TO_LIST_I(m, args) BOOST_PP_TUPLE_TO_LIST_II(m, args)
+# define BOOST_PP_TUPLE_TO_LIST_II(m, args) BOOST_PP_CAT(m ## args,)
# else
-# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_II(BOOST_PP_TUPLE_TO_LIST_ ## s t)
-# define BOOST_PP_TUPLE_TO_LIST_II(res) res
+# define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__)(__VA_ARGS__)
# endif
+# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_VARIADIC_SIZE tuple) tuple
+# define BOOST_PP_TUPLE_TO_LIST_O_2(size, tuple) BOOST_PP_TUPLE_TO_LIST_O_1(tuple)
# else
-# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_OO((size, tuple))
-# define BOOST_PP_TUPLE_TO_LIST_OO(par) BOOST_PP_TUPLE_TO_LIST_I ## par
-# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s ## t
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_I(size, tuple)
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s t
+# else
+# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_II(BOOST_PP_TUPLE_TO_LIST_ ## s t)
+# define BOOST_PP_TUPLE_TO_LIST_II(res) res
+# endif
+# else
+# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_OO((size, tuple))
+# define BOOST_PP_TUPLE_TO_LIST_OO(par) BOOST_PP_TUPLE_TO_LIST_I ## par
+# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s ## t
+# endif
# endif
#
-# define BOOST_PP_TUPLE_TO_LIST_0() BOOST_PP_NIL
-# define BOOST_PP_TUPLE_TO_LIST_1(a) (a, BOOST_PP_NIL)
-# define BOOST_PP_TUPLE_TO_LIST_2(a, b) (a, (b, BOOST_PP_NIL))
-# define BOOST_PP_TUPLE_TO_LIST_3(a, b, c) (a, (b, (c, BOOST_PP_NIL)))
-# define BOOST_PP_TUPLE_TO_LIST_4(a, b, c, d) (a, (b, (c, (d, BOOST_PP_NIL))))
-# define BOOST_PP_TUPLE_TO_LIST_5(a, b, c, d, e) (a, (b, (c, (d, (e, BOOST_PP_NIL)))))
-# define BOOST_PP_TUPLE_TO_LIST_6(a, b, c, d, e, f) (a, (b, (c, (d, (e, (f, BOOST_PP_NIL))))))
-# define BOOST_PP_TUPLE_TO_LIST_7(a, b, c, d, e, f, g) (a, (b, (c, (d, (e, (f, (g, BOOST_PP_NIL)))))))
-# define BOOST_PP_TUPLE_TO_LIST_8(a, b, c, d, e, f, g, h) (a, (b, (c, (d, (e, (f, (g, (h, BOOST_PP_NIL))))))))
-# define BOOST_PP_TUPLE_TO_LIST_9(a, b, c, d, e, f, g, h, i) (a, (b, (c, (d, (e, (f, (g, (h, (i, BOOST_PP_NIL)))))))))
-# define BOOST_PP_TUPLE_TO_LIST_10(a, b, c, d, e, f, g, h, i, j) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, BOOST_PP_NIL))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_11(a, b, c, d, e, f, g, h, i, j, k) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, BOOST_PP_NIL)))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_12(a, b, c, d, e, f, g, h, i, j, k, l) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, BOOST_PP_NIL))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_13(a, b, c, d, e, f, g, h, i, j, k, l, m) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, BOOST_PP_NIL)))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, BOOST_PP_NIL))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, BOOST_PP_NIL)))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, BOOST_PP_NIL))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, BOOST_PP_NIL)))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, BOOST_PP_NIL))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, BOOST_PP_NIL)))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, BOOST_PP_NIL))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, BOOST_PP_NIL)))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, BOOST_PP_NIL))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, (w, BOOST_PP_NIL)))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, (w, (x, BOOST_PP_NIL))))))))))))))))))))))))
-# define BOOST_PP_TUPLE_TO_LIST_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, (w, (x, (y, BOOST_PP_NIL)))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_1(e0) (e0, BOOST_PP_NIL)
+# define BOOST_PP_TUPLE_TO_LIST_2(e0, e1) (e0, (e1, BOOST_PP_NIL))
+# define BOOST_PP_TUPLE_TO_LIST_3(e0, e1, e2) (e0, (e1, (e2, BOOST_PP_NIL)))
+# define BOOST_PP_TUPLE_TO_LIST_4(e0, e1, e2, e3) (e0, (e1, (e2, (e3, BOOST_PP_NIL))))
+# define BOOST_PP_TUPLE_TO_LIST_5(e0, e1, e2, e3, e4) (e0, (e1, (e2, (e3, (e4, BOOST_PP_NIL)))))
+# define BOOST_PP_TUPLE_TO_LIST_6(e0, e1, e2, e3, e4, e5) (e0, (e1, (e2, (e3, (e4, (e5, BOOST_PP_NIL))))))
+# define BOOST_PP_TUPLE_TO_LIST_7(e0, e1, e2, e3, e4, e5, e6) (e0, (e1, (e2, (e3, (e4, (e5, (e6, BOOST_PP_NIL)))))))
+# define BOOST_PP_TUPLE_TO_LIST_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, BOOST_PP_NIL))))))))
+# define BOOST_PP_TUPLE_TO_LIST_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, BOOST_PP_NIL)))))))))
+# define BOOST_PP_TUPLE_TO_LIST_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, BOOST_PP_NIL))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, BOOST_PP_NIL)))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, BOOST_PP_NIL))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, BOOST_PP_NIL)))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, BOOST_PP_NIL))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, BOOST_PP_NIL)))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, BOOST_PP_NIL))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, BOOST_PP_NIL)))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, BOOST_PP_NIL))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, BOOST_PP_NIL)))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, BOOST_PP_NIL))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, BOOST_PP_NIL)))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, BOOST_PP_NIL))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, BOOST_PP_NIL)))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, BOOST_PP_NIL))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, BOOST_PP_NIL)))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, BOOST_PP_NIL))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, BOOST_PP_NIL)))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, BOOST_PP_NIL))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, BOOST_PP_NIL)))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, BOOST_PP_NIL))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, BOOST_PP_NIL)))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, BOOST_PP_NIL))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, BOOST_PP_NIL)))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, BOOST_PP_NIL))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
#
# endif
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * 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) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_VARIADIC_ELEM_HPP
+# define BOOST_PREPROCESSOR_VARIADIC_ELEM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_VARIADIC_ELEM */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_VARIADIC_ELEM_I(n,__VA_ARGS__)
+# define BOOST_PP_VARIADIC_ELEM_I(n, ...) BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,),)
+# else
+# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,)
+# endif
+# define BOOST_PP_VARIADIC_ELEM_0(e0, ...) e0
+# define BOOST_PP_VARIADIC_ELEM_1(e0, e1, ...) e1
+# define BOOST_PP_VARIADIC_ELEM_2(e0, e1, e2, ...) e2
+# define BOOST_PP_VARIADIC_ELEM_3(e0, e1, e2, e3, ...) e3
+# define BOOST_PP_VARIADIC_ELEM_4(e0, e1, e2, e3, e4, ...) e4
+# define BOOST_PP_VARIADIC_ELEM_5(e0, e1, e2, e3, e4, e5, ...) e5
+# define BOOST_PP_VARIADIC_ELEM_6(e0, e1, e2, e3, e4, e5, e6, ...) e6
+# define BOOST_PP_VARIADIC_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, ...) e7
+# define BOOST_PP_VARIADIC_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, ...) e8
+# define BOOST_PP_VARIADIC_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ...) e9
+# define BOOST_PP_VARIADIC_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ...) e10
+# define BOOST_PP_VARIADIC_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ...) e11
+# define BOOST_PP_VARIADIC_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ...) e12
+# define BOOST_PP_VARIADIC_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ...) e13
+# define BOOST_PP_VARIADIC_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ...) e14
+# define BOOST_PP_VARIADIC_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ...) e15
+# define BOOST_PP_VARIADIC_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ...) e16
+# define BOOST_PP_VARIADIC_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ...) e17
+# define BOOST_PP_VARIADIC_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ...) e18
+# define BOOST_PP_VARIADIC_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ...) e19
+# define BOOST_PP_VARIADIC_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ...) e20
+# define BOOST_PP_VARIADIC_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ...) e21
+# define BOOST_PP_VARIADIC_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ...) e22
+# define BOOST_PP_VARIADIC_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ...) e23
+# define BOOST_PP_VARIADIC_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ...) e24
+# define BOOST_PP_VARIADIC_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ...) e25
+# define BOOST_PP_VARIADIC_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ...) e26
+# define BOOST_PP_VARIADIC_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ...) e27
+# define BOOST_PP_VARIADIC_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ...) e28
+# define BOOST_PP_VARIADIC_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ...) e29
+# define BOOST_PP_VARIADIC_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ...) e30
+# define BOOST_PP_VARIADIC_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ...) e31
+# define BOOST_PP_VARIADIC_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ...) e32
+# define BOOST_PP_VARIADIC_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ...) e33
+# define BOOST_PP_VARIADIC_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ...) e34
+# define BOOST_PP_VARIADIC_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ...) e35
+# define BOOST_PP_VARIADIC_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ...) e36
+# define BOOST_PP_VARIADIC_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ...) e37
+# define BOOST_PP_VARIADIC_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ...) e38
+# define BOOST_PP_VARIADIC_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ...) e39
+# define BOOST_PP_VARIADIC_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ...) e40
+# define BOOST_PP_VARIADIC_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ...) e41
+# define BOOST_PP_VARIADIC_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ...) e42
+# define BOOST_PP_VARIADIC_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ...) e43
+# define BOOST_PP_VARIADIC_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ...) e44
+# define BOOST_PP_VARIADIC_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ...) e45
+# define BOOST_PP_VARIADIC_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ...) e46
+# define BOOST_PP_VARIADIC_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ...) e47
+# define BOOST_PP_VARIADIC_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ...) e48
+# define BOOST_PP_VARIADIC_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ...) e49
+# define BOOST_PP_VARIADIC_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ...) e50
+# define BOOST_PP_VARIADIC_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ...) e51
+# define BOOST_PP_VARIADIC_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ...) e52
+# define BOOST_PP_VARIADIC_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ...) e53
+# define BOOST_PP_VARIADIC_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ...) e54
+# define BOOST_PP_VARIADIC_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ...) e55
+# define BOOST_PP_VARIADIC_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ...) e56
+# define BOOST_PP_VARIADIC_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ...) e57
+# define BOOST_PP_VARIADIC_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ...) e58
+# define BOOST_PP_VARIADIC_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ...) e59
+# define BOOST_PP_VARIADIC_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ...) e60
+# define BOOST_PP_VARIADIC_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ...) e61
+# define BOOST_PP_VARIADIC_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ...) e62
+# define BOOST_PP_VARIADIC_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, ...) e63
+# endif
+#
+# endif
--- /dev/null
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * 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) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_VARIADIC_SIZE_HPP
+# define BOOST_PREPROCESSOR_VARIADIC_SIZE_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_VARIADIC_SIZE */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,),)
+# else
+# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,)
+# endif
+# define BOOST_PP_VARIADIC_SIZE_I(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, size, ...) size
+# endif
+#
+# endif
*
* See http://www.boost.org/libs/random for documentation.
*
- * $Id: random.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: random.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2000-02-18 portability fixes (thanks to Beman Dawes)
#define BOOST_RANDOM_HPP
// generators
-#include <boost/random/linear_congruential.hpp>
#include <boost/random/additive_combine.hpp>
+#include <boost/random/discard_block.hpp>
+#include <boost/random/independent_bits.hpp>
#include <boost/random/inversive_congruential.hpp>
-#include <boost/random/shuffle_output.hpp>
-#include <boost/random/mersenne_twister.hpp>
#include <boost/random/lagged_fibonacci.hpp>
-#include <boost/random/ranlux.hpp>
+#include <boost/random/linear_congruential.hpp>
#include <boost/random/linear_feedback_shift.hpp>
-#include <boost/random/xor_combine.hpp>
-#include <boost/random/discard_block.hpp>
+#include <boost/random/mersenne_twister.hpp>
+#include <boost/random/ranlux.hpp>
+#include <boost/random/shuffle_order.hpp>
+#include <boost/random/shuffle_output.hpp>
#include <boost/random/subtract_with_carry.hpp>
-#include <boost/random/variate_generator.hpp>
-
-namespace boost {
- /**
- * The specialization taus88 was suggested in
- *
- * @blockquote
- * "Maximally Equidistributed Combined Tausworthe Generators",
- * Pierre L'Ecuyer, Mathematics of Computation, Volume 65,
- * Number 213, January 1996, Pages 203-213
- * @endblockquote
- */
- typedef random::xor_combine<random::xor_combine<random::linear_feedback_shift<uint32_t, 32, 31, 13, 12, 0>, 0,
- random::linear_feedback_shift<uint32_t, 32, 29, 2, 4, 0>, 0, 0>, 0,
- random::linear_feedback_shift<uint32_t, 32, 28, 3, 17, 0>, 0, 0> taus88;
-} // namespace boost
+#include <boost/random/taus88.hpp>
+#include <boost/random/xor_combine.hpp>
// misc
+#include <boost/random/generate_canonical.hpp>
+#include <boost/random/seed_seq.hpp>
#include <boost/random/random_number_generator.hpp>
+#include <boost/random/variate_generator.hpp>
// distributions
-#include <boost/random/uniform_smallint.hpp>
-#include <boost/random/uniform_int.hpp>
-#include <boost/random/uniform_01.hpp>
-#include <boost/random/uniform_real.hpp>
-#include <boost/random/triangle_distribution.hpp>
#include <boost/random/bernoulli_distribution.hpp>
+#include <boost/random/binomial_distribution.hpp>
#include <boost/random/cauchy_distribution.hpp>
+#include <boost/random/chi_squared_distribution.hpp>
+#include <boost/random/discrete_distribution.hpp>
#include <boost/random/exponential_distribution.hpp>
+#include <boost/random/extreme_value_distribution.hpp>
+#include <boost/random/fisher_f_distribution.hpp>
+#include <boost/random/gamma_distribution.hpp>
#include <boost/random/geometric_distribution.hpp>
-#include <boost/random/normal_distribution.hpp>
#include <boost/random/lognormal_distribution.hpp>
+#include <boost/random/negative_binomial_distribution.hpp>
+#include <boost/random/normal_distribution.hpp>
+#include <boost/random/piecewise_constant_distribution.hpp>
+#include <boost/random/piecewise_linear_distribution.hpp>
#include <boost/random/poisson_distribution.hpp>
-#include <boost/random/gamma_distribution.hpp>
-#include <boost/random/binomial_distribution.hpp>
+#include <boost/random/student_t_distribution.hpp>
+#include <boost/random/triangle_distribution.hpp>
+#include <boost/random/uniform_01.hpp>
+#include <boost/random/uniform_int.hpp>
+#include <boost/random/uniform_int_distribution.hpp>
#include <boost/random/uniform_on_sphere.hpp>
+#include <boost/random/uniform_real.hpp>
+#include <boost/random/uniform_real_distribution.hpp>
+#include <boost/random/uniform_smallint.hpp>
+#include <boost/random/weibull_distribution.hpp>
#endif // BOOST_RANDOM_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: additive_combine.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: additive_combine.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#ifndef BOOST_RANDOM_ADDITIVE_COMBINE_HPP
#define BOOST_RANDOM_ADDITIVE_COMBINE_HPP
-#include <iostream>
+#include <istream>
+#include <iosfwd>
#include <algorithm> // for std::min and std::max
#include <boost/config.hpp>
#include <boost/cstdint.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/seed.hpp>
#include <boost/random/linear_congruential.hpp>
namespace boost {
namespace random {
/**
- * An instantiation of class template \additive_combine model a
+ * An instantiation of class template @c additive_combine_engine models a
* \pseudo_random_number_generator. It combines two multiplicative
- * \linear_congruential number generators, i.e. those with @c c = 0.
+ * \linear_congruential_engine number generators, i.e. those with @c c = 0.
* It is described in
*
* @blockquote
* @endblockquote
*
* The template parameters MLCG1 and MLCG2 shall denote two different
- * \linear_congruential number generators, each with c = 0. Each invocation
- * returns a random number X(n) := (MLCG1(n) - MLCG2(n)) mod (m1 - 1), where
- * m1 denotes the modulus of MLCG1.
- *
- * The template parameter @c val is the validation value checked by validation.
+ * \linear_congruential_engine number generators, each with c = 0. Each
+ * invocation returns a random number
+ * X(n) := (MLCG1(n) - MLCG2(n)) mod (m1 - 1),
+ * where m1 denotes the modulus of MLCG1.
*/
-template<class MLCG1, class MLCG2,
-#ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
- typename MLCG1::result_type
-#else
- int32_t
-#endif
- val>
-class additive_combine
+template<class MLCG1, class MLCG2>
+class additive_combine_engine
{
public:
- typedef MLCG1 first_base;
- typedef MLCG2 second_base;
- typedef typename MLCG1::result_type result_type;
+ typedef MLCG1 first_base;
+ typedef MLCG2 second_base;
+ typedef typename MLCG1::result_type result_type;
+
+ // Required by old Boost.Random concept
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ /**
+ * Returns the smallest value that the generator can produce
+ */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return 1; }
+ /**
+ * Returns the largest value that the generator can produce
+ */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return MLCG1::modulus-1; }
+
+ /**
+ * Constructs an @c additive_combine_engine using the
+ * default constructors of the two base generators.
+ */
+ additive_combine_engine() : _mlcg1(), _mlcg2() { }
+ /**
+ * Constructs an @c additive_combine_engine, using seed as
+ * the constructor argument for both base generators.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(additive_combine_engine,
+ result_type, seed_arg)
+ {
+ _mlcg1.seed(seed_arg);
+ _mlcg2.seed(seed_arg);
+ }
+ /**
+ * Constructs an @c additive_combine_engine, using seq as
+ * the constructor argument for both base generators.
+ *
+ * @xmlwarning
+ * The semantics of this function are liable to change.
+ * A @c seed_seq is designed to generate all the seeds
+ * in one shot, but this seeds the two base engines
+ * independantly and probably ends up giving the same
+ * sequence to both.
+ * @endxmlwarning
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(additive_combine_engine,
+ SeedSeq, seq)
+ {
+ _mlcg1.seed(seq);
+ _mlcg2.seed(seq);
+ }
+ /**
+ * Constructs an @c additive_combine_engine, using
+ * @c seed1 and @c seed2 as the constructor argument to
+ * the first and second base generators, respectively.
+ */
+ additive_combine_engine(typename MLCG1::result_type seed1,
+ typename MLCG2::result_type seed2)
+ : _mlcg1(seed1), _mlcg2(seed2) { }
+ /**
+ * Contructs an @c additive_combine_engine with
+ * values from the range defined by the input iterators first
+ * and last. first will be modified to point to the element
+ * after the last one used.
+ *
+ * Throws: @c std::invalid_argument if the input range is too small.
+ *
+ * Exception Safety: Basic
+ */
+ template<class It> additive_combine_engine(It& first, It last)
+ : _mlcg1(first, last), _mlcg2(first, last) { }
+
+ /**
+ * Seeds an @c additive_combine_engine using the default
+ * seeds of the two base generators.
+ */
+ void seed()
+ {
+ _mlcg1.seed();
+ _mlcg2.seed();
+ }
+
+ /**
+ * Seeds an @c additive_combine_engine, using @c seed as the
+ * seed for both base generators.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(additive_combine_engine,
+ result_type, seed_arg)
+ {
+ _mlcg1.seed(seed_arg);
+ _mlcg2.seed(seed_arg);
+ }
+
+ /**
+ * Seeds an @c additive_combine_engine, using @c seq to
+ * seed both base generators.
+ *
+ * See the warning on the corresponding constructor.
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(additive_combine_engine,
+ SeedSeq, seq)
+ {
+ _mlcg1.seed(seq);
+ _mlcg2.seed(seq);
+ }
+
+ /**
+ * Seeds an @c additive_combine generator, using @c seed1 and @c seed2 as
+ * the seeds to the first and second base generators, respectively.
+ */
+ void seed(typename MLCG1::result_type seed1,
+ typename MLCG2::result_type seed2)
+ {
+ _mlcg1.seed(seed1);
+ _mlcg2.seed(seed2);
+ }
+
+ /**
+ * Seeds an @c additive_combine_engine with
+ * values from the range defined by the input iterators first
+ * and last. first will be modified to point to the element
+ * after the last one used.
+ *
+ * Throws: @c std::invalid_argument if the input range is too small.
+ *
+ * Exception Safety: Basic
+ */
+ template<class It> void seed(It& first, It last)
+ {
+ _mlcg1.seed(first, last);
+ _mlcg2.seed(first, last);
+ }
+
+ /** Returns the next value of the generator. */
+ result_type operator()() {
+ result_type val1 = _mlcg1();
+ result_type val2 = _mlcg2();
+ if(val2 < val1) return val1 - val2;
+ else return val1 - val2 + MLCG1::modulus - 1;
+ }
+
+ /** Fills a range with random values */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { detail::generate_from_int(*this, first, last); }
+
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z)
+ {
+ _mlcg1.discard(z);
+ _mlcg2.discard(z);
+ }
+
+ /**
+ * Writes the state of an @c additive_combine_engine to a @c
+ * std::ostream. The textual representation of an @c
+ * additive_combine_engine is the textual representation of
+ * the first base generator followed by the textual representation
+ * of the second base generator.
+ */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, additive_combine_engine, r)
+ { os << r._mlcg1 << ' ' << r._mlcg2; return os; }
+
+ /**
+ * Reads the state of an @c additive_combine_engine from a
+ * @c std::istream.
+ */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, additive_combine_engine, r)
+ { is >> r._mlcg1 >> std::ws >> r._mlcg2; return is; }
+
+ /**
+ * Returns: true iff the two @c additive_combine_engines will
+ * produce the same sequence of values.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(additive_combine_engine, x, y)
+ { return x._mlcg1 == y._mlcg1 && x._mlcg2 == y._mlcg2; }
+ /**
+ * Returns: true iff the two @c additive_combine_engines will
+ * produce different sequences of values.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(additive_combine_engine)
+
+private:
+ MLCG1 _mlcg1;
+ MLCG2 _mlcg2;
+};
+
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
- static const bool has_fixed_range = true;
- static const result_type min_value = 1;
- static const result_type max_value = MLCG1::max_value-1;
-#else
- enum { has_fixed_range = false };
-#endif
- /**
- * Returns: The smallest value that the generator can produce
- */
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return 1; }
- /**
- * Returns: The largest value that the generator can produce
- */
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (_mlcg1.max)()-1; }
-
- /**
- * Constructs an \additive_combine generator using the
- * default constructors of the two base generators.
- */
- additive_combine() : _mlcg1(), _mlcg2() { }
- /**
- * Constructs an \additive_combine generator, using aseed as
- * the constructor argument for both base generators.
- */
- explicit additive_combine(result_type aseed)
- : _mlcg1(aseed), _mlcg2(aseed) { }
- /**
- * Constructs an \additive_combine generator, using
- * @c seed1 and @c seed2 as the constructor argument to
- * the first and second base generators, respectively.
- */
- additive_combine(typename MLCG1::result_type seed1,
- typename MLCG2::result_type seed2)
- : _mlcg1(seed1), _mlcg2(seed2) { }
- /**
- * Contructs an \additive_combine generator with
- * values from the range defined by the input iterators first
- * and last. first will be modified to point to the element
- * after the last one used.
- *
- * Throws: @c std::invalid_argument if the input range is too small.
- *
- * Exception Safety: Basic
- */
- template<class It> additive_combine(It& first, It last)
- : _mlcg1(first, last), _mlcg2(first, last) { }
-
- /**
- * Seeds an \additive_combine generator using the default
- * seeds of the two base generators.
- */
- void seed()
- {
- _mlcg1.seed();
- _mlcg2.seed();
- }
-
- /**
- * Seeds an \additive_combine generator, using @c aseed as the
- * seed for both base generators.
- */
- void seed(result_type aseed)
- {
- _mlcg1.seed(aseed);
- _mlcg2.seed(aseed);
- }
-
- /**
- * Seeds an \additive_combine generator, using @c seed1 and @c seed2 as
- * the seeds to the first and second base generators, respectively.
- */
- void seed(typename MLCG1::result_type seed1,
- typename MLCG2::result_type seed2)
- {
- _mlcg1.seed(seed1);
- _mlcg2.seed(seed2);
- }
-
- /**
- * Seeds an \additive_combine generator with
- * values from the range defined by the input iterators first
- * and last. first will be modified to point to the element
- * after the last one used.
- *
- * Throws: @c std::invalid_argument if the input range is too small.
- *
- * Exception Safety: Basic
- */
- template<class It> void seed(It& first, It last)
- {
- _mlcg1.seed(first, last);
- _mlcg2.seed(first, last);
- }
-
- /**
- * Returns: the next value of the generator
- */
- result_type operator()() {
- result_type z = _mlcg1() - _mlcg2();
- if(z < 1)
- z += MLCG1::modulus-1;
- return z;
- }
-
- static bool validation(result_type x) { return val == x; }
-
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- /**
- * Writes the state of an \additive_combine generator to a @c
- * std::ostream. The textual representation of an \additive_combine
- * generator is the textual representation of the first base
- * generator followed by the textual representation of the
- * second base generator.
- */
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const additive_combine& r)
- { os << r._mlcg1 << " " << r._mlcg2; return os; }
-
- /**
- * Reads the state of an \additive_combine generator from a
- * @c std::istream.
- */
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, additive_combine& r)
- { is >> r._mlcg1 >> std::ws >> r._mlcg2; return is; }
+template<class MLCG1, class MLCG2>
+const bool additive_combine_engine<MLCG1, MLCG2>::has_fixed_range;
#endif
- /**
- * Returns: true iff the two \additive_combine generators will
- * produce the same sequence of values.
- */
- friend bool operator==(const additive_combine& x, const additive_combine& y)
- { return x._mlcg1 == y._mlcg1 && x._mlcg2 == y._mlcg2; }
- /**
- * Returns: true iff the two \additive_combine generators will
- * produce different sequences of values.
- */
- friend bool operator!=(const additive_combine& x, const additive_combine& y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(const additive_combine& rhs) const
- { return _mlcg1 == rhs._mlcg1 && _mlcg2 == rhs._mlcg2; }
- bool operator!=(const additive_combine& rhs) const
- { return !(*this == rhs); }
-#endif
+/// \cond show_deprecated
-private:
- MLCG1 _mlcg1;
- MLCG2 _mlcg2;
+/** Provided for backwards compatibility. */
+template<class MLCG1, class MLCG2, typename MLCG1::result_type val = 0>
+class additive_combine : public additive_combine_engine<MLCG1, MLCG2>
+{
+ typedef additive_combine_engine<MLCG1, MLCG2> base_t;
+public:
+ typedef typename base_t::result_type result_type;
+ additive_combine() {}
+ template<class T>
+ additive_combine(T& arg) : base_t(arg) {}
+ template<class T>
+ additive_combine(const T& arg) : base_t(arg) {}
+ template<class It>
+ additive_combine(It& first, It last) : base_t(first, last) {}
};
-} // namespace random
+/// \endcond
/**
* The specialization \ecuyer1988 was suggested in
* Communications of the ACM, Vol. 31, No. 6, June 1988, pp. 742-749, 774
* @endblockquote
*/
-typedef random::additive_combine<
- random::linear_congruential<int32_t, 40014, 0, 2147483563, 0>,
- random::linear_congruential<int32_t, 40692, 0, 2147483399, 0>,
- 2060321752> ecuyer1988;
+typedef additive_combine_engine<
+ linear_congruential_engine<uint32_t, 40014, 0, 2147483563>,
+ linear_congruential_engine<uint32_t, 40692, 0, 2147483399>
+> ecuyer1988;
+
+} // namespace random
+
+using random::ecuyer1988;
} // namespace boost
/* boost random/bernoulli_distribution.hpp header file
*
* Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: bernoulli_distribution.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: bernoulli_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#ifndef BOOST_RANDOM_BERNOULLI_DISTRIBUTION_HPP
#define BOOST_RANDOM_BERNOULLI_DISTRIBUTION_HPP
-#include <cassert>
-#include <iostream>
+#include <iosfwd>
+#include <boost/assert.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
namespace boost {
+namespace random {
/**
* Instantiations of class template \bernoulli_distribution model a
class bernoulli_distribution
{
public:
- // In principle, this could work with both integer and floating-point
- // types. Generating floating-point random numbers in the first
- // place is probably more expensive, so use integer as input.
- typedef int input_type;
- typedef bool result_type;
-
- /**
- * Constructs a \bernoulli_distribution object.
- * p is the parameter of the distribution.
- *
- * Requires: 0 <= p <= 1
- */
- explicit bernoulli_distribution(const RealType& p_arg = RealType(0.5))
- : _p(p_arg)
- {
- assert(_p >= 0);
- assert(_p <= 1);
- }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- /**
- * Returns: The "p" parameter of the distribution.
- */
- RealType p() const { return _p; }
- /**
- * Effects: Subsequent uses of the distribution do not depend
- * on values produced by any engine prior to invoking reset.
- */
- void reset() { }
-
- /**
- * Returns: a random variate distributed according to the
- * \bernoulli_distribution.
- */
- template<class Engine>
- result_type operator()(Engine& eng)
- {
- if(_p == RealType(0))
- return false;
- else
- return RealType(eng() - (eng.min)()) <= _p * RealType((eng.max)()-(eng.min)());
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- /**
- * Writes the parameters of the distribution to a @c std::ostream.
- */
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const bernoulli_distribution& bd)
- {
- os << bd._p;
- return os;
- }
-
- /**
- * Reads the parameters of the distribution from a @c std::istream.
- */
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, bernoulli_distribution& bd)
- {
- is >> std::ws >> bd._p;
- return is;
- }
-#endif
+ // In principle, this could work with both integer and floating-point
+ // types. Generating floating-point random numbers in the first
+ // place is probably more expensive, so use integer as input.
+ typedef int input_type;
+ typedef bool result_type;
+
+ class param_type
+ {
+ public:
+
+ typedef bernoulli_distribution distribution_type;
+
+ /**
+ * Constructs the parameters of the distribution.
+ *
+ * Requires: 0 <= p <= 1
+ */
+ explicit param_type(RealType p_arg = RealType(0.5))
+ : _p(p_arg)
+ {
+ BOOST_ASSERT(_p >= 0);
+ BOOST_ASSERT(_p <= 1);
+ }
+
+ /** Returns the p parameter of the distribution. */
+ RealType p() const { return _p; }
+
+ /** Writes the parameters to a std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ os << parm._p;
+ return os;
+ }
+
+ /** Reads the parameters from a std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ is >> parm._p;
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are equal. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._p == rhs._p; }
+
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ RealType _p;
+ };
+
+ /**
+ * Constructs a \bernoulli_distribution object.
+ * p is the parameter of the distribution.
+ *
+ * Requires: 0 <= p <= 1
+ */
+ explicit bernoulli_distribution(const RealType& p_arg = RealType(0.5))
+ : _p(p_arg)
+ {
+ BOOST_ASSERT(_p >= 0);
+ BOOST_ASSERT(_p <= 1);
+ }
+ /**
+ * Constructs \bernoulli_distribution from its parameters
+ */
+ explicit bernoulli_distribution(const param_type& parm)
+ : _p(parm.p()) {}
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /**
+ * Returns: The "p" parameter of the distribution.
+ */
+ RealType p() const { return _p; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ bool min BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return false; }
+ /** Returns the largest value that the distribution can produce. */
+ bool max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return true; }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_p); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm) { _p = parm.p(); }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /**
+ * Returns: a random variate distributed according to the
+ * \bernoulli_distribution.
+ */
+ template<class Engine>
+ bool operator()(Engine& eng) const
+ {
+ if(_p == RealType(0))
+ return false;
+ else
+ return RealType(eng() - (eng.min)()) <= _p * RealType((eng.max)()-(eng.min)());
+ }
+
+ /**
+ * Returns: a random variate distributed according to the
+ * \bernoulli_distribution with parameters specified by param.
+ */
+ template<class Engine>
+ bool operator()(Engine& eng, const param_type& parm) const
+ {
+ return bernoulli_distribution(parm)(eng);
+ }
+
+ /**
+ * Writes the parameters of the distribution to a @c std::ostream.
+ */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, bernoulli_distribution, bd)
+ {
+ os << bd._p;
+ return os;
+ }
+
+ /**
+ * Reads the parameters of the distribution from a @c std::istream.
+ */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, bernoulli_distribution, bd)
+ {
+ is >> bd._p;
+ return is;
+ }
+
+ /**
+ * Returns true iff the two distributions will produce identical
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(bernoulli_distribution, lhs, rhs)
+ { return lhs._p == rhs._p; }
+
+ /**
+ * Returns true iff the two distributions will produce different
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(bernoulli_distribution)
private:
- RealType _p;
+ RealType _p;
};
+} // namespace random
+
+using random::bernoulli_distribution;
+
} // namespace boost
#endif // BOOST_RANDOM_BERNOULLI_DISTRIBUTION_HPP
/* boost random/binomial_distribution.hpp header file
*
- * Copyright Jens Maurer 2002
+ * Copyright Steven Watanabe 2010
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: binomial_distribution.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
- *
+ * $Id: binomial_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*/
-#ifndef BOOST_RANDOM_BINOMIAL_DISTRIBUTION_HPP
-#define BOOST_RANDOM_BINOMIAL_DISTRIBUTION_HPP
+#ifndef BOOST_RANDOM_BINOMIAL_DISTRIBUTION_HPP_INCLUDED
+#define BOOST_RANDOM_BINOMIAL_DISTRIBUTION_HPP_INCLUDED
#include <boost/config/no_tr1/cmath.hpp>
-#include <cassert>
+#include <cstdlib>
+#include <iosfwd>
+
#include <boost/random/detail/config.hpp>
-#include <boost/random/bernoulli_distribution.hpp>
+#include <boost/random/uniform_01.hpp>
+
+#include <boost/random/detail/disable_warnings.hpp>
namespace boost {
+namespace random {
+
+namespace detail {
+
+template<class RealType>
+struct binomial_table {
+ static const RealType table[10];
+};
+
+template<class RealType>
+const RealType binomial_table<RealType>::table[10] = {
+ 0.08106146679532726,
+ 0.04134069595540929,
+ 0.02767792568499834,
+ 0.02079067210376509,
+ 0.01664469118982119,
+ 0.01387612882307075,
+ 0.01189670994589177,
+ 0.01041126526197209,
+ 0.009255462182712733,
+ 0.008330563433362871
+};
+
+}
/**
* The binomial distribution is an integer valued distribution with
* two parameters, @c t and @c p. The values of the distribution
* are within the range [0,t].
*
- * The probability that the distribution produces a value k is
- * \f${t \choose k}p^k(1-p)^{t-k}\f$.
+ * The distribution function is
+ * \f$\displaystyle P(k) = {t \choose k}p^k(1-p)^{t-k}\f$.
+ *
+ * The algorithm used is the BTRD algorithm described in
+ *
+ * @blockquote
+ * "The generation of binomial random variates", Wolfgang Hormann,
+ * Journal of Statistical Computation and Simulation, Volume 46,
+ * Issue 1 & 2 April 1993 , pages 101 - 110
+ * @endblockquote
*/
template<class IntType = int, class RealType = double>
-class binomial_distribution
-{
+class binomial_distribution {
public:
- typedef typename bernoulli_distribution<RealType>::input_type input_type;
- typedef IntType result_type;
-
- /**
- * Construct an @c binomial_distribution object. @c t and @c p
- * are the parameters of the distribution.
- *
- * Requires: t >=0 && 0 <= p <= 1
- */
- explicit binomial_distribution(IntType t = 1,
- const RealType& p = RealType(0.5))
- : _bernoulli(p), _t(t)
- {
- assert(_t >= 0);
- assert(RealType(0) <= p && p <= RealType(1));
- }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- /** Returns: the @c t parameter of the distribution */
- IntType t() const { return _t; }
- /** Returns: the @c p parameter of the distribution */
- RealType p() const { return _bernoulli.p(); }
- /**
- * Effects: Subsequent uses of the distribution do not depend
- * on values produced by any engine prior to invoking reset.
- */
- void reset() { }
-
- /**
- * Returns: a random variate distributed according to the
- * binomial distribution.
- */
- template<class Engine>
- result_type operator()(Engine& eng)
- {
- // TODO: This is O(_t), but it should be O(log(_t)) for large _t
- result_type n = 0;
- for(IntType i = 0; i < _t; ++i)
- if(_bernoulli(eng))
- ++n;
- return n;
- }
+ typedef IntType result_type;
+ typedef RealType input_type;
+ class param_type {
+ public:
+ typedef binomial_distribution distribution_type;
+ /**
+ * Construct a param_type object. @c t and @c p
+ * are the parameters of the distribution.
+ *
+ * Requires: t >=0 && 0 <= p <= 1
+ */
+ explicit param_type(IntType t_arg = 1, RealType p_arg = RealType (0.5))
+ : _t(t_arg), _p(p_arg)
+ {}
+ /** Returns the @c t parameter of the distribution. */
+ IntType t() const { return _t; }
+ /** Returns the @c p parameter of the distribution. */
+ RealType p() const { return _p; }
#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- /**
- * Writes the parameters of the distribution to a @c std::ostream.
- */
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const binomial_distribution& bd)
- {
- os << bd._bernoulli << " " << bd._t;
- return os;
- }
-
- /**
- * Reads the parameters of the distribution from a @c std::istream.
- */
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, binomial_distribution& bd)
- {
- is >> std::ws >> bd._bernoulli >> std::ws >> bd._t;
- return is;
- }
+ /** Writes the parameters of the distribution to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const param_type& parm)
+ {
+ os << parm._p << " " << parm._t;
+ return os;
+ }
+
+ /** Reads the parameters of the distribution from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is, param_type& parm)
+ {
+ is >> parm._p >> std::ws >> parm._t;
+ return is;
+ }
#endif
+ /** Returns true if the parameters have the same values. */
+ friend bool operator==(const param_type& lhs, const param_type& rhs)
+ {
+ return lhs._t == rhs._t && lhs._p == rhs._p;
+ }
+ /** Returns true if the parameters have different values. */
+ friend bool operator!=(const param_type& lhs, const param_type& rhs)
+ {
+ return !(lhs == rhs);
+ }
+ private:
+ IntType _t;
+ RealType _p;
+ };
+
+ /**
+ * Construct a @c binomial_distribution object. @c t and @c p
+ * are the parameters of the distribution.
+ *
+ * Requires: t >=0 && 0 <= p <= 1
+ */
+ explicit binomial_distribution(IntType t_arg = 1,
+ RealType p_arg = RealType(0.5))
+ : _t(t_arg), _p(p_arg)
+ {
+ init();
+ }
+
+ /**
+ * Construct an @c binomial_distribution object from the
+ * parameters.
+ */
+ explicit binomial_distribution(const param_type& parm)
+ : _t(parm.t()), _p(parm.p())
+ {
+ init();
+ }
+
+ /**
+ * Returns a random variate distributed according to the
+ * binomial distribution.
+ */
+ template<class URNG>
+ IntType operator()(URNG& urng) const
+ {
+ if(use_inversion()) {
+ if(0.5 < _p) {
+ return _t - invert(_t, 1-_p, urng);
+ } else {
+ return invert(_t, _p, urng);
+ }
+ } else if(0.5 < _p) {
+ return _t - generate(urng);
+ } else {
+ return generate(urng);
+ }
+ }
+
+ /**
+ * Returns a random variate distributed according to the
+ * binomial distribution with parameters specified by @c param.
+ */
+ template<class URNG>
+ IntType operator()(URNG& urng, const param_type& parm) const
+ {
+ return binomial_distribution(parm)(urng);
+ }
+
+ /** Returns the @c t parameter of the distribution. */
+ IntType t() const { return _t; }
+ /** Returns the @c p parameter of the distribution. */
+ RealType p() const { return _p; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ IntType min BOOST_PREVENT_MACRO_SUBSTITUTION() const { return 0; }
+ /** Returns the largest value that the distribution can produce. */
+ IntType max BOOST_PREVENT_MACRO_SUBSTITUTION() const { return _t; }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_t, _p); }
+ /** Sets parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _t = parm.t();
+ _p = parm.p();
+ init();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
+ /** Writes the parameters of the distribution to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const binomial_distribution& bd)
+ {
+ os << bd.param();
+ return os;
+ }
+
+ /** Reads the parameters of the distribution from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is, binomial_distribution& bd)
+ {
+ bd.read(is);
+ return is;
+ }
+#endif
+
+ /** Returns true if the two distributions will produce the same
+ sequence of values, given equal generators. */
+ friend bool operator==(const binomial_distribution& lhs,
+ const binomial_distribution& rhs)
+ {
+ return lhs._t == rhs._t && lhs._p == rhs._p;
+ }
+ /** Returns true if the two distributions could produce different
+ sequences of values, given equal generators. */
+ friend bool operator!=(const binomial_distribution& lhs,
+ const binomial_distribution& rhs)
+ {
+ return !(lhs == rhs);
+ }
private:
- bernoulli_distribution<RealType> _bernoulli;
- IntType _t;
+
+ /// @cond show_private
+
+ template<class CharT, class Traits>
+ void read(std::basic_istream<CharT, Traits>& is) {
+ param_type parm;
+ if(is >> parm) {
+ param(parm);
+ }
+ }
+
+ bool use_inversion() const
+ {
+ // BTRD is safe when np >= 10
+ return m < 11;
+ }
+
+ // computes the correction factor for the Stirling approximation
+ // for log(k!)
+ static RealType fc(IntType k)
+ {
+ if(k < 10) return detail::binomial_table<RealType>::table[k];
+ else {
+ RealType ikp1 = RealType(1) / (k + 1);
+ return (RealType(1)/12
+ - (RealType(1)/360
+ - (RealType(1)/1260)*(ikp1*ikp1))*(ikp1*ikp1))*ikp1;
+ }
+ }
+
+ void init()
+ {
+ using std::sqrt;
+ using std::pow;
+
+ RealType p = (0.5 < _p)? (1 - _p) : _p;
+ IntType t = _t;
+
+ m = static_cast<IntType>((t+1)*p);
+
+ if(use_inversion()) {
+ q_n = pow((1 - p), static_cast<RealType>(t));
+ } else {
+ btrd.r = p/(1-p);
+ btrd.nr = (t+1)*btrd.r;
+ btrd.npq = t*p*(1-p);
+ RealType sqrt_npq = sqrt(btrd.npq);
+ btrd.b = 1.15 + 2.53 * sqrt_npq;
+ btrd.a = -0.0873 + 0.0248*btrd.b + 0.01*p;
+ btrd.c = t*p + 0.5;
+ btrd.alpha = (2.83 + 5.1/btrd.b) * sqrt_npq;
+ btrd.v_r = 0.92 - 4.2/btrd.b;
+ btrd.u_rv_r = 0.86*btrd.v_r;
+ }
+ }
+
+ template<class URNG>
+ result_type generate(URNG& urng) const
+ {
+ using std::floor;
+ using std::abs;
+ using std::log;
+
+ while(true) {
+ RealType u;
+ RealType v = uniform_01<RealType>()(urng);
+ if(v <= btrd.u_rv_r) {
+ RealType u = v/btrd.v_r - 0.43;
+ return static_cast<IntType>(floor(
+ (2*btrd.a/(0.5 - abs(u)) + btrd.b)*u + btrd.c));
+ }
+
+ if(v >= btrd.v_r) {
+ u = uniform_01<RealType>()(urng) - 0.5;
+ } else {
+ u = v/btrd.v_r - 0.93;
+ u = ((u < 0)? -0.5 : 0.5) - u;
+ v = uniform_01<RealType>()(urng) * btrd.v_r;
+ }
+
+ RealType us = 0.5 - abs(u);
+ IntType k = static_cast<IntType>(floor((2*btrd.a/us + btrd.b)*u + btrd.c));
+ if(k < 0 || k > _t) continue;
+ v = v*btrd.alpha/(btrd.a/(us*us) + btrd.b);
+ RealType km = abs(k - m);
+ if(km <= 15) {
+ RealType f = 1;
+ if(m < k) {
+ IntType i = m;
+ do {
+ ++i;
+ f = f*(btrd.nr/i - btrd.r);
+ } while(i != k);
+ } else if(m > k) {
+ IntType i = k;
+ do {
+ ++i;
+ v = v*(btrd.nr/i - btrd.r);
+ } while(i != m);
+ }
+ if(v <= f) return k;
+ else continue;
+ } else {
+ // final acceptance/rejection
+ v = log(v);
+ RealType rho =
+ (km/btrd.npq)*(((km/3. + 0.625)*km + 1./6)/btrd.npq + 0.5);
+ RealType t = -km*km/(2*btrd.npq);
+ if(v < t - rho) return k;
+ if(v > t + rho) continue;
+
+ IntType nm = _t - m + 1;
+ RealType h = (m + 0.5)*log((m + 1)/(btrd.r*nm))
+ + fc(m) + fc(_t - m);
+
+ IntType nk = _t - k + 1;
+ if(v <= h + (_t+1)*log(static_cast<RealType>(nm)/nk)
+ + (k + 0.5)*log(nk*btrd.r/(k+1))
+ - fc(k)
+ - fc(_t - k))
+ {
+ return k;
+ } else {
+ continue;
+ }
+ }
+ }
+ }
+
+ template<class URNG>
+ IntType invert(IntType t, RealType p, URNG& urng) const
+ {
+ RealType q = 1 - p;
+ RealType s = p / q;
+ RealType a = (t + 1) * s;
+ RealType r = q_n;
+ RealType u = uniform_01<RealType>()(urng);
+ IntType x = 0;
+ while(u > r) {
+ u = u - r;
+ ++x;
+ r = ((a/x) - s) * r;
+ }
+ return x;
+ }
+
+ // parameters
+ IntType _t;
+ RealType _p;
+
+ // common data
+ IntType m;
+
+ union {
+ // for btrd
+ struct {
+ RealType r;
+ RealType nr;
+ RealType npq;
+ RealType b;
+ RealType a;
+ RealType c;
+ RealType alpha;
+ RealType v_r;
+ RealType u_rv_r;
+ } btrd;
+ // for inversion
+ RealType q_n;
+ };
+
+ /// @endcond
};
-} // namespace boost
+}
+
+// backwards compatibility
+using random::binomial_distribution;
+
+}
-#endif // BOOST_RANDOM_BINOMIAL_DISTRIBUTION_HPP
+#include <boost/random/detail/enable_warnings.hpp>
+
+#endif
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: cauchy_distribution.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: cauchy_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#define BOOST_RANDOM_CAUCHY_DISTRIBUTION_HPP
#include <boost/config/no_tr1/cmath.hpp>
-#include <iostream>
+#include <iosfwd>
+#include <istream>
#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/uniform_01.hpp>
namespace boost {
-
-#if defined(__GNUC__) && (__GNUC__ < 3)
-// Special gcc workaround: gcc 2.95.x ignores using-declarations
-// in template classes (confirmed by gcc author Martin v. Loewis)
- using std::tan;
-#endif
+namespace random {
// Cauchy distribution:
/**
* The cauchy distribution is a continuous distribution with two
- * parameters, sigma and median.
+ * parameters, median and sigma.
*
- * It has \f$p(x) = \frac{\sigma}{\pi(\sigma^2 + (x-m)^2)}\f$
+ * It has \f$\displaystyle p(x) = \frac{\sigma}{\pi(\sigma^2 + (x-m)^2)}\f$
*/
template<class RealType = double>
class cauchy_distribution
{
public:
- typedef RealType input_type;
- typedef RealType result_type;
-
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
-#endif
-
- /**
- * Constructs a \cauchy_distribution with the paramters @c median
- * and @c sigma.
- */
- explicit cauchy_distribution(result_type median_arg = result_type(0),
- result_type sigma_arg = result_type(1))
- : _median(median_arg), _sigma(sigma_arg) { }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- /**
- * Returns: the "median" parameter of the distribution
- */
- result_type median() const { return _median; }
- /**
- * Returns: the "sigma" parameter of the distribution
- */
- result_type sigma() const { return _sigma; }
- /**
- * Effects: Subsequent uses of the distribution do not depend
- * on values produced by any engine prior to invoking reset.
- */
- void reset() { }
-
- /**
- * Returns: A random variate distributed according to the
- * cauchy distribution.
- */
- template<class Engine>
- result_type operator()(Engine& eng)
- {
- // Can we have a boost::mathconst please?
- const result_type pi = result_type(3.14159265358979323846);
-#ifndef BOOST_NO_STDC_NAMESPACE
- using std::tan;
-#endif
- return _median + _sigma * tan(pi*(eng()-result_type(0.5)));
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- /**
- * Writes the parameters of the distribution to a @c std::ostream.
- */
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const cauchy_distribution& cd)
- {
- os << cd._median << " " << cd._sigma;
- return os;
- }
-
- /**
- * Reads the parameters of the distribution from a @c std::istream.
- */
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, cauchy_distribution& cd)
- {
- is >> std::ws >> cd._median >> std::ws >> cd._sigma;
- return is;
- }
-#endif
+ typedef RealType input_type;
+ typedef RealType result_type;
+
+ class param_type
+ {
+ public:
+
+ typedef cauchy_distribution distribution_type;
+
+ /** Constructs the parameters of the cauchy distribution. */
+ explicit param_type(RealType median_arg = RealType(0.0),
+ RealType sigma_arg = RealType(1.0))
+ : _median(median_arg), _sigma(sigma_arg) {}
+
+ // backwards compatibility for Boost.Random
+
+ /** Returns the median of the distribution. */
+ RealType median() const { return _median; }
+ /** Returns the sigma parameter of the distribution. */
+ RealType sigma() const { return _sigma; }
+
+ // The new names in C++0x.
+
+ /** Returns the median of the distribution. */
+ RealType a() const { return _median; }
+ /** Returns the sigma parameter of the distribution. */
+ RealType b() const { return _sigma; }
+
+ /** Writes the parameters to a std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ os << parm._median << " " << parm._sigma;
+ return os;
+ }
+
+ /** Reads the parameters from a std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ is >> parm._median >> std::ws >> parm._sigma;
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are equal. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._median == rhs._median && lhs._sigma == rhs._sigma; }
+
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ RealType _median;
+ RealType _sigma;
+ };
+
+ /**
+ * Constructs a \cauchy_distribution with the paramters @c median
+ * and @c sigma.
+ */
+ explicit cauchy_distribution(RealType median_arg = RealType(0.0),
+ RealType sigma_arg = RealType(1.0))
+ : _median(median_arg), _sigma(sigma_arg) { }
+
+ /**
+ * Constructs a \cauchy_distribution from it's parameters.
+ */
+ explicit cauchy_distribution(const param_type& parm)
+ : _median(parm.median()), _sigma(parm.sigma()) { }
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ // backwards compatibility for Boost.Random
+
+ /** Returns: the "median" parameter of the distribution */
+ RealType median() const { return _median; }
+ /** Returns: the "sigma" parameter of the distribution */
+ RealType sigma() const { return _sigma; }
+
+ // The new names in C++0x
+
+ /** Returns: the "median" parameter of the distribution */
+ RealType a() const { return _median; }
+ /** Returns: the "sigma" parameter of the distribution */
+ RealType b() const { return _sigma; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return -(std::numeric_limits<RealType>::infinity)(); }
+
+ /** Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return (std::numeric_limits<RealType>::infinity)(); }
+
+ param_type param() const { return param_type(_median, _sigma); }
+
+ void param(const param_type& parm)
+ {
+ _median = parm.median();
+ _sigma = parm.sigma();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /**
+ * Returns: A random variate distributed according to the
+ * cauchy distribution.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng)
+ {
+ // Can we have a boost::mathconst please?
+ const result_type pi = result_type(3.14159265358979323846);
+ using std::tan;
+ RealType val = uniform_01<RealType>()(eng)-result_type(0.5);
+ return _median + _sigma * tan(pi*val);
+ }
+
+ /**
+ * Returns: A random variate distributed according to the
+ * cauchy distribution with parameters specified by param.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng, const param_type& parm)
+ {
+ return cauchy_distribution(parm)(eng);
+ }
+
+ /**
+ * Writes the distribution to a @c std::ostream.
+ */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, cauchy_distribution, cd)
+ {
+ os << cd._median << " " << cd._sigma;
+ return os;
+ }
+
+ /**
+ * Reads the distribution from a @c std::istream.
+ */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, cauchy_distribution, cd)
+ {
+ is >> cd._median >> std::ws >> cd._sigma;
+ return is;
+ }
+
+ /**
+ * Returns true if the two distributions will produce
+ * identical sequences of values, given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(cauchy_distribution, lhs, rhs)
+ { return lhs._median == rhs._median && lhs._sigma == rhs._sigma; }
+
+ /**
+ * Returns true if the two distributions may produce
+ * different sequences of values, given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(cauchy_distribution)
private:
- result_type _median, _sigma;
+ RealType _median;
+ RealType _sigma;
};
+} // namespace random
+
+using random::cauchy_distribution;
+
} // namespace boost
#endif // BOOST_RANDOM_CAUCHY_DISTRIBUTION_HPP
--- /dev/null
+/* boost random/chi_squared_distribution.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: chi_squared_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ */
+
+#ifndef BOOST_RANDOM_CHI_SQUARED_DISTRIBUTION_HPP_INCLUDED
+#define BOOST_RANDOM_CHI_SQUARED_DISTRIBUTION_HPP_INCLUDED
+
+#include <iosfwd>
+#include <boost/limits.hpp>
+
+#include <boost/random/detail/config.hpp>
+#include <boost/random/gamma_distribution.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * The chi squared distribution is a real valued distribution with
+ * one parameter, @c n. The distribution produces values > 0.
+ *
+ * The distribution function is
+ * \f$\displaystyle P(x) = \frac{x^{(n/2)-1}e^{-x/2}}{\Gamma(n/2)2^{n/2}}\f$.
+ */
+template<class RealType = double>
+class chi_squared_distribution {
+public:
+ typedef RealType result_type;
+ typedef RealType input_type;
+
+ class param_type {
+ public:
+ typedef chi_squared_distribution distribution_type;
+ /**
+ * Construct a param_type object. @c n
+ * is the parameter of the distribution.
+ *
+ * Requires: t >=0 && 0 <= p <= 1
+ */
+ explicit param_type(RealType n_arg = RealType(1))
+ : _n(n_arg)
+ {}
+ /** Returns the @c n parameter of the distribution. */
+ RealType n() const { return _n; }
+#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
+ /** Writes the parameters of the distribution to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const param_type& parm)
+ {
+ os << parm._n;
+ return os;
+ }
+
+ /** Reads the parameters of the distribution from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is, param_type& parm)
+ {
+ is >> parm._n;
+ return is;
+ }
+#endif
+ /** Returns true if the parameters have the same values. */
+ friend bool operator==(const param_type& lhs, const param_type& rhs)
+ {
+ return lhs._n == rhs._n;
+ }
+ /** Returns true if the parameters have different values. */
+ friend bool operator!=(const param_type& lhs, const param_type& rhs)
+ {
+ return !(lhs == rhs);
+ }
+ private:
+ RealType _n;
+ };
+
+ /**
+ * Construct a @c chi_squared_distribution object. @c n
+ * is the parameter of the distribution.
+ *
+ * Requires: t >=0 && 0 <= p <= 1
+ */
+ explicit chi_squared_distribution(RealType n_arg = RealType(1))
+ : _impl(n_arg / 2)
+ {
+ }
+
+ /**
+ * Construct an @c chi_squared_distribution object from the
+ * parameters.
+ */
+ explicit chi_squared_distribution(const param_type& parm)
+ : _impl(parm.n() / 2)
+ {
+ }
+
+ /**
+ * Returns a random variate distributed according to the
+ * chi squared distribution.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng)
+ {
+ return 2 * _impl(urng);
+ }
+
+ /**
+ * Returns a random variate distributed according to the
+ * chi squared distribution with parameters specified by @c param.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng, const param_type& parm) const
+ {
+ return chi_squared_distribution(parm)(urng);
+ }
+
+ /** Returns the @c n parameter of the distribution. */
+ RealType n() const { return 2 * _impl.alpha(); }
+
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION() const { return 0; }
+ /** Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION() const
+ { return (std::numeric_limits<RealType>::infinity)(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(n()); }
+ /** Sets parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ typedef gamma_distribution<RealType> impl_type;
+ typename impl_type::param_type impl_parm(parm.n() / 2);
+ _impl.param(impl_parm);
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { _impl.reset(); }
+
+#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
+ /** Writes the parameters of the distribution to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const chi_squared_distribution& c2d)
+ {
+ os << c2d.param();
+ return os;
+ }
+
+ /** Reads the parameters of the distribution from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is,
+ chi_squared_distribution& c2d)
+ {
+ c2d.read(is);
+ return is;
+ }
+#endif
+
+ /** Returns true if the two distributions will produce the same
+ sequence of values, given equal generators. */
+ friend bool operator==(const chi_squared_distribution& lhs,
+ const chi_squared_distribution& rhs)
+ {
+ return lhs._impl == rhs._impl;
+ }
+ /** Returns true if the two distributions could produce different
+ sequences of values, given equal generators. */
+ friend bool operator!=(const chi_squared_distribution& lhs,
+ const chi_squared_distribution& rhs)
+ {
+ return !(lhs == rhs);
+ }
+
+private:
+
+ /// @cond show_private
+
+ template<class CharT, class Traits>
+ void read(std::basic_istream<CharT, Traits>& is) {
+ param_type parm;
+ if(is >> parm) {
+ param(parm);
+ }
+ }
+
+ gamma_distribution<RealType> _impl;
+
+ /// @endcond
+};
+
+}
+
+}
+
+#endif
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: const_mod.hpp 58649 2010-01-02 21:23:17Z steven_watanabe $
+ * $Id: const_mod.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#ifndef BOOST_RANDOM_CONST_MOD_HPP
#define BOOST_RANDOM_CONST_MOD_HPP
-#include <cassert>
+#include <boost/assert.hpp>
#include <boost/static_assert.hpp>
-#include <boost/cstdint.hpp>
#include <boost/integer_traits.hpp>
-#include <boost/detail/workaround.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/random/detail/large_arithmetic.hpp>
#include <boost/random/detail/disable_warnings.hpp>
namespace boost {
namespace random {
-/*
- * Some random number generators require modular arithmetic. Put
- * everything we need here.
- * IntType must be an integral type.
- */
-
-namespace detail {
-
- template<bool is_signed>
- struct do_add
- { };
-
- template<>
- struct do_add<true>
- {
- template<class IntType>
- static IntType add(IntType m, IntType x, IntType c)
- {
- if (x < m - c)
- return x + c;
- else
- return x - (m-c);
- }
- };
-
- template<>
- struct do_add<false>
- {
- template<class IntType>
- static IntType add(IntType, IntType, IntType)
- {
- // difficult
- assert(!"const_mod::add with c too large");
- return 0;
- }
- };
-} // namespace detail
-
-#if !(defined(__BORLANDC__) && (__BORLANDC__ == 0x560))
-
template<class IntType, IntType m>
class const_mod
{
public:
+ static IntType apply(IntType x)
+ {
+ if(((unsigned_m() - 1) & unsigned_m()) == 0)
+ return (unsigned_type(x)) & (unsigned_m() - 1);
+ else {
+ IntType supress_warnings = (m == 0);
+ BOOST_ASSERT(supress_warnings == 0);
+ return x % (m + supress_warnings);
+ }
+ }
+
static IntType add(IntType x, IntType c)
{
- if(c == 0)
+ if(((unsigned_m() - 1) & unsigned_m()) == 0)
+ return (unsigned_type(x) + unsigned_type(c)) & (unsigned_m() - 1);
+ else if(c == 0)
return x;
- else if(c <= traits::const_max - m) // i.e. m+c < max
- return add_small(x, c);
+ else if(x < m - c)
+ return x + c;
else
- return detail::do_add<traits::is_signed>::add(m, x, c);
+ return x - (m - c);
}
static IntType mult(IntType a, IntType x)
{
- if(a == 1)
+ if(((unsigned_m() - 1) & unsigned_m()) == 0)
+ return unsigned_type(a) * unsigned_type(x) & (unsigned_m() - 1);
+ else if(a == 0)
+ return 0;
+ else if(a == 1)
return x;
else if(m <= traits::const_max/a) // i.e. a*m <= max
return mult_small(a, x);
else if(traits::is_signed && (m%a < m/a))
return mult_schrage(a, x);
- else {
- // difficult
- assert(!"const_mod::mult with a too large");
- return 0;
- }
+ else
+ return mult_general(a, x);
}
static IntType mult_add(IntType a, IntType x, IntType c)
{
- if(m <= (traits::const_max-c)/a) // i.e. a*m+c <= max
- return (a*x+c) % m;
- else
+ if(((unsigned_m() - 1) & unsigned_m()) == 0)
+ return (unsigned_type(a) * unsigned_type(x) + unsigned_type(c)) & (unsigned_m() - 1);
+ else if(a == 0)
+ return c;
+ else if(m <= (traits::const_max-c)/a) { // i.e. a*m+c <= max
+ IntType supress_warnings = (m == 0);
+ BOOST_ASSERT(supress_warnings == 0);
+ return (a*x+c) % (m + supress_warnings);
+ } else
return add(mult(a, x), c);
}
+ static IntType pow(IntType a, boost::uintmax_t exponent)
+ {
+ IntType result = 1;
+ while(exponent != 0) {
+ if(exponent % 2 == 1) {
+ result = mult(result, a);
+ }
+ a = mult(a, a);
+ exponent /= 2;
+ }
+ return result;
+ }
+
static IntType invert(IntType x)
- { return x == 0 ? 0 : invert_euclidian(x); }
+ { return x == 0 ? 0 : (m == 0? invert_euclidian0(x) : invert_euclidian(x)); }
private:
typedef integer_traits<IntType> traits;
+ typedef typename make_unsigned<IntType>::type unsigned_type;
const_mod(); // don't instantiate
- static IntType add_small(IntType x, IntType c)
- {
- x += c;
- if(x >= m)
- x -= m;
- return x;
- }
-
static IntType mult_small(IntType a, IntType x)
{
- return a*x % m;
+ IntType supress_warnings = (m == 0);
+ BOOST_ASSERT(supress_warnings == 0);
+ return a*x % (m + supress_warnings);
}
static IntType mult_schrage(IntType a, IntType value)
const IntType q = m / a;
const IntType r = m % a;
- assert(r < q); // check that overflow cannot happen
+ BOOST_ASSERT(r < q); // check that overflow cannot happen
- value = a*(value%q) - r*(value/q);
- // An optimizer bug in the SGI MIPSpro 7.3.1.x compiler requires this
- // convoluted formulation of the loop (Synge Todo)
- for(;;) {
- if (value > 0)
- break;
- value += m;
+ return sub(a*(value%q), r*(value/q));
+ }
+
+ static IntType mult_general(IntType a, IntType b)
+ {
+ IntType suppress_warnings = (m == 0);
+ BOOST_ASSERT(suppress_warnings == 0);
+ IntType modulus = m + suppress_warnings;
+ BOOST_ASSERT(modulus == m);
+ if(::boost::uintmax_t(modulus) <=
+ (::std::numeric_limits< ::boost::uintmax_t>::max)() / modulus)
+ {
+ return static_cast<IntType>(boost::uintmax_t(a) * b % modulus);
+ } else {
+ return static_cast<IntType>(detail::mulmod(a, b, modulus));
}
- return value;
+ }
+
+ static IntType sub(IntType a, IntType b)
+ {
+ if(a < b)
+ return m - (b - a);
+ else
+ return a - b;
+ }
+
+ static unsigned_type unsigned_m()
+ {
+ if(m == 0) {
+ return unsigned_type((std::numeric_limits<IntType>::max)()) + 1;
+ } else {
+ return unsigned_type(m);
+ }
}
// invert c in the finite field (mod m) (m must be prime)
static IntType invert_euclidian(IntType c)
{
// we are interested in the gcd factor for c, because this is our inverse
- BOOST_STATIC_ASSERT(m > 0);
-#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
- assert(boost::integer_traits<IntType>::is_signed);
-#elif !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS)
- BOOST_STATIC_ASSERT(boost::integer_traits<IntType>::is_signed);
-#endif
- assert(c > 0);
+ BOOST_ASSERT(c > 0);
IntType l1 = 0;
IntType l2 = 1;
IntType n = c;
IntType p = m;
for(;;) {
IntType q = p / n;
- l1 -= q * l2; // this requires a signed IntType!
+ l1 += q * l2;
p -= q * n;
if(p == 0)
- return (l2 < 1 ? l2 + m : l2);
+ return l2;
IntType q2 = n / p;
- l2 -= q2 * l1;
+ l2 += q2 * l1;
n -= q2 * p;
if(n == 0)
- return (l1 < 1 ? l1 + m : l1);
+ return m - l1;
}
}
-};
-
-// The modulus is exactly the word size: rely on machine overflow handling.
-// Due to a GCC bug, we cannot partially specialize in the presence of
-// template value parameters.
-template<>
-class const_mod<unsigned int, 0>
-{
- typedef unsigned int IntType;
-public:
- static IntType add(IntType x, IntType c) { return x+c; }
- static IntType mult(IntType a, IntType x) { return a*x; }
- static IntType mult_add(IntType a, IntType x, IntType c) { return a*x+c; }
-
- // m is not prime, thus invert is not useful
-private: // don't instantiate
- const_mod();
-};
-
-template<>
-class const_mod<unsigned long, 0>
-{
- typedef unsigned long IntType;
-public:
- static IntType add(IntType x, IntType c) { return x+c; }
- static IntType mult(IntType a, IntType x) { return a*x; }
- static IntType mult_add(IntType a, IntType x, IntType c) { return a*x+c; }
-
- // m is not prime, thus invert is not useful
-private: // don't instantiate
- const_mod();
-};
-
-// the modulus is some power of 2: rely partly on machine overflow handling
-// we only specialize for rand48 at the moment
-#ifndef BOOST_NO_INT64_T
-template<>
-class const_mod<uint64_t, uint64_t(1) << 48>
-{
- typedef uint64_t IntType;
-public:
- static IntType add(IntType x, IntType c) { return c == 0 ? x : mod(x+c); }
- static IntType mult(IntType a, IntType x) { return mod(a*x); }
- static IntType mult_add(IntType a, IntType x, IntType c)
- { return mod(a*x+c); }
- static IntType mod(IntType x) { return x &= ((uint64_t(1) << 48)-1); }
-
- // m is not prime, thus invert is not useful
-private: // don't instantiate
- const_mod();
-};
-#endif /* !BOOST_NO_INT64_T */
-
-#else
-
-//
-// for some reason Borland C++ Builder 6 has problems with
-// the full specialisations of const_mod, define a generic version
-// instead, the compiler will optimise away the const-if statements:
-//
-template<class IntType, IntType m>
-class const_mod
-{
-public:
- static IntType add(IntType x, IntType c)
- {
- if(0 == m)
- {
- return x+c;
- }
- else
- {
- if(c == 0)
- return x;
- else if(c <= traits::const_max - m) // i.e. m+c < max
- return add_small(x, c);
- else
- return detail::do_add<traits::is_signed>::add(m, x, c);
- }
- }
-
- static IntType mult(IntType a, IntType x)
- {
- if(x == 0)
- {
- return a*x;
- }
- else
- {
- if(a == 1)
- return x;
- else if(m <= traits::const_max/a) // i.e. a*m <= max
- return mult_small(a, x);
- else if(traits::is_signed && (m%a < m/a))
- return mult_schrage(a, x);
- else {
- // difficult
- assert(!"const_mod::mult with a too large");
- return 0;
- }
- }
- }
-
- static IntType mult_add(IntType a, IntType x, IntType c)
- {
- if(m == 0)
- {
- return a*x+c;
- }
- else
- {
- if(m <= (traits::const_max-c)/a) // i.e. a*m+c <= max
- return (a*x+c) % m;
- else
- return add(mult(a, x), c);
- }
- }
-
- static IntType invert(IntType x)
- { return x == 0 ? 0 : invert_euclidian(x); }
-
-private:
- typedef integer_traits<IntType> traits;
-
- const_mod(); // don't instantiate
-
- static IntType add_small(IntType x, IntType c)
- {
- x += c;
- if(x >= m)
- x -= m;
- return x;
- }
-
- static IntType mult_small(IntType a, IntType x)
- {
- return a*x % m;
- }
-
- static IntType mult_schrage(IntType a, IntType value)
- {
- const IntType q = m / a;
- const IntType r = m % a;
-
- assert(r < q); // check that overflow cannot happen
-
- value = a*(value%q) - r*(value/q);
- while(value <= 0)
- value += m;
- return value;
- }
-
- // invert c in the finite field (mod m) (m must be prime)
- static IntType invert_euclidian(IntType c)
+ // invert c in the finite field (mod m) (c must be relatively prime to m)
+ static IntType invert_euclidian0(IntType c)
{
// we are interested in the gcd factor for c, because this is our inverse
- BOOST_STATIC_ASSERT(m > 0);
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(boost::integer_traits<IntType>::is_signed);
-#endif
- assert(c > 0);
+ BOOST_ASSERT(c > 0);
+ if(c == 1) return 1;
IntType l1 = 0;
IntType l2 = 1;
IntType n = c;
IntType p = m;
+ IntType max = (std::numeric_limits<IntType>::max)();
+ IntType q = max / n;
+ BOOST_ASSERT(max % n != n - 1 && "c must be relatively prime to m.");
+ l1 += q * l2;
+ p = max - q * n + 1;
for(;;) {
- IntType q = p / n;
- l1 -= q * l2; // this requires a signed IntType!
- p -= q * n;
if(p == 0)
- return (l2 < 1 ? l2 + m : l2);
+ return l2;
IntType q2 = n / p;
- l2 -= q2 * l1;
+ l2 += q2 * l1;
n -= q2 * p;
if(n == 0)
- return (l1 < 1 ? l1 + m : l1);
+ return m - l1;
+ q = p / n;
+ l1 += q * l2;
+ p -= q * n;
}
}
};
-
-#endif
-
} // namespace random
} // namespace boost
--- /dev/null
+/* boost random/detail/generator_bits.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: generator_bits.hpp 72951 2011-07-07 04:57:37Z steven_watanabe $
+ *
+ */
+
+#ifndef BOOST_RANDOM_DETAIL_GENERATOR_BITS_HPP
+#define BOOST_RANDOM_DETAIL_GENERATOR_BITS_HPP
+
+#include <boost/limits.hpp>
+
+namespace boost {
+namespace random {
+namespace detail {
+
+// This is a temporary measure that retains backwards
+// compatibility.
+template<class URNG>
+struct generator_bits {
+ static std::size_t value() {
+ return std::numeric_limits<typename URNG::result_type>::digits;
+ }
+};
+
+} // namespace detail
+} // namespace random
+} // namespace boost
+
+#endif // BOOST_RANDOM_DETAIL_GENERATOR_BITS_HPP
--- /dev/null
+/* boost random/mersenne_twister.hpp header file
+ *
+ * Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2010
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: generator_seed_seq.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ *
+ */
+
+#ifndef BOOST_RANDOM_DETAIL_GENERATOR_SEED_SEQ_HPP_INCLUDED
+#define BOOST_RANDOM_DETAIL_GENERATOR_SEED_SEQ_HPP_INCLUDED
+
+namespace boost {
+namespace random {
+namespace detail {
+
+template<class Generator>
+class generator_seed_seq {
+public:
+ generator_seed_seq(Generator& g) : gen(&g) {}
+ template<class It>
+ void generate(It first, It last) {
+ for(; first != last; ++first) {
+ *first = (*gen)();
+ }
+ }
+private:
+ Generator* gen;
+};
+
+}
+}
+}
+
+#endif
--- /dev/null
+/* boost random/detail/integer_log2.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: integer_log2.hpp 85813 2013-09-21 20:17:00Z jewillco $
+ *
+ */
+
+#ifndef BOOST_RANDOM_DETAIL_INTEGER_LOG2_HPP
+#define BOOST_RANDOM_DETAIL_INTEGER_LOG2_HPP
+
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
+#include <boost/pending/integer_log2.hpp>
+
+namespace boost {
+namespace random {
+namespace detail {
+
+#if !defined(BOOST_NO_CXX11_CONSTEXPR)
+#define BOOST_RANDOM_DETAIL_CONSTEXPR constexpr
+#elif defined(BOOST_MSVC)
+#define BOOST_RANDOM_DETAIL_CONSTEXPR __forceinline
+#elif defined(__GNUC__) && __GNUC__ >= 4
+#define BOOST_RANDOM_DETAIL_CONSTEXPR inline __attribute__((const)) __attribute__((always_inline))
+#else
+#define BOOST_RANDOM_DETAIL_CONSTEXPR inline
+#endif
+
+template<int Shift>
+struct integer_log2_impl
+{
+#if defined(BOOST_NO_CXX11_CONSTEXPR)
+ template<class T>
+ BOOST_RANDOM_DETAIL_CONSTEXPR static int apply(T t, int accum)
+ {
+ int update = ((t >> Shift) != 0) * Shift;
+ return integer_log2_impl<Shift / 2>::apply(t >> update, accum + update);
+ }
+#else
+ template<class T>
+ BOOST_RANDOM_DETAIL_CONSTEXPR static int apply2(T t, int accum, int update)
+ {
+ return integer_log2_impl<Shift / 2>::apply(t >> update, accum + update);
+ }
+
+ template<class T>
+ BOOST_RANDOM_DETAIL_CONSTEXPR static int apply(T t, int accum)
+ {
+ return apply2(t, accum, ((t >> Shift) != 0) * Shift);
+ }
+#endif
+};
+
+template<>
+struct integer_log2_impl<1>
+{
+ template<class T>
+ BOOST_RANDOM_DETAIL_CONSTEXPR static int apply(T t, int accum)
+ {
+ return int(t >> 1) + accum;
+ }
+};
+
+template<class T>
+BOOST_RANDOM_DETAIL_CONSTEXPR int integer_log2(T t)
+{
+ return integer_log2_impl<
+ ::boost::detail::max_pow2_less<
+ ::std::numeric_limits<T>::digits, 4
+ >::value
+ >::apply(t, 0);
+}
+
+} // namespace detail
+} // namespace random
+} // namespace boost
+
+#endif // BOOST_RANDOM_DETAIL_INTEGER_LOG2_HPP
--- /dev/null
+/* boost random/detail/large_arithmetic.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: large_arithmetic.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ */
+
+#ifndef BOOST_RANDOM_DETAIL_LARGE_ARITHMETIC_HPP
+#define BOOST_RANDOM_DETAIL_LARGE_ARITHMETIC_HPP
+
+#include <boost/cstdint.hpp>
+#include <boost/integer.hpp>
+#include <boost/limits.hpp>
+#include <boost/random/detail/integer_log2.hpp>
+
+#include <boost/random/detail/disable_warnings.hpp>
+
+namespace boost {
+namespace random {
+namespace detail {
+
+struct div_t {
+ boost::uintmax_t quotient;
+ boost::uintmax_t remainder;
+};
+
+inline div_t muldivmod(boost::uintmax_t a, boost::uintmax_t b, boost::uintmax_t m)
+{
+ static const int bits =
+ ::std::numeric_limits< ::boost::uintmax_t>::digits / 2;
+ static const ::boost::uintmax_t mask = (::boost::uintmax_t(1) << bits) - 1;
+ typedef ::boost::uint_t<bits>::fast digit_t;
+
+ int shift = std::numeric_limits< ::boost::uintmax_t>::digits - 1
+ - detail::integer_log2(m);
+
+ a <<= shift;
+ m <<= shift;
+
+ digit_t product[4] = { 0, 0, 0, 0 };
+ digit_t a_[2] = { digit_t(a & mask), digit_t((a >> bits) & mask) };
+ digit_t b_[2] = { digit_t(b & mask), digit_t((b >> bits) & mask) };
+ digit_t m_[2] = { digit_t(m & mask), digit_t((m >> bits) & mask) };
+
+ // multiply a * b
+ for(int i = 0; i < 2; ++i) {
+ digit_t carry = 0;
+ for(int j = 0; j < 2; ++j) {
+ ::boost::uint64_t temp = ::boost::uintmax_t(a_[i]) * b_[j] +
+ carry + product[i + j];
+ product[i + j] = digit_t(temp & mask);
+ carry = digit_t(temp >> bits);
+ }
+ if(carry != 0) {
+ product[i + 2] += carry;
+ }
+ }
+
+ digit_t quotient[2];
+
+ if(m == 0) {
+ div_t result = {
+ ((::boost::uintmax_t(product[3]) << bits) | product[2]),
+ ((::boost::uintmax_t(product[1]) << bits) | product[0]) >> shift,
+ };
+ return result;
+ }
+
+ // divide product / m
+ for(int i = 3; i >= 2; --i) {
+ ::boost::uintmax_t temp =
+ ::boost::uintmax_t(product[i]) << bits | product[i - 1];
+
+ digit_t q = digit_t((product[i] == m_[1]) ? mask : temp / m_[1]);
+
+ ::boost::uintmax_t rem =
+ ((temp - ::boost::uintmax_t(q) * m_[1]) << bits) + product[i - 2];
+
+ ::boost::uintmax_t diff = m_[0] * ::boost::uintmax_t(q);
+
+ int error = 0;
+ if(diff > rem) {
+ if(diff - rem > m) {
+ error = 2;
+ } else {
+ error = 1;
+ }
+ }
+ q -= error;
+ rem = rem + error * m - diff;
+
+ quotient[i - 2] = q;
+ product[i] = 0;
+ product[i-1] = (rem >> bits) & mask;
+ product[i-2] = rem & mask;
+ }
+
+ div_t result = {
+ ((::boost::uintmax_t(quotient[1]) << bits) | quotient[0]),
+ ((::boost::uintmax_t(product[1]) << bits) | product[0]) >> shift,
+ };
+ return result;
+}
+
+inline boost::uintmax_t muldiv(boost::uintmax_t a, boost::uintmax_t b, boost::uintmax_t m)
+{ return detail::muldivmod(a, b, m).quotient; }
+
+inline boost::uintmax_t mulmod(boost::uintmax_t a, boost::uintmax_t b, boost::uintmax_t m)
+{ return detail::muldivmod(a, b, m).remainder; }
+
+} // namespace detail
+} // namespace random
+} // namespace boost
+
+#include <boost/random/detail/enable_warnings.hpp>
+
+#endif // BOOST_RANDOM_DETAIL_LARGE_ARITHMETIC_HPP
--- /dev/null
+/* boost random/detail/operators.hpp header file
+ *
+ * Copyright Steven Watanabe 2010-2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: operators.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ */
+
+#ifndef BOOST_RANDOM_DETAIL_OPERATORS_HPP
+#define BOOST_RANDOM_DETAIL_OPERATORS_HPP
+
+#include <boost/random/detail/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1310) \
+ || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x5100))
+
+#define BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, T, t) \
+ template<class CharT, class Traits> \
+ friend std::basic_ostream<CharT,Traits>& \
+ operator<<(std::basic_ostream<CharT,Traits>& os, const T& t) { \
+ t.print(os, t); \
+ return os; \
+ } \
+ template<class CharT, class Traits> \
+ static std::basic_ostream<CharT,Traits>& \
+ print(std::basic_ostream<CharT,Traits>& os, const T& t)
+
+#define BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, T, t) \
+ template<class CharT, class Traits> \
+ friend std::basic_istream<CharT,Traits>& \
+ operator>>(std::basic_istream<CharT,Traits>& is, T& t) { \
+ t.read(is, t); \
+ return is; \
+ } \
+ template<class CharT, class Traits> \
+ static std::basic_istream<CharT,Traits>& \
+ read(std::basic_istream<CharT,Traits>& is, T& t)
+
+#endif
+
+#if defined(__BORLANDC__)
+
+#define BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(T, lhs, rhs) \
+ bool operator==(const T& rhs) const \
+ { return T::is_equal(*this, rhs); } \
+ static bool is_equal(const T& lhs, const T& rhs)
+
+#define BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(T) \
+ bool operator!=(const T& rhs) const \
+ { return !T::is_equal(*this, rhs); }
+
+#endif
+
+#ifndef BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR
+#define BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, T, t) \
+ template<class CharT, class Traits> \
+ friend std::basic_ostream<CharT,Traits>& \
+ operator<<(std::basic_ostream<CharT,Traits>& os, const T& t)
+#endif
+
+#ifndef BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR
+#define BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, T, t) \
+ template<class CharT, class Traits> \
+ friend std::basic_istream<CharT,Traits>& \
+ operator>>(std::basic_istream<CharT,Traits>& is, T& t)
+#endif
+
+#ifndef BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR
+#define BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(T, lhs, rhs) \
+ friend bool operator==(const T& lhs, const T& rhs)
+#endif
+
+#ifndef BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR
+#define BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(T) \
+ friend bool operator!=(const T& lhs, const T& rhs) \
+ { return !(lhs == rhs); }
+#endif
+
+#endif
+++ /dev/null
-/* boost random/detail/uniform_int_float.hpp header file
- *
- * Copyright Jens Maurer 2000-2001
- * 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)
- *
- * See http://www.boost.org for most recent version including documentation.
- *
- * $Id: pass_through_engine.hpp 58649 2010-01-02 21:23:17Z steven_watanabe $
- *
- */
-
-#ifndef BOOST_RANDOM_DETAIL_PASS_THROUGH_ENGINE_HPP
-#define BOOST_RANDOM_DETAIL_PASS_THROUGH_ENGINE_HPP
-
-#include <boost/config.hpp>
-#include <boost/random/detail/ptr_helper.hpp>
-#include <boost/random/detail/disable_warnings.hpp>
-
-namespace boost {
-namespace random {
-namespace detail {
-
-template<class UniformRandomNumberGenerator>
-class pass_through_engine
-{
-private:
- typedef ptr_helper<UniformRandomNumberGenerator> helper_type;
-
-public:
- typedef typename helper_type::value_type base_type;
- typedef typename base_type::result_type result_type;
-
- explicit pass_through_engine(UniformRandomNumberGenerator rng)
- // make argument an rvalue to avoid matching Generator& constructor
- : _rng(static_cast<typename helper_type::rvalue_type>(rng))
- { }
-
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (base().min)(); }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (base().max)(); }
- base_type& base() { return helper_type::ref(_rng); }
- const base_type& base() const { return helper_type::ref(_rng); }
-
- result_type operator()() { return base()(); }
-
-private:
- UniformRandomNumberGenerator _rng;
-};
-
-#ifndef BOOST_NO_STD_LOCALE
-
-template<class UniformRandomNumberGenerator, class CharT, class Traits>
-std::basic_ostream<CharT,Traits>&
-operator<<(
- std::basic_ostream<CharT,Traits>& os
- , const pass_through_engine<UniformRandomNumberGenerator>& ud
- )
-{
- return os << ud.base();
-}
-
-template<class UniformRandomNumberGenerator, class CharT, class Traits>
-std::basic_istream<CharT,Traits>&
-operator>>(
- std::basic_istream<CharT,Traits>& is
- , const pass_through_engine<UniformRandomNumberGenerator>& ud
- )
-{
- return is >> ud.base();
-}
-
-#else // no new streams
-
-template<class UniformRandomNumberGenerator>
-inline std::ostream&
-operator<<(std::ostream& os,
- const pass_through_engine<UniformRandomNumberGenerator>& ud)
-{
- return os << ud.base();
-}
-
-template<class UniformRandomNumberGenerator>
-inline std::istream&
-operator>>(std::istream& is,
- const pass_through_engine<UniformRandomNumberGenerator>& ud)
-{
- return is >> ud.base();
-}
-
-#endif
-
-} // namespace detail
-} // namespace random
-} // namespace boost
-
-#include <boost/random/detail/enable_warnings.hpp>
-
-#endif // BOOST_RANDOM_DETAIL_PASS_THROUGH_ENGINE_HPP
-
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: seed.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: seed.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*/
#ifndef BOOST_RANDOM_DETAIL_SEED_HPP
template<class Generator> \
void seed(Generator& gen, typename ::boost::random::detail::disable_seed<Generator>::type* = 0)
+#define BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(Self, SeedSeq, seq) \
+ template<class SeedSeq> \
+ explicit Self(SeedSeq& seq, typename ::boost::random::detail::disable_constructor<Self, SeedSeq>::type* = 0)
+
+#define BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(Self, SeedSeq, seq) \
+ template<class SeedSeq> \
+ void seed(SeedSeq& seq, typename ::boost::random::detail::disable_seed<SeedSeq>::type* = 0)
+
#define BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(Self, T, x) \
explicit Self(const T& x)
#define BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(Self, T, x) \
void seed(const T& x)
-
}
}
}
template<class Generator>\
void boost_random_seed_impl(Generator& gen, ::boost::mpl::false_)
+#define BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(Self, SeedSeq, seq) \
+ Self(Self& other) { *this = other; } \
+ Self(const Self& other) { *this = other; } \
+ template<class SeedSeq> \
+ explicit Self(SeedSeq& seq) { \
+ boost_random_constructor_impl(seq, ::boost::is_arithmetic<SeedSeq>());\
+ } \
+ template<class SeedSeq> \
+ void boost_random_constructor_impl(SeedSeq& seq, ::boost::mpl::false_)
+
+#define BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(Self, SeedSeq, seq) \
+ template<class SeedSeq> \
+ void seed(SeedSeq& seq) { \
+ boost_random_seed_impl(seq, ::boost::is_arithmetic<SeedSeq>()); \
+ } \
+ template<class SeedSeq> \
+ void boost_random_seed_impl(SeedSeq& seq, ::boost::mpl::false_)
+
#define BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(Self, T, x) \
explicit Self(const T& x) { boost_random_constructor_impl(x, ::boost::mpl::true_()); }\
void boost_random_constructor_impl(const T& x, ::boost::mpl::true_)
--- /dev/null
+/* boost random/detail/seed.hpp header file
+ *
+ * Copyright Steven Watanabe 2009
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: seed_impl.hpp 72951 2011-07-07 04:57:37Z steven_watanabe $
+ */
+
+#ifndef BOOST_RANDOM_DETAIL_SEED_IMPL_HPP
+#define BOOST_RANDOM_DETAIL_SEED_IMPL_HPP
+
+#include <stdexcept>
+#include <boost/cstdint.hpp>
+#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/integer/integer_mask.hpp>
+#include <boost/integer/static_log2.hpp>
+#include <boost/type_traits/is_signed.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/random/detail/const_mod.hpp>
+#include <boost/random/detail/integer_log2.hpp>
+#include <boost/random/detail/signed_unsigned_tools.hpp>
+#include <boost/random/detail/generator_bits.hpp>
+
+#include <boost/random/detail/disable_warnings.hpp>
+
+namespace boost {
+namespace random {
+namespace detail {
+
+// finds the seed type of an engine, given its
+// result_type. If the result_type is integral
+// the seed type is the same. If the result_type
+// is floating point, the seed type is uint32_t
+template<class T>
+struct seed_type
+{
+ typedef typename boost::mpl::if_<boost::is_integral<T>,
+ T,
+ boost::uint32_t
+ >::type type;
+};
+
+template<int N>
+struct const_pow_impl
+{
+ template<class T>
+ static T call(T arg, int n, T result)
+ {
+ return const_pow_impl<N / 2>::call(arg * arg, n / 2,
+ n%2 == 0? result : result * arg);
+ }
+};
+
+template<>
+struct const_pow_impl<0>
+{
+ template<class T>
+ static T call(T, int, T result)
+ {
+ return result;
+ }
+};
+
+// requires N is an upper bound on n
+template<int N, class T>
+inline T const_pow(T arg, int n) { return const_pow_impl<N>::call(arg, n, T(1)); }
+
+template<class T>
+inline T pow2(int n)
+{
+ typedef unsigned int_type;
+ const int max_bits = std::numeric_limits<int_type>::digits;
+ T multiplier = T(int_type(1) << (max_bits - 1)) * 2;
+ return (int_type(1) << (n % max_bits)) *
+ const_pow<std::numeric_limits<T>::digits / max_bits>(multiplier, n / max_bits);
+}
+
+template<class Engine, class Iter>
+void generate_from_real(Engine& eng, Iter begin, Iter end)
+{
+ using std::fmod;
+ typedef typename Engine::result_type RealType;
+ const int Bits = detail::generator_bits<Engine>::value();
+ int remaining_bits = 0;
+ boost::uint_least32_t saved_bits = 0;
+ RealType multiplier = pow2<RealType>( Bits);
+ RealType mult32 = RealType(4294967296.0); // 2^32
+ while(true) {
+ RealType val = eng() * multiplier;
+ int available_bits = Bits;
+ // Make sure the compiler can optimize this out
+ // if it isn't possible.
+ if(Bits < 32 && available_bits < 32 - remaining_bits) {
+ saved_bits |= boost::uint_least32_t(val) << remaining_bits;
+ remaining_bits += Bits;
+ } else {
+ // If Bits < 32, then remaining_bits != 0, since
+ // if remaining_bits == 0, available_bits < 32 - 0,
+ // and we won't get here to begin with.
+ if(Bits < 32 || remaining_bits != 0) {
+ boost::uint_least32_t divisor =
+ (boost::uint_least32_t(1) << (32 - remaining_bits));
+ boost::uint_least32_t extra_bits = boost::uint_least32_t(fmod(val, mult32)) & (divisor - 1);
+ val = val / divisor;
+ *begin++ = saved_bits | (extra_bits << remaining_bits);
+ if(begin == end) return;
+ available_bits -= 32 - remaining_bits;
+ remaining_bits = 0;
+ }
+ // If Bits < 32 we should never enter this loop
+ if(Bits >= 32) {
+ for(; available_bits >= 32; available_bits -= 32) {
+ boost::uint_least32_t word = boost::uint_least32_t(fmod(val, mult32));
+ val /= mult32;
+ *begin++ = word;
+ if(begin == end) return;
+ }
+ }
+ remaining_bits = available_bits;
+ saved_bits = static_cast<boost::uint_least32_t>(val);
+ }
+ }
+}
+
+template<class Engine, class Iter>
+void generate_from_int(Engine& eng, Iter begin, Iter end)
+{
+ typedef typename Engine::result_type IntType;
+ typedef typename boost::make_unsigned<IntType>::type unsigned_type;
+ int remaining_bits = 0;
+ boost::uint_least32_t saved_bits = 0;
+ unsigned_type range = boost::random::detail::subtract<IntType>()((eng.max)(), (eng.min)());
+
+ int bits =
+ (range == (std::numeric_limits<unsigned_type>::max)()) ?
+ std::numeric_limits<unsigned_type>::digits :
+ detail::integer_log2(range + 1);
+
+ {
+ int discarded_bits = detail::integer_log2(bits);
+ unsigned_type excess = (range + 1) >> (bits - discarded_bits);
+ if(excess != 0) {
+ int extra_bits = detail::integer_log2((excess - 1) ^ excess);
+ bits = bits - discarded_bits + extra_bits;
+ }
+ }
+
+ unsigned_type mask = (static_cast<unsigned_type>(2) << (bits - 1)) - 1;
+ unsigned_type limit = ((range + 1) & ~mask) - 1;
+
+ while(true) {
+ unsigned_type val;
+ do {
+ val = boost::random::detail::subtract<IntType>()(eng(), (eng.min)());
+ } while(limit != range && val > limit);
+ val &= mask;
+ int available_bits = bits;
+ if(available_bits == 32) {
+ *begin++ = static_cast<boost::uint_least32_t>(val) & 0xFFFFFFFFu;
+ if(begin == end) return;
+ } else if(available_bits % 32 == 0) {
+ for(int i = 0; i < available_bits / 32; ++i) {
+ boost::uint_least32_t word = boost::uint_least32_t(val) & 0xFFFFFFFFu;
+ int supress_warning = (bits >= 32);
+ BOOST_ASSERT(supress_warning == 1);
+ val >>= (32 * supress_warning);
+ *begin++ = word;
+ if(begin == end) return;
+ }
+ } else if(bits < 32 && available_bits < 32 - remaining_bits) {
+ saved_bits |= boost::uint_least32_t(val) << remaining_bits;
+ remaining_bits += bits;
+ } else {
+ if(bits < 32 || remaining_bits != 0) {
+ boost::uint_least32_t extra_bits = boost::uint_least32_t(val) & ((boost::uint_least32_t(1) << (32 - remaining_bits)) - 1);
+ val >>= 32 - remaining_bits;
+ *begin++ = saved_bits | (extra_bits << remaining_bits);
+ if(begin == end) return;
+ available_bits -= 32 - remaining_bits;
+ remaining_bits = 0;
+ }
+ if(bits >= 32) {
+ for(; available_bits >= 32; available_bits -= 32) {
+ boost::uint_least32_t word = boost::uint_least32_t(val) & 0xFFFFFFFFu;
+ int supress_warning = (bits >= 32);
+ BOOST_ASSERT(supress_warning == 1);
+ val >>= (32 * supress_warning);
+ *begin++ = word;
+ if(begin == end) return;
+ }
+ }
+ remaining_bits = available_bits;
+ saved_bits = static_cast<boost::uint_least32_t>(val);
+ }
+ }
+}
+
+template<class Engine, class Iter>
+void generate_impl(Engine& eng, Iter first, Iter last, boost::mpl::true_)
+{
+ return detail::generate_from_int(eng, first, last);
+}
+
+template<class Engine, class Iter>
+void generate_impl(Engine& eng, Iter first, Iter last, boost::mpl::false_)
+{
+ return detail::generate_from_real(eng, first, last);
+}
+
+template<class Engine, class Iter>
+void generate(Engine& eng, Iter first, Iter last)
+{
+ return detail::generate_impl(eng, first, last, boost::is_integral<typename Engine::result_type>());
+}
+
+
+
+template<class IntType, IntType m, class SeedSeq>
+IntType seed_one_int(SeedSeq& seq)
+{
+ static const int log = ::boost::mpl::if_c<(m == 0),
+ ::boost::mpl::int_<(::std::numeric_limits<IntType>::digits)>,
+ ::boost::static_log2<m> >::type::value;
+ static const int k =
+ (log + ((~(static_cast<IntType>(2) << (log - 1)) & m)? 32 : 31)) / 32;
+ ::boost::uint_least32_t array[log / 32 + 4];
+ seq.generate(&array[0], &array[0] + k + 3);
+ IntType s = 0;
+ for(int j = 0; j < k; ++j) {
+ IntType digit = const_mod<IntType, m>::apply(IntType(array[j+3]));
+ IntType mult = IntType(1) << 32*j;
+ s = const_mod<IntType, m>::mult_add(mult, digit, s);
+ }
+ return s;
+}
+
+template<class IntType, IntType m, class Iter>
+IntType get_one_int(Iter& first, Iter last)
+{
+ static const int log = ::boost::mpl::if_c<(m == 0),
+ ::boost::mpl::int_<(::std::numeric_limits<IntType>::digits)>,
+ ::boost::static_log2<m> >::type::value;
+ static const int k =
+ (log + ((~(static_cast<IntType>(2) << (log - 1)) & m)? 32 : 31)) / 32;
+ IntType s = 0;
+ for(int j = 0; j < k; ++j) {
+ if(first == last) {
+ throw ::std::invalid_argument("Not enough elements in call to seed.");
+ }
+ IntType digit = const_mod<IntType, m>::apply(IntType(*first++));
+ IntType mult = IntType(1) << 32*j;
+ s = const_mod<IntType, m>::mult_add(mult, digit, s);
+ }
+ return s;
+}
+
+// TODO: work in-place whenever possible
+template<int w, std::size_t n, class SeedSeq, class UIntType>
+void seed_array_int_impl(SeedSeq& seq, UIntType (&x)[n])
+{
+ boost::uint_least32_t storage[((w+31)/32) * n];
+ seq.generate(&storage[0], &storage[0] + ((w+31)/32) * n);
+ for(std::size_t j = 0; j < n; j++) {
+ UIntType val = 0;
+ for(std::size_t k = 0; k < (w+31)/32; ++k) {
+ val += static_cast<UIntType>(storage[(w+31)/32*j + k]) << 32*k;
+ }
+ x[j] = val & ::boost::low_bits_mask_t<w>::sig_bits;
+ }
+}
+
+template<int w, std::size_t n, class SeedSeq, class IntType>
+inline void seed_array_int_impl(SeedSeq& seq, IntType (&x)[n], boost::mpl::true_)
+{
+ typedef typename boost::make_unsigned<IntType>::type unsigned_array[n];
+ seed_array_int_impl<w>(seq, reinterpret_cast<unsigned_array&>(x));
+}
+
+template<int w, std::size_t n, class SeedSeq, class IntType>
+inline void seed_array_int_impl(SeedSeq& seq, IntType (&x)[n], boost::mpl::false_)
+{
+ seed_array_int_impl<w>(seq, x);
+}
+
+template<int w, std::size_t n, class SeedSeq, class IntType>
+inline void seed_array_int(SeedSeq& seq, IntType (&x)[n])
+{
+ seed_array_int_impl<w>(seq, x, boost::is_signed<IntType>());
+}
+
+template<int w, std::size_t n, class Iter, class UIntType>
+void fill_array_int_impl(Iter& first, Iter last, UIntType (&x)[n])
+{
+ for(std::size_t j = 0; j < n; j++) {
+ UIntType val = 0;
+ for(std::size_t k = 0; k < (w+31)/32; ++k) {
+ if(first == last) {
+ throw std::invalid_argument("Not enough elements in call to seed.");
+ }
+ val += static_cast<UIntType>(*first++) << 32*k;
+ }
+ x[j] = val & ::boost::low_bits_mask_t<w>::sig_bits;
+ }
+}
+
+template<int w, std::size_t n, class Iter, class IntType>
+inline void fill_array_int_impl(Iter& first, Iter last, IntType (&x)[n], boost::mpl::true_)
+{
+ typedef typename boost::make_unsigned<IntType>::type unsigned_array[n];
+ fill_array_int_impl<w>(first, last, reinterpret_cast<unsigned_array&>(x));
+}
+
+template<int w, std::size_t n, class Iter, class IntType>
+inline void fill_array_int_impl(Iter& first, Iter last, IntType (&x)[n], boost::mpl::false_)
+{
+ fill_array_int_impl<w>(first, last, x);
+}
+
+template<int w, std::size_t n, class Iter, class IntType>
+inline void fill_array_int(Iter& first, Iter last, IntType (&x)[n])
+{
+ fill_array_int_impl<w>(first, last, x, boost::is_signed<IntType>());
+}
+
+template<int w, std::size_t n, class RealType>
+void seed_array_real_impl(const boost::uint_least32_t* storage, RealType (&x)[n])
+{
+ boost::uint_least32_t mask = ~((~boost::uint_least32_t(0)) << (w%32));
+ RealType two32 = 4294967296.0;
+ const RealType divisor = RealType(1)/detail::pow2<RealType>(w);
+ unsigned int j;
+ for(j = 0; j < n; ++j) {
+ RealType val = RealType(0);
+ RealType mult = divisor;
+ for(int k = 0; k < w/32; ++k) {
+ val += *storage++ * mult;
+ mult *= two32;
+ }
+ if(mask != 0) {
+ val += (*storage++ & mask) * mult;
+ }
+ BOOST_ASSERT(val >= 0);
+ BOOST_ASSERT(val < 1);
+ x[j] = val;
+ }
+}
+
+template<int w, std::size_t n, class SeedSeq, class RealType>
+void seed_array_real(SeedSeq& seq, RealType (&x)[n])
+{
+ using std::pow;
+ boost::uint_least32_t storage[((w+31)/32) * n];
+ seq.generate(&storage[0], &storage[0] + ((w+31)/32) * n);
+ seed_array_real_impl<w>(storage, x);
+}
+
+template<int w, std::size_t n, class Iter, class RealType>
+void fill_array_real(Iter& first, Iter last, RealType (&x)[n])
+{
+ boost::uint_least32_t mask = ~((~boost::uint_least32_t(0)) << (w%32));
+ RealType two32 = 4294967296.0;
+ const RealType divisor = RealType(1)/detail::pow2<RealType>(w);
+ unsigned int j;
+ for(j = 0; j < n; ++j) {
+ RealType val = RealType(0);
+ RealType mult = divisor;
+ for(int k = 0; k < w/32; ++k, ++first) {
+ if(first == last) throw std::invalid_argument("Not enough elements in call to seed.");
+ val += *first * mult;
+ mult *= two32;
+ }
+ if(mask != 0) {
+ if(first == last) throw std::invalid_argument("Not enough elements in call to seed.");
+ val += (*first & mask) * mult;
+ ++first;
+ }
+ BOOST_ASSERT(val >= 0);
+ BOOST_ASSERT(val < 1);
+ x[j] = val;
+ }
+}
+
+}
+}
+}
+
+#include <boost/random/detail/enable_warnings.hpp>
+
+#endif
if (y >= 0)
return T2(x) + y;
// y < 0
- if (x >= T1(-(y+1))) // result >= 0 after subtraction
+ if (x > T1(-(y+1))) // result >= 0 after subtraction
// avoid the nasty two's complement edge case for y == min()
return T2(x - T1(-(y+1)) - 1);
// abs(x) < abs(y), thus T2 able to represent x
/* boost random/detail/uniform_int_float.hpp header file
*
* Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: uniform_int_float.hpp 52492 2009-04-19 14:55:57Z steven_watanabe $
+ * $Id: uniform_int_float.hpp 72951 2011-07-07 04:57:37Z steven_watanabe $
*
*/
#ifndef BOOST_RANDOM_DETAIL_UNIFORM_INT_FLOAT_HPP
#define BOOST_RANDOM_DETAIL_UNIFORM_INT_FLOAT_HPP
+#include <boost/limits.hpp>
#include <boost/config.hpp>
+#include <boost/integer.hpp>
#include <boost/random/detail/config.hpp>
-#include <boost/random/uniform_01.hpp>
+#include <boost/random/detail/generator_bits.hpp>
+#include <boost/random/detail/disable_warnings.hpp>
namespace boost {
namespace random {
namespace detail {
-template<class UniformRandomNumberGenerator, class IntType = unsigned long>
+template<class URNG>
class uniform_int_float
{
public:
- typedef UniformRandomNumberGenerator base_type;
- typedef IntType result_type;
+ typedef URNG base_type;
+ typedef typename base_type::result_type base_result;
- uniform_int_float(base_type rng, IntType min_arg = 0, IntType max_arg = 0xffffffff)
- : _rng(rng), _min(min_arg), _max(max_arg)
- {
- init();
- }
+ typedef typename boost::uint_t<
+ (std::numeric_limits<boost::uintmax_t>::digits <
+ std::numeric_limits<base_result>::digits)?
+ std::numeric_limits<boost::uintmax_t>::digits :
+ std::numeric_limits<base_result>::digits
+ >::fast result_type;
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _min; }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _max; }
- base_type& base() { return _rng.base(); }
- const base_type& base() const { return _rng.base(); }
+ uniform_int_float(base_type& rng)
+ : _rng(rng) {}
- result_type operator()()
- {
- return static_cast<IntType>(_rng() * _range) + _min;
- }
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return 0; }
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+ std::size_t digits = std::numeric_limits<result_type>::digits;
+ if(detail::generator_bits<URNG>::value() < digits) {
+ digits = detail::generator_bits<URNG>::value();
+ }
+ return (result_type(2) << (digits - 1)) - 1;
+ }
+ base_type& base() { return _rng; }
+ const base_type& base() const { return _rng; }
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const uniform_int_float& ud)
- {
- os << ud._min << " " << ud._max;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, uniform_int_float& ud)
- {
- is >> std::ws >> ud._min >> std::ws >> ud._max;
- ud.init();
- return is;
- }
-#endif
+ result_type operator()()
+ {
+ base_result range = static_cast<base_result>((max)())+1;
+ return static_cast<result_type>(_rng() * range);
+ }
private:
- void init()
- {
- _range = static_cast<base_result>(_max-_min)+1;
- }
-
- typedef typename base_type::result_type base_result;
- uniform_01<base_type> _rng;
- result_type _min, _max;
- base_result _range;
+ base_type& _rng;
};
-
} // namespace detail
} // namespace random
} // namespace boost
+#include <boost/random/detail/enable_warnings.hpp>
+
#endif // BOOST_RANDOM_DETAIL_UNIFORM_INT_FLOAT_HPP
--- /dev/null
+/* boost random/vector_io.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: vector_io.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ */
+
+#ifndef BOOST_RANDOM_DETAIL_VECTOR_IO_HPP
+#define BOOST_RANDOM_DETAIL_VECTOR_IO_HPP
+
+#include <vector>
+#include <iosfwd>
+#include <istream>
+
+namespace boost {
+namespace random {
+namespace detail {
+
+template<class CharT, class Traits, class T>
+void print_vector(std::basic_ostream<CharT, Traits>& os,
+ const std::vector<T>& vec)
+{
+ typename std::vector<T>::const_iterator
+ iter = vec.begin(),
+ end = vec.end();
+ os << os.widen('[');
+ if(iter != end) {
+ os << *iter;
+ ++iter;
+ for(; iter != end; ++iter)
+ {
+ os << os.widen(' ') << *iter;
+ }
+ }
+ os << os.widen(']');
+}
+
+template<class CharT, class Traits, class T>
+void read_vector(std::basic_istream<CharT, Traits>& is, std::vector<T>& vec)
+{
+ CharT ch;
+ if(!(is >> ch)) {
+ return;
+ }
+ if(ch != is.widen('[')) {
+ is.putback(ch);
+ is.setstate(std::ios_base::failbit);
+ return;
+ }
+ T val;
+ while(is >> std::ws >> val) {
+ vec.push_back(val);
+ }
+ if(is.fail()) {
+ is.clear();
+ if(!(is >> ch)) {
+ return;
+ }
+ if(ch != is.widen(']')) {
+ is.putback(ch);
+ is.setstate(std::ios_base::failbit);
+ }
+ }
+}
+
+}
+}
+}
+
+#endif // BOOST_RANDOM_DETAIL_VECTOR_IO_HPP
/* boost random/discard_block.hpp header file
*
* Copyright Jens Maurer 2002
+ * Copyright Steven Watanabe 2010
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: discard_block.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: discard_block.hpp 72951 2011-07-07 04:57:37Z steven_watanabe $
*
* Revision history
* 2001-03-02 created
#include <iostream>
#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
#include <boost/limits.hpp>
#include <boost/static_assert.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/seed.hpp>
namespace boost {
namespace random {
/**
- * The class template \discard_block is a model of
+ * The class template \discard_block_engine is a model of
* \pseudo_random_number_generator. It modifies
* another generator by discarding parts of its output.
- * Out of every block of @c r results, the first @c p
+ * Out of every block of @c p results, the first @c r
* will be returned and the rest discarded.
*
* Requires: 0 < p <= r
*/
-template<class UniformRandomNumberGenerator, unsigned int p, unsigned int r>
-class discard_block
+template<class UniformRandomNumberGenerator, std::size_t p, std::size_t r>
+class discard_block_engine
{
+ typedef typename detail::seed_type<
+ typename UniformRandomNumberGenerator::result_type>::type seed_type;
public:
- typedef UniformRandomNumberGenerator base_type;
- typedef typename base_type::result_type result_type;
+ typedef UniformRandomNumberGenerator base_type;
+ typedef typename base_type::result_type result_type;
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
- BOOST_STATIC_CONSTANT(unsigned int, total_block = p);
- BOOST_STATIC_CONSTANT(unsigned int, returned_block = r);
+ BOOST_STATIC_CONSTANT(std::size_t, block_size = p);
+ BOOST_STATIC_CONSTANT(std::size_t, used_block = r);
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(total_block >= returned_block);
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ BOOST_STATIC_CONSTANT(std::size_t, total_block = p);
+ BOOST_STATIC_CONSTANT(std::size_t, returned_block = r);
+
+ BOOST_STATIC_ASSERT(total_block >= returned_block);
+
+ /** Uses the default seed for the base generator. */
+ discard_block_engine() : _rng(), _n(0) { }
+ /** Constructs a new \discard_block_engine with a copy of rng. */
+ explicit discard_block_engine(const base_type & rng) : _rng(rng), _n(0) { }
+
+#ifndef BOOST_NO_RVALUE_REFERENCES
+ /** Constructs a new \discard_block_engine with rng. */
+ explicit discard_block_engine(base_type && rng) : _rng(rng), _n(0) { }
#endif
- discard_block() : _rng(), _n(0) { }
- explicit discard_block(const base_type & rng) : _rng(rng), _n(0) { }
- template<class T> explicit discard_block(T s) : _rng(s), _n(0) {}
- template<class It> discard_block(It& first, It last)
- : _rng(first, last), _n(0) { }
- void seed() { _rng.seed(); _n = 0; }
- template<class T> void seed(T s) { _rng.seed(s); _n = 0; }
- template<class It> void seed(It& first, It last)
- { _n = 0; _rng.seed(first, last); }
-
- const base_type& base() const { return _rng; }
-
- result_type operator()()
- {
- if(_n >= returned_block) {
- // discard values of random number generator
- for( ; _n < total_block; ++_n)
- _rng();
- _n = 0;
+ /**
+ * Creates a new \discard_block_engine and seeds the underlying
+ * generator with @c value
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(discard_block_engine,
+ seed_type, value)
+ { _rng.seed(value); _n = 0; }
+
+ /**
+ * Creates a new \discard_block_engine and seeds the underlying
+ * generator with @c seq
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(discard_block_engine, SeedSeq, seq)
+ { _rng.seed(seq); _n = 0; }
+
+ /**
+ * Creates a new \discard_block_engine and seeds the underlying
+ * generator with first and last.
+ */
+ template<class It> discard_block_engine(It& first, It last)
+ : _rng(first, last), _n(0) { }
+
+ /** default seeds the underlying generator. */
+ void seed() { _rng.seed(); _n = 0; }
+ /** Seeds the underlying generator with s. */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(discard_block_engine, seed_type, s)
+ { _rng.seed(s); _n = 0; }
+ /** Seeds the underlying generator with seq. */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(discard_block_engine, SeedSeq, seq)
+ { _rng.seed(seq); _n = 0; }
+ /** Seeds the underlying generator with first and last. */
+ template<class It> void seed(It& first, It last)
+ { _rng.seed(first, last); _n = 0; }
+
+ /** Returns the underlying engine. */
+ const base_type& base() const { return _rng; }
+
+ /** Returns the next value of the generator. */
+ result_type operator()()
+ {
+ if(_n >= returned_block) {
+ // discard values of random number generator
+ // Don't use discard, since we still need to
+ // be somewhat compatible with TR1.
+ // _rng.discard(total_block - _n);
+ for(std::size_t i = 0; i < total_block - _n; ++i) {
+ _rng();
+ }
+ _n = 0;
+ }
+ ++_n;
+ return _rng();
}
- ++_n;
- return _rng();
- }
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (_rng.min)(); }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (_rng.max)(); }
- static bool validation(result_type x) { return true; } // dummy
+ void discard(boost::uintmax_t z)
+ {
+ for(boost::uintmax_t j = 0; j < z; ++j) {
+ (*this)();
+ }
+ }
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
+ template<class It>
+ void generate(It first, It last)
+ { detail::generate(*this, first, last); }
+
+ /**
+ * Returns the smallest value that the generator can produce.
+ * This is the same as the minimum of the underlying generator.
+ */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return (base_type::min)(); }
+ /**
+ * Returns the largest value that the generator can produce.
+ * This is the same as the maximum of the underlying generator.
+ */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return (base_type::max)(); }
#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const discard_block& s)
- {
- os << s._rng << " " << s._n << " ";
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, discard_block& s)
- {
- is >> s._rng >> std::ws >> s._n >> std::ws;
- return is;
- }
-#endif
+ /** Writes a \discard_block_engine to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const discard_block_engine& s)
+ {
+ os << s._rng << ' ' << s._n;
+ return os;
+ }
- friend bool operator==(const discard_block& x, const discard_block& y)
- { return x._rng == y._rng && x._n == y._n; }
- friend bool operator!=(const discard_block& x, const discard_block& y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(const discard_block& rhs) const
- { return _rng == rhs._rng && _n == rhs._n; }
- bool operator!=(const discard_block& rhs) const
- { return !(*this == rhs); }
+ /** Reads a \discard_block_engine from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is, discard_block_engine& s)
+ {
+ is >> s._rng >> std::ws >> s._n;
+ return is;
+ }
#endif
+ /** Returns true if the two generators will produce identical sequences. */
+ friend bool operator==(const discard_block_engine& x,
+ const discard_block_engine& y)
+ { return x._rng == y._rng && x._n == y._n; }
+ /** Returns true if the two generators will produce different sequences. */
+ friend bool operator!=(const discard_block_engine& x,
+ const discard_block_engine& y)
+ { return !(x == y); }
+
private:
- base_type _rng;
- unsigned int _n;
+ base_type _rng;
+ std::size_t _n;
};
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
// A definition is required even for integral static constants
-template<class UniformRandomNumberGenerator, unsigned int p, unsigned int r>
-const bool discard_block<UniformRandomNumberGenerator, p, r>::has_fixed_range;
-template<class UniformRandomNumberGenerator, unsigned int p, unsigned int r>
-const unsigned int discard_block<UniformRandomNumberGenerator, p, r>::total_block;
-template<class UniformRandomNumberGenerator, unsigned int p, unsigned int r>
-const unsigned int discard_block<UniformRandomNumberGenerator, p, r>::returned_block;
+template<class URNG, std::size_t p, std::size_t r>
+const bool discard_block_engine<URNG, p, r>::has_fixed_range;
+template<class URNG, std::size_t p, std::size_t r>
+const std::size_t discard_block_engine<URNG, p, r>::total_block;
+template<class URNG, std::size_t p, std::size_t r>
+const std::size_t discard_block_engine<URNG, p, r>::returned_block;
+template<class URNG, std::size_t p, std::size_t r>
+const std::size_t discard_block_engine<URNG, p, r>::block_size;
+template<class URNG, std::size_t p, std::size_t r>
+const std::size_t discard_block_engine<URNG, p, r>::used_block;
#endif
+/// \cond \show_deprecated
+
+template<class URNG, int p, int r>
+class discard_block : public discard_block_engine<URNG, p, r>
+{
+ typedef discard_block_engine<URNG, p, r> base_t;
+public:
+ typedef typename base_t::result_type result_type;
+ discard_block() {}
+ template<class T>
+ discard_block(T& arg) : base_t(arg) {}
+ template<class T>
+ discard_block(const T& arg) : base_t(arg) {}
+ template<class It>
+ discard_block(It& first, It last) : base_t(first, last) {}
+ result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return (this->base().min)(); }
+ result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return (this->base().max)(); }
+};
+
+/// \endcond
+
+namespace detail {
+
+ template<class Engine>
+ struct generator_bits;
+
+ template<class URNG, std::size_t p, std::size_t r>
+ struct generator_bits<discard_block_engine<URNG, p, r> > {
+ static std::size_t value() { return generator_bits<URNG>::value(); }
+ };
+
+ template<class URNG, int p, int r>
+ struct generator_bits<discard_block<URNG, p, r> > {
+ static std::size_t value() { return generator_bits<URNG>::value(); }
+ };
+
+}
+
} // namespace random
} // namespace boost
--- /dev/null
+/* boost random/discrete_distribution.hpp header file
+ *
+ * Copyright Steven Watanabe 2009-2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: discrete_distribution.hpp 85813 2013-09-21 20:17:00Z jewillco $
+ */
+
+#ifndef BOOST_RANDOM_DISCRETE_DISTRIBUTION_HPP_INCLUDED
+#define BOOST_RANDOM_DISCRETE_DISTRIBUTION_HPP_INCLUDED
+
+#include <vector>
+#include <limits>
+#include <numeric>
+#include <utility>
+#include <iterator>
+#include <boost/assert.hpp>
+#include <boost/random/uniform_01.hpp>
+#include <boost/random/uniform_int.hpp>
+#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/vector_io.hpp>
+
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#include <initializer_list>
+#endif
+
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+
+#include <boost/random/detail/disable_warnings.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * The class @c discrete_distribution models a \random_distribution.
+ * It produces integers in the range [0, n) with the probability
+ * of producing each value is specified by the parameters of the
+ * distribution.
+ */
+template<class IntType = int, class WeightType = double>
+class discrete_distribution {
+public:
+ typedef WeightType input_type;
+ typedef IntType result_type;
+
+ class param_type {
+ public:
+
+ typedef discrete_distribution distribution_type;
+
+ /**
+ * Constructs a @c param_type object, representing a distribution
+ * with \f$p(0) = 1\f$ and \f$p(k|k>0) = 0\f$.
+ */
+ param_type() : _probabilities(1, static_cast<WeightType>(1)) {}
+ /**
+ * If @c first == @c last, equivalent to the default constructor.
+ * Otherwise, the values of the range represent weights for the
+ * possible values of the distribution.
+ */
+ template<class Iter>
+ param_type(Iter first, Iter last) : _probabilities(first, last)
+ {
+ normalize();
+ }
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+ /**
+ * If wl.size() == 0, equivalent to the default constructor.
+ * Otherwise, the values of the @c initializer_list represent
+ * weights for the possible values of the distribution.
+ */
+ param_type(const std::initializer_list<WeightType>& wl)
+ : _probabilities(wl)
+ {
+ normalize();
+ }
+#endif
+ /**
+ * If the range is empty, equivalent to the default constructor.
+ * Otherwise, the elements of the range represent
+ * weights for the possible values of the distribution.
+ */
+ template<class Range>
+ explicit param_type(const Range& range)
+ : _probabilities(boost::begin(range), boost::end(range))
+ {
+ normalize();
+ }
+
+ /**
+ * If nw is zero, equivalent to the default constructor.
+ * Otherwise, the range of the distribution is [0, nw),
+ * and the weights are found by calling fw with values
+ * evenly distributed between \f$\mbox{xmin} + \delta/2\f$ and
+ * \f$\mbox{xmax} - \delta/2\f$, where
+ * \f$\delta = (\mbox{xmax} - \mbox{xmin})/\mbox{nw}\f$.
+ */
+ template<class Func>
+ param_type(std::size_t nw, double xmin, double xmax, Func fw)
+ {
+ std::size_t n = (nw == 0) ? 1 : nw;
+ double delta = (xmax - xmin) / n;
+ BOOST_ASSERT(delta > 0);
+ for(std::size_t k = 0; k < n; ++k) {
+ _probabilities.push_back(fw(xmin + k*delta + delta/2));
+ }
+ normalize();
+ }
+
+ /**
+ * Returns a vector containing the probabilities of each possible
+ * value of the distribution.
+ */
+ std::vector<WeightType> probabilities() const
+ {
+ return _probabilities;
+ }
+
+ /** Writes the parameters to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ detail::print_vector(os, parm._probabilities);
+ return os;
+ }
+
+ /** Reads the parameters from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ std::vector<WeightType> temp;
+ detail::read_vector(is, temp);
+ if(is) {
+ parm._probabilities.swap(temp);
+ }
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are the same. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ {
+ return lhs._probabilities == rhs._probabilities;
+ }
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+ private:
+ /// @cond show_private
+ friend class discrete_distribution;
+ explicit param_type(const discrete_distribution& dist)
+ : _probabilities(dist.probabilities())
+ {}
+ void normalize()
+ {
+ WeightType sum =
+ std::accumulate(_probabilities.begin(), _probabilities.end(),
+ static_cast<WeightType>(0));
+ for(typename std::vector<WeightType>::iterator
+ iter = _probabilities.begin(),
+ end = _probabilities.end();
+ iter != end; ++iter)
+ {
+ *iter /= sum;
+ }
+ }
+ std::vector<WeightType> _probabilities;
+ /// @endcond
+ };
+
+ /**
+ * Creates a new @c discrete_distribution object that has
+ * \f$p(0) = 1\f$ and \f$p(i|i>0) = 0\f$.
+ */
+ discrete_distribution()
+ {
+ _alias_table.push_back(std::make_pair(static_cast<WeightType>(1),
+ static_cast<IntType>(0)));
+ }
+ /**
+ * Constructs a discrete_distribution from an iterator range.
+ * If @c first == @c last, equivalent to the default constructor.
+ * Otherwise, the values of the range represent weights for the
+ * possible values of the distribution.
+ */
+ template<class Iter>
+ discrete_distribution(Iter first, Iter last)
+ {
+ init(first, last);
+ }
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+ /**
+ * Constructs a @c discrete_distribution from a @c std::initializer_list.
+ * If the @c initializer_list is empty, equivalent to the default
+ * constructor. Otherwise, the values of the @c initializer_list
+ * represent weights for the possible values of the distribution.
+ * For example, given the distribution
+ *
+ * @code
+ * discrete_distribution<> dist{1, 4, 5};
+ * @endcode
+ *
+ * The probability of a 0 is 1/10, the probability of a 1 is 2/5,
+ * the probability of a 2 is 1/2, and no other values are possible.
+ */
+ discrete_distribution(std::initializer_list<WeightType> wl)
+ {
+ init(wl.begin(), wl.end());
+ }
+#endif
+ /**
+ * Constructs a discrete_distribution from a Boost.Range range.
+ * If the range is empty, equivalent to the default constructor.
+ * Otherwise, the values of the range represent weights for the
+ * possible values of the distribution.
+ */
+ template<class Range>
+ explicit discrete_distribution(const Range& range)
+ {
+ init(boost::begin(range), boost::end(range));
+ }
+ /**
+ * Constructs a discrete_distribution that approximates a function.
+ * If nw is zero, equivalent to the default constructor.
+ * Otherwise, the range of the distribution is [0, nw),
+ * and the weights are found by calling fw with values
+ * evenly distributed between \f$\mbox{xmin} + \delta/2\f$ and
+ * \f$\mbox{xmax} - \delta/2\f$, where
+ * \f$\delta = (\mbox{xmax} - \mbox{xmin})/\mbox{nw}\f$.
+ */
+ template<class Func>
+ discrete_distribution(std::size_t nw, double xmin, double xmax, Func fw)
+ {
+ std::size_t n = (nw == 0) ? 1 : nw;
+ double delta = (xmax - xmin) / n;
+ BOOST_ASSERT(delta > 0);
+ std::vector<WeightType> weights;
+ for(std::size_t k = 0; k < n; ++k) {
+ weights.push_back(fw(xmin + k*delta + delta/2));
+ }
+ init(weights.begin(), weights.end());
+ }
+ /**
+ * Constructs a discrete_distribution from its parameters.
+ */
+ explicit discrete_distribution(const param_type& parm)
+ {
+ param(parm);
+ }
+
+ /**
+ * Returns a value distributed according to the parameters of the
+ * discrete_distribution.
+ */
+ template<class URNG>
+ IntType operator()(URNG& urng) const
+ {
+ BOOST_ASSERT(!_alias_table.empty());
+ WeightType test = uniform_01<WeightType>()(urng);
+ IntType result = uniform_int<IntType>((min)(), (max)())(urng);
+ if(test < _alias_table[result].first) {
+ return result;
+ } else {
+ return(_alias_table[result].second);
+ }
+ }
+
+ /**
+ * Returns a value distributed according to the parameters
+ * specified by param.
+ */
+ template<class URNG>
+ IntType operator()(URNG& urng, const param_type& parm) const
+ {
+ while(true) {
+ WeightType val = uniform_01<WeightType>()(urng);
+ WeightType sum = 0;
+ std::size_t result = 0;
+ for(typename std::vector<WeightType>::const_iterator
+ iter = parm._probabilities.begin(),
+ end = parm._probabilities.end();
+ iter != end; ++iter, ++result)
+ {
+ sum += *iter;
+ if(sum > val) {
+ return result;
+ }
+ }
+ }
+ }
+
+ /** Returns the smallest value that the distribution can produce. */
+ result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return 0; }
+ /** Returns the largest value that the distribution can produce. */
+ result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return static_cast<result_type>(_alias_table.size() - 1); }
+
+ /**
+ * Returns a vector containing the probabilities of each
+ * value of the distribution. For example, given
+ *
+ * @code
+ * discrete_distribution<> dist = { 1, 4, 5 };
+ * std::vector<double> p = dist.param();
+ * @endcode
+ *
+ * the vector, p will contain {0.1, 0.4, 0.5}.
+ */
+ std::vector<WeightType> probabilities() const
+ {
+ std::vector<WeightType> result(_alias_table.size());
+ const WeightType mean =
+ static_cast<WeightType>(1) / _alias_table.size();
+ std::size_t i = 0;
+ for(typename alias_table_t::const_iterator
+ iter = _alias_table.begin(),
+ end = _alias_table.end();
+ iter != end; ++iter, ++i)
+ {
+ WeightType val = iter->first * mean;
+ result[i] += val;
+ result[iter->second] += mean - val;
+ }
+ return(result);
+ }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const
+ {
+ return param_type(*this);
+ }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ init(parm._probabilities.begin(), parm._probabilities.end());
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() {}
+
+ /** Writes a distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, discrete_distribution, dd)
+ {
+ os << dd.param();
+ return os;
+ }
+
+ /** Reads a distribution from a @c std::istream */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, discrete_distribution, dd)
+ {
+ param_type parm;
+ if(is >> parm) {
+ dd.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two distributions will return the
+ * same sequence of values, when passed equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(discrete_distribution, lhs, rhs)
+ {
+ return lhs._alias_table == rhs._alias_table;
+ }
+ /**
+ * Returns true if the two distributions may return different
+ * sequences of values, when passed equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(discrete_distribution)
+
+private:
+
+ /// @cond show_private
+
+ template<class Iter>
+ void init(Iter first, Iter last, std::input_iterator_tag)
+ {
+ std::vector<WeightType> temp(first, last);
+ init(temp.begin(), temp.end());
+ }
+ template<class Iter>
+ void init(Iter first, Iter last, std::forward_iterator_tag)
+ {
+ std::vector<std::pair<WeightType, IntType> > below_average;
+ std::vector<std::pair<WeightType, IntType> > above_average;
+ std::size_t size = std::distance(first, last);
+ WeightType weight_sum =
+ std::accumulate(first, last, static_cast<WeightType>(0));
+ WeightType weight_average = weight_sum / size;
+ std::size_t i = 0;
+ for(; first != last; ++first, ++i) {
+ WeightType val = *first / weight_average;
+ std::pair<WeightType, IntType> elem(val, static_cast<IntType>(i));
+ if(val < static_cast<WeightType>(1)) {
+ below_average.push_back(elem);
+ } else {
+ above_average.push_back(elem);
+ }
+ }
+
+ _alias_table.resize(size);
+ typename alias_table_t::iterator
+ b_iter = below_average.begin(),
+ b_end = below_average.end(),
+ a_iter = above_average.begin(),
+ a_end = above_average.end()
+ ;
+ while(b_iter != b_end && a_iter != a_end) {
+ _alias_table[b_iter->second] =
+ std::make_pair(b_iter->first, a_iter->second);
+ a_iter->first -= (static_cast<WeightType>(1) - b_iter->first);
+ if(a_iter->first < static_cast<WeightType>(1)) {
+ *b_iter = *a_iter++;
+ } else {
+ ++b_iter;
+ }
+ }
+ for(; b_iter != b_end; ++b_iter) {
+ _alias_table[b_iter->second].first = static_cast<WeightType>(1);
+ }
+ for(; a_iter != a_end; ++a_iter) {
+ _alias_table[a_iter->second].first = static_cast<WeightType>(1);
+ }
+ }
+ template<class Iter>
+ void init(Iter first, Iter last)
+ {
+ if(first == last) {
+ _alias_table.clear();
+ _alias_table.push_back(std::make_pair(static_cast<WeightType>(1),
+ static_cast<IntType>(0)));
+ } else {
+ typename std::iterator_traits<Iter>::iterator_category category;
+ init(first, last, category);
+ }
+ }
+ typedef std::vector<std::pair<WeightType, IntType> > alias_table_t;
+ alias_table_t _alias_table;
+ /// @endcond
+};
+
+}
+}
+
+#include <boost/random/detail/enable_warnings.hpp>
+
+#endif
/* boost random/exponential_distribution.hpp header file
*
* Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: exponential_distribution.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: exponential_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#define BOOST_RANDOM_EXPONENTIAL_DISTRIBUTION_HPP
#include <boost/config/no_tr1/cmath.hpp>
-#include <cassert>
-#include <iostream>
+#include <iosfwd>
+#include <boost/assert.hpp>
#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/uniform_01.hpp>
namespace boost {
+namespace random {
/**
- * The exponential distribution has a single parameter lambda.
+ * The exponential distribution is a model of \random_distribution with
+ * a single parameter lambda.
*
- * It has \f$p(x) = \lambda e^{-\lambda x}\f$
+ * It has \f$\displaystyle p(x) = \lambda e^{-\lambda x}\f$
*/
template<class RealType = double>
class exponential_distribution
{
public:
- typedef RealType input_type;
- typedef RealType result_type;
-
-#if !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) && !(defined(BOOST_MSVC) && BOOST_MSVC <= 1300)
- BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
-#endif
-
- explicit exponential_distribution(result_type lambda_arg = result_type(1))
- : _lambda(lambda_arg) { assert(_lambda > result_type(0)); }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- result_type lambda() const { return _lambda; }
-
- void reset() { }
-
- template<class Engine>
- result_type operator()(Engine& eng)
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- using std::log;
-#endif
- return -result_type(1) / _lambda * log(result_type(1)-eng());
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const exponential_distribution& ed)
- {
- os << ed._lambda;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, exponential_distribution& ed)
- {
- is >> std::ws >> ed._lambda;
- return is;
- }
-#endif
+ typedef RealType input_type;
+ typedef RealType result_type;
+
+ class param_type
+ {
+ public:
+
+ typedef exponential_distribution distribution_type;
+
+ /**
+ * Constructs parameters with a given lambda.
+ *
+ * Requires: lambda > 0
+ */
+ param_type(RealType lambda_arg = RealType(1.0))
+ : _lambda(lambda_arg) { BOOST_ASSERT(_lambda > RealType(0)); }
+
+ /** Returns the lambda parameter of the distribution. */
+ RealType lambda() const { return _lambda; }
+
+ /** Writes the parameters to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ os << parm._lambda;
+ return os;
+ }
+
+ /** Reads the parameters from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ is >> parm._lambda;
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are equal. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._lambda == rhs._lambda; }
+
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ RealType _lambda;
+ };
+
+ /**
+ * Constructs an exponential_distribution with a given lambda.
+ *
+ * Requires: lambda > 0
+ */
+ explicit exponential_distribution(RealType lambda_arg = RealType(1.0))
+ : _lambda(lambda_arg) { BOOST_ASSERT(_lambda > RealType(0)); }
+
+ /**
+ * Constructs an exponential_distribution from its parameters
+ */
+ explicit exponential_distribution(const param_type& parm)
+ : _lambda(parm.lambda()) {}
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Returns the lambda parameter of the distribution. */
+ RealType lambda() const { return _lambda; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return RealType(0); }
+ /** Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return (std::numeric_limits<RealType>::infinity)(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_lambda); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm) { _lambda = parm.lambda(); }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /**
+ * Returns a random variate distributed according to the
+ * exponential distribution.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng) const
+ {
+ using std::log;
+ return -result_type(1) /
+ _lambda * log(result_type(1)-uniform_01<RealType>()(eng));
+ }
+
+ /**
+ * Returns a random variate distributed according to the exponential
+ * distribution with parameters specified by param.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng, const param_type& parm) const
+ {
+ return exponential_distribution(parm)(eng);
+ }
+
+ /** Writes the distribution to a std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, exponential_distribution, ed)
+ {
+ os << ed._lambda;
+ return os;
+ }
+
+ /** Reads the distribution from a std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, exponential_distribution, ed)
+ {
+ is >> ed._lambda;
+ return is;
+ }
+
+ /**
+ * Returns true iff the two distributions will produce identical
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(exponential_distribution, lhs, rhs)
+ { return lhs._lambda == rhs._lambda; }
+
+ /**
+ * Returns true iff the two distributions will produce different
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(exponential_distribution)
private:
- result_type _lambda;
+ result_type _lambda;
};
+} // namespace random
+
+using random::exponential_distribution;
+
} // namespace boost
#endif // BOOST_RANDOM_EXPONENTIAL_DISTRIBUTION_HPP
--- /dev/null
+/* boost random/extreme_value_distribution.hpp header file
+ *
+ * Copyright Steven Watanabe 2010
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: extreme_value_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ */
+
+#ifndef BOOST_RANDOM_EXTREME_VALUE_DISTRIBUTION_HPP
+#define BOOST_RANDOM_EXTREME_VALUE_DISTRIBUTION_HPP
+
+#include <boost/config/no_tr1/cmath.hpp>
+#include <iosfwd>
+#include <istream>
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/uniform_01.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * The extreme value distribution is a real valued distribution with two
+ * parameters a and b.
+ *
+ * It has \f$\displaystyle p(x) = \frac{1}{b}e^{\frac{a-x}{b} - e^\frac{a-x}{b}}\f$.
+ */
+template<class RealType = double>
+class extreme_value_distribution {
+public:
+ typedef RealType result_type;
+ typedef RealType input_type;
+
+ class param_type {
+ public:
+ typedef extreme_value_distribution distribution_type;
+
+ /**
+ * Constructs a @c param_type from the "a" and "b" parameters
+ * of the distribution.
+ *
+ * Requires: b > 0
+ */
+ explicit param_type(RealType a_arg = 1.0, RealType b_arg = 1.0)
+ : _a(a_arg), _b(b_arg)
+ {}
+
+ /** Returns the "a" parameter of the distribtuion. */
+ RealType a() const { return _a; }
+ /** Returns the "b" parameter of the distribution. */
+ RealType b() const { return _b; }
+
+ /** Writes a @c param_type to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ { os << parm._a << ' ' << parm._b; return os; }
+
+ /** Reads a @c param_type from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ { is >> parm._a >> std::ws >> parm._b; return is; }
+
+ /** Returns true if the two sets of parameters are the same. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._a == rhs._a && lhs._b == rhs._b; }
+
+ /** Returns true if the two sets of parameters are the different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ RealType _a;
+ RealType _b;
+ };
+
+ /**
+ * Constructs an @c extreme_value_distribution from its "a" and "b" parameters.
+ *
+ * Requires: b > 0
+ */
+ explicit extreme_value_distribution(RealType a_arg = 1.0, RealType b_arg = 1.0)
+ : _a(a_arg), _b(b_arg)
+ {}
+ /** Constructs an @c extreme_value_distribution from its parameters. */
+ explicit extreme_value_distribution(const param_type& parm)
+ : _a(parm.a()), _b(parm.b())
+ {}
+
+ /**
+ * Returns a random variate distributed according to the
+ * @c extreme_value_distribution.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng) const
+ {
+ using std::log;
+ return _a - log(-log(uniform_01<RealType>()(urng))) * _b;
+ }
+
+ /**
+ * Returns a random variate distributed accordint to the extreme
+ * value distribution with parameters specified by @c param.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng, const param_type& parm) const
+ {
+ return extreme_value_distribution(parm)(urng);
+ }
+
+ /** Returns the "a" parameter of the distribution. */
+ RealType a() const { return _a; }
+ /** Returns the "b" parameter of the distribution. */
+ RealType b() const { return _b; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return -std::numeric_limits<RealType>::infinity(); }
+ /** Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return std::numeric_limits<RealType>::infinity(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_a, _b); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _a = parm.a();
+ _b = parm.b();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /** Writes an @c extreme_value_distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, extreme_value_distribution, wd)
+ {
+ os << wd.param();
+ return os;
+ }
+
+ /** Reads an @c extreme_value_distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, extreme_value_distribution, wd)
+ {
+ param_type parm;
+ if(is >> parm) {
+ wd.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two instances of @c extreme_value_distribution will
+ * return identical sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(extreme_value_distribution, lhs, rhs)
+ { return lhs._a == rhs._a && lhs._b == rhs._b; }
+
+ /**
+ * Returns true if the two instances of @c extreme_value_distribution will
+ * return different sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(extreme_value_distribution)
+
+private:
+ RealType _a;
+ RealType _b;
+};
+
+} // namespace random
+} // namespace boost
+
+#endif // BOOST_RANDOM_EXTREME_VALUE_DISTRIBUTION_HPP
--- /dev/null
+/* boost random/fisher_f_distribution.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: fisher_f_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ */
+
+#ifndef BOOST_RANDOM_FISHER_F_DISTRIBUTION_HPP
+#define BOOST_RANDOM_FISHER_F_DISTRIBUTION_HPP
+
+#include <iosfwd>
+#include <istream>
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/chi_squared_distribution.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * The Fisher F distribution is a real valued distribution with two
+ * parameters m and n.
+ *
+ * It has \f$\displaystyle p(x) =
+ * \frac{\Gamma((m+n)/2)}{\Gamma(m/2)\Gamma(n/2)}
+ * \left(\frac{m}{n}\right)^{m/2}
+ * x^{(m/2)-1} \left(1+\frac{mx}{n}\right)^{-(m+n)/2}
+ * \f$.
+ */
+template<class RealType = double>
+class fisher_f_distribution {
+public:
+ typedef RealType result_type;
+ typedef RealType input_type;
+
+ class param_type {
+ public:
+ typedef fisher_f_distribution distribution_type;
+
+ /**
+ * Constructs a @c param_type from the "m" and "n" parameters
+ * of the distribution.
+ *
+ * Requires: m > 0 and n > 0
+ */
+ explicit param_type(RealType m_arg = RealType(1.0),
+ RealType n_arg = RealType(1.0))
+ : _m(m_arg), _n(n_arg)
+ {}
+
+ /** Returns the "m" parameter of the distribtuion. */
+ RealType m() const { return _m; }
+ /** Returns the "n" parameter of the distribution. */
+ RealType n() const { return _n; }
+
+ /** Writes a @c param_type to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ { os << parm._m << ' ' << parm._n; return os; }
+
+ /** Reads a @c param_type from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ { is >> parm._m >> std::ws >> parm._n; return is; }
+
+ /** Returns true if the two sets of parameters are the same. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._m == rhs._m && lhs._n == rhs._n; }
+
+ /** Returns true if the two sets of parameters are the different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ RealType _m;
+ RealType _n;
+ };
+
+ /**
+ * Constructs a @c fisher_f_distribution from its "m" and "n" parameters.
+ *
+ * Requires: m > 0 and n > 0
+ */
+ explicit fisher_f_distribution(RealType m_arg = RealType(1.0),
+ RealType n_arg = RealType(1.0))
+ : _impl_m(m_arg), _impl_n(n_arg)
+ {}
+ /** Constructs an @c fisher_f_distribution from its parameters. */
+ explicit fisher_f_distribution(const param_type& parm)
+ : _impl_m(parm.m()), _impl_n(parm.n())
+ {}
+
+ /**
+ * Returns a random variate distributed according to the
+ * F distribution.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng)
+ {
+ return (_impl_m(urng) * n()) / (_impl_n(urng) * m());
+ }
+
+ /**
+ * Returns a random variate distributed according to the
+ * F distribution with parameters specified by @c param.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng, const param_type& parm) const
+ {
+ return fisher_f_distribution(parm)(urng);
+ }
+
+ /** Returns the "m" parameter of the distribution. */
+ RealType m() const { return _impl_m.n(); }
+ /** Returns the "n" parameter of the distribution. */
+ RealType n() const { return _impl_n.n(); }
+
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return 0; }
+ /** Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return std::numeric_limits<RealType>::infinity(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(m(), n()); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ typedef chi_squared_distribution<RealType> impl_type;
+ typename impl_type::param_type m_param(parm.m());
+ _impl_m.param(m_param);
+ typename impl_type::param_type n_param(parm.n());
+ _impl_n.param(n_param);
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /** Writes an @c fisher_f_distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, fisher_f_distribution, fd)
+ {
+ os << fd.param();
+ return os;
+ }
+
+ /** Reads an @c fisher_f_distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, fisher_f_distribution, fd)
+ {
+ param_type parm;
+ if(is >> parm) {
+ fd.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two instances of @c fisher_f_distribution will
+ * return identical sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(fisher_f_distribution, lhs, rhs)
+ { return lhs._impl_m == rhs._impl_m && lhs._impl_n == rhs._impl_n; }
+
+ /**
+ * Returns true if the two instances of @c fisher_f_distribution will
+ * return different sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(fisher_f_distribution)
+
+private:
+ chi_squared_distribution<RealType> _impl_m;
+ chi_squared_distribution<RealType> _impl_n;
+};
+
+} // namespace random
+} // namespace boost
+
+#endif // BOOST_RANDOM_EXTREME_VALUE_DISTRIBUTION_HPP
/* boost random/gamma_distribution.hpp header file
*
* Copyright Jens Maurer 2002
+ * Copyright Steven Watanabe 2010
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: gamma_distribution.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: gamma_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
*/
#define BOOST_RANDOM_GAMMA_DISTRIBUTION_HPP
#include <boost/config/no_tr1/cmath.hpp>
-#include <cassert>
+#include <istream>
+#include <iosfwd>
+#include <boost/assert.hpp>
#include <boost/limits.hpp>
#include <boost/static_assert.hpp>
#include <boost/random/detail/config.hpp>
#include <boost/random/exponential_distribution.hpp>
namespace boost {
+namespace random {
// The algorithm is taken from Knuth
/**
- * The gamma distribution is a continuous distribution with a single
- * parameter alpha.
+ * The gamma distribution is a continuous distribution with two
+ * parameters alpha and beta. It produces values > 0.
*
- * It has \f$p(x) = x^{\alpha-1}\frac{e^{-x}}{\Gamma(\alpha)}\f$.
+ * It has
+ * \f$\displaystyle p(x) = x^{\alpha-1}\frac{e^{-x/\beta}}{\beta^\alpha\Gamma(\alpha)}\f$.
*/
template<class RealType = double>
class gamma_distribution
{
public:
- typedef RealType input_type;
- typedef RealType result_type;
+ typedef RealType input_type;
+ typedef RealType result_type;
+
+ class param_type
+ {
+ public:
+ typedef gamma_distribution distribution_type;
+
+ /**
+ * Constructs a @c param_type object from the "alpha" and "beta"
+ * parameters.
+ *
+ * Requires: alpha > 0 && beta > 0
+ */
+ param_type(const RealType& alpha_arg = RealType(1.0),
+ const RealType& beta_arg = RealType(1.0))
+ : _alpha(alpha_arg), _beta(beta_arg)
+ {
+ }
+
+ /** Returns the "alpha" parameter of the distribution. */
+ RealType alpha() const { return _alpha; }
+ /** Returns the "beta" parameter of the distribution. */
+ RealType beta() const { return _beta; }
+
+#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
+ /** Writes the parameters to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT, Traits>&
+ operator<<(std::basic_ostream<CharT, Traits>& os,
+ const param_type& parm)
+ {
+ os << parm._alpha << ' ' << parm._beta;
+ return os;
+ }
+
+ /** Reads the parameters from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, param_type& parm)
+ {
+ is >> parm._alpha >> std::ws >> parm._beta;
+ return is;
+ }
+#endif
+
+ /** Returns true if the two sets of parameters are the same. */
+ friend bool operator==(const param_type& lhs, const param_type& rhs)
+ {
+ return lhs._alpha == rhs._alpha && lhs._beta == rhs._beta;
+ }
+ /** Returns true if the two sets fo parameters are different. */
+ friend bool operator!=(const param_type& lhs, const param_type& rhs)
+ {
+ return !(lhs == rhs);
+ }
+ private:
+ RealType _alpha;
+ RealType _beta;
+ };
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
+ BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
#endif
- explicit gamma_distribution(const result_type& alpha_arg = result_type(1))
- : _exp(result_type(1)), _alpha(alpha_arg)
- {
- assert(_alpha > result_type(0));
- init();
- }
+ /**
+ * Creates a new gamma_distribution with parameters "alpha" and "beta".
+ *
+ * Requires: alpha > 0 && beta > 0
+ */
+ explicit gamma_distribution(const result_type& alpha_arg = result_type(1.0),
+ const result_type& beta_arg = result_type(1.0))
+ : _exp(result_type(1)), _alpha(alpha_arg), _beta(beta_arg)
+ {
+ BOOST_ASSERT(_alpha > result_type(0));
+ BOOST_ASSERT(_beta > result_type(0));
+ init();
+ }
+
+ /** Constructs a @c gamma_distribution from its parameters. */
+ explicit gamma_distribution(const param_type& parm)
+ : _exp(result_type(1)), _alpha(parm.alpha()), _beta(parm.beta())
+ {
+ init();
+ }
- // compiler-generated copy ctor and assignment operator are fine
+ // compiler-generated copy ctor and assignment operator are fine
- RealType alpha() const { return _alpha; }
+ /** Returns the "alpha" paramter of the distribution. */
+ RealType alpha() const { return _alpha; }
+ /** Returns the "beta" parameter of the distribution. */
+ RealType beta() const { return _beta; }
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return 0; }
+ /* Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return (std::numeric_limits<RealType>::infinity)(); }
- void reset() { _exp.reset(); }
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_alpha, _beta); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _alpha = parm.alpha();
+ _beta = parm.beta();
+ init();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { _exp.reset(); }
- template<class Engine>
- result_type operator()(Engine& eng)
- {
+ /**
+ * Returns a random variate distributed according to
+ * the gamma distribution.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng)
+ {
#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::tan; using std::sqrt; using std::exp; using std::log;
- using std::pow;
+ // allow for Koenig lookup
+ using std::tan; using std::sqrt; using std::exp; using std::log;
+ using std::pow;
#endif
- if(_alpha == result_type(1)) {
- return _exp(eng);
- } else if(_alpha > result_type(1)) {
- // Can we have a boost::mathconst please?
- const result_type pi = result_type(3.14159265358979323846);
- for(;;) {
- result_type y = tan(pi * eng());
- result_type x = sqrt(result_type(2)*_alpha-result_type(1))*y
- + _alpha-result_type(1);
- if(x <= result_type(0))
- continue;
- if(eng() >
- (result_type(1)+y*y) * exp((_alpha-result_type(1))
- *log(x/(_alpha-result_type(1)))
- - sqrt(result_type(2)*_alpha
- -result_type(1))*y))
- continue;
- return x;
- }
- } else /* alpha < 1.0 */ {
- for(;;) {
- result_type u = eng();
- result_type y = _exp(eng);
- result_type x, q;
- if(u < _p) {
- x = exp(-y/_alpha);
- q = _p*exp(-x);
- } else {
- x = result_type(1)+y;
- q = _p + (result_type(1)-_p) * pow(x, _alpha-result_type(1));
+ if(_alpha == result_type(1)) {
+ return _exp(eng) * _beta;
+ } else if(_alpha > result_type(1)) {
+ // Can we have a boost::mathconst please?
+ const result_type pi = result_type(3.14159265358979323846);
+ for(;;) {
+ result_type y = tan(pi * uniform_01<RealType>()(eng));
+ result_type x = sqrt(result_type(2)*_alpha-result_type(1))*y
+ + _alpha-result_type(1);
+ if(x <= result_type(0))
+ continue;
+ if(uniform_01<RealType>()(eng) >
+ (result_type(1)+y*y) * exp((_alpha-result_type(1))
+ *log(x/(_alpha-result_type(1)))
+ - sqrt(result_type(2)*_alpha
+ -result_type(1))*y))
+ continue;
+ return x * _beta;
+ }
+ } else /* alpha < 1.0 */ {
+ for(;;) {
+ result_type u = uniform_01<RealType>()(eng);
+ result_type y = _exp(eng);
+ result_type x, q;
+ if(u < _p) {
+ x = exp(-y/_alpha);
+ q = _p*exp(-x);
+ } else {
+ x = result_type(1)+y;
+ q = _p + (result_type(1)-_p) * pow(x,_alpha-result_type(1));
+ }
+ if(u >= q)
+ continue;
+ return x * _beta;
+ }
}
- if(u >= q)
- continue;
- return x;
- }
}
- }
+
+ template<class URNG>
+ RealType operator()(URNG& urng, const param_type& parm) const
+ {
+ return gamma_distribution(parm)(urng);
+ }
#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const gamma_distribution& gd)
- {
- os << gd._alpha;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, gamma_distribution& gd)
- {
- is >> std::ws >> gd._alpha;
- gd.init();
- return is;
- }
+ /** Writes a @c gamma_distribution to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const gamma_distribution& gd)
+ {
+ os << gd.param();
+ return os;
+ }
+
+ /** Reads a @c gamma_distribution from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is, gamma_distribution& gd)
+ {
+ gd.read(is);
+ return is;
+ }
#endif
+ /**
+ * Returns true if the two distributions will produce identical
+ * sequences of random variates given equal generators.
+ */
+ friend bool operator==(const gamma_distribution& lhs,
+ const gamma_distribution& rhs)
+ {
+ return lhs._alpha == rhs._alpha
+ && lhs._beta == rhs._beta
+ && lhs._exp == rhs._exp;
+ }
+
+ /**
+ * Returns true if the two distributions can produce different
+ * sequences of random variates, given equal generators.
+ */
+ friend bool operator!=(const gamma_distribution& lhs,
+ const gamma_distribution& rhs)
+ {
+ return !(lhs == rhs);
+ }
+
private:
- /// \cond hide_private_members
- void init()
- {
+ /// \cond hide_private_members
+
+ template<class CharT, class Traits>
+ void read(std::basic_istream<CharT, Traits>& is)
+ {
+ param_type parm;
+ if(is >> parm) {
+ param(parm);
+ }
+ }
+
+ void init()
+ {
#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::exp;
+ // allow for Koenig lookup
+ using std::exp;
#endif
- _p = exp(result_type(1)) / (_alpha + exp(result_type(1)));
- }
- /// \endcond
-
- exponential_distribution<RealType> _exp;
- result_type _alpha;
- // some data precomputed from the parameters
- result_type _p;
+ _p = exp(result_type(1)) / (_alpha + exp(result_type(1)));
+ }
+ /// \endcond
+
+ exponential_distribution<RealType> _exp;
+ result_type _alpha;
+ result_type _beta;
+ // some data precomputed from the parameters
+ result_type _p;
};
+
+} // namespace random
+
+using random::gamma_distribution;
+
} // namespace boost
#endif // BOOST_RANDOM_GAMMA_DISTRIBUTION_HPP
--- /dev/null
+/* boost random/generate_canonical.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: generate_canonical.hpp 72951 2011-07-07 04:57:37Z steven_watanabe $
+ *
+ */
+
+#ifndef BOOST_RANDOM_GENERATE_CANONICAL_HPP
+#define BOOST_RANDOM_GENERATE_CANONICAL_HPP
+
+#include <algorithm>
+#include <boost/assert.hpp>
+#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/limits.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/math/special_functions.hpp>
+#include <boost/random/detail/signed_unsigned_tools.hpp>
+#include <boost/random/detail/generator_bits.hpp>
+
+namespace boost {
+namespace random {
+
+namespace detail {
+
+template<class RealType, std::size_t bits, class URNG>
+RealType generate_canonical_impl(URNG& g, boost::mpl::true_ /*is_integral*/)
+{
+ using std::pow;
+ typedef typename URNG::result_type base_result;
+ std::size_t digits = std::numeric_limits<RealType>::digits;
+ RealType R = RealType((g.max)()) - RealType((g.min)()) + 1;
+ RealType mult = R;
+ RealType limit =
+ pow(RealType(2),
+ RealType((std::min)(static_cast<std::size_t>(bits), digits)));
+ RealType S = RealType(detail::subtract<base_result>()(g(), (g.min)()));
+ while(mult < limit) {
+ RealType inc = RealType(detail::subtract<base_result>()(g(), (g.min)()));
+ S += inc * mult;
+ mult *= R;
+ }
+ return S / mult;
+}
+
+template<class RealType, std::size_t bits, class URNG>
+RealType generate_canonical_impl(URNG& g, boost::mpl::false_ /*is_integral*/)
+{
+ using std::pow;
+ using std::floor;
+ BOOST_ASSERT((g.min)() == 0);
+ BOOST_ASSERT((g.max)() == 1);
+ typedef typename URNG::result_type base_result;
+ std::size_t digits = std::numeric_limits<RealType>::digits;
+ std::size_t engine_bits = detail::generator_bits<URNG>::value();
+ std::size_t b = (std::min)(bits, digits);
+ RealType R = pow(RealType(2), RealType(engine_bits));
+ RealType mult = R;
+ RealType limit = pow(RealType(2), RealType(b));
+ RealType S = RealType(g() - (g.min)());
+ while(mult < limit) {
+ RealType inc(floor((RealType(g()) - RealType((g.min)())) * R));
+ S += inc * mult;
+ mult *= R;
+ }
+ return S / mult;
+}
+
+}
+
+/**
+ * Returns a value uniformly distributed in the range [0, 1)
+ * with at least @c bits random bits.
+ */
+template<class RealType, std::size_t bits, class URNG>
+RealType generate_canonical(URNG& g)
+{
+ RealType result = detail::generate_canonical_impl<RealType, bits>(
+ g, boost::is_integral<typename URNG::result_type>());
+ BOOST_ASSERT(result >= 0);
+ BOOST_ASSERT(result <= 1);
+ if(result == 1) {
+ result -= std::numeric_limits<RealType>::epsilon() / 2;
+ BOOST_ASSERT(result != 1);
+ }
+ return result;
+}
+
+} // namespace random
+} // namespace boost
+
+#endif // BOOST_RANDOM_GENERATE_CANONICAL_HPP
/* boost random/geometric_distribution.hpp header file
*
* Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: geometric_distribution.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: geometric_distribution.hpp 74867 2011-10-09 23:13:31Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#define BOOST_RANDOM_GEOMETRIC_DISTRIBUTION_HPP
#include <boost/config/no_tr1/cmath.hpp> // std::log
-#include <cassert>
-#include <iostream>
+#include <iosfwd>
+#include <ios>
+#include <boost/assert.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
#include <boost/random/uniform_01.hpp>
namespace boost {
-
-#if defined(__GNUC__) && (__GNUC__ < 3)
-// Special gcc workaround: gcc 2.95.x ignores using-declarations
-// in template classes (confirmed by gcc author Martin v. Loewis)
- using std::log;
-#endif
+namespace random {
/**
* An instantiation of the class template @c geometric_distribution models
* integers which are the number of bernoulli trials
* with probability @c p required to get one that fails.
*
- * For the geometric distribution, \f$p(i) = (1-p) p^{i-1}\f$.
+ * For the geometric distribution, \f$p(i) = p(1-p)^{i}\f$.
+ *
+ * @xmlwarning
+ * This distribution has been updated to match the C++ standard.
+ * Its behavior has changed from the original
+ * boost::geometric_distribution. A backwards compatible
+ * wrapper is provided in namespace boost.
+ * @endxmlwarning
*/
template<class IntType = int, class RealType = double>
class geometric_distribution
{
public:
- typedef RealType input_type;
- typedef IntType result_type;
-
- /**
- * Contructs a new geometric_distribution with the paramter @c p.
- *
- * Requires: 0 < p < 1
- */
- explicit geometric_distribution(const RealType& p = RealType(0.5))
- : _p(p)
- {
- assert(RealType(0) < _p && _p < RealType(1));
- init();
- }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- /**
- * Returns: the distribution parameter @c p
- */
- RealType p() const { return _p; }
- void reset() { }
-
- template<class Engine>
- result_type operator()(Engine& eng)
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- using std::log;
- using std::floor;
-#endif
- return IntType(floor(log(RealType(1)-eng()) / _log_p)) + IntType(1);
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const geometric_distribution& gd)
- {
- os << gd._p;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, geometric_distribution& gd)
- {
- is >> std::ws >> gd._p;
- gd.init();
- return is;
- }
-#endif
+ typedef RealType input_type;
+ typedef IntType result_type;
+
+ class param_type
+ {
+ public:
+
+ typedef geometric_distribution distribution_type;
+
+ /** Constructs the parameters with p. */
+ explicit param_type(RealType p_arg = RealType(0.5))
+ : _p(p_arg)
+ {
+ BOOST_ASSERT(RealType(0) < _p && _p < RealType(1));
+ }
+
+ /** Returns the p parameter of the distribution. */
+ RealType p() const { return _p; }
+
+ /** Writes the parameters to a std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ os << parm._p;
+ return os;
+ }
+
+ /** Reads the parameters from a std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ double p_in;
+ if(is >> p_in) {
+ if(p_in > RealType(0) && p_in < RealType(1)) {
+ parm._p = p_in;
+ } else {
+ is.setstate(std::ios_base::failbit);
+ }
+ }
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are equal. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._p == rhs._p; }
+
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+
+ private:
+ RealType _p;
+ };
+
+ /**
+ * Contructs a new geometric_distribution with the paramter @c p.
+ *
+ * Requires: 0 < p < 1
+ */
+ explicit geometric_distribution(const RealType& p = RealType(0.5))
+ : _p(p)
+ {
+ BOOST_ASSERT(RealType(0) < _p && _p < RealType(1));
+ init();
+ }
+
+ /** Constructs a new geometric_distribution from its parameters. */
+ explicit geometric_distribution(const param_type& parm)
+ : _p(parm.p())
+ {
+ init();
+ }
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Returns: the distribution parameter @c p */
+ RealType p() const { return _p; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ IntType min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return IntType(0); }
+
+ /** Returns the largest value that the distribution can produce. */
+ IntType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return (std::numeric_limits<IntType>::max)(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_p); }
+
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _p = parm.p();
+ init();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /**
+ * Returns a random variate distributed according to the
+ * geometric_distribution.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng) const
+ {
+ using std::log;
+ using std::floor;
+ RealType x = RealType(1) - boost::uniform_01<RealType>()(eng);
+ return IntType(floor(log(x) / _log_1mp));
+ }
+
+ /**
+ * Returns a random variate distributed according to the
+ * geometric distribution with parameters specified by param.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng, const param_type& parm) const
+ { return geometric_distribution(parm)(eng); }
+
+ /** Writes the distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, geometric_distribution, gd)
+ {
+ os << gd._p;
+ return os;
+ }
+
+ /** Reads the distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, geometric_distribution, gd)
+ {
+ param_type parm;
+ if(is >> parm) {
+ gd.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two distributions will produce identical
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(geometric_distribution, lhs, rhs)
+ { return lhs._p == rhs._p; }
+
+ /**
+ * Returns true if the two distributions may produce different
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(geometric_distribution)
private:
- /// \cond hide_private_functions
+ /// \cond show_private
- void init()
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- using std::log;
-#endif
- _log_p = log(_p);
- }
+ void init()
+ {
+ using std::log;
+ _log_1mp = log(1 - _p);
+ }
- /// \endcond
+ RealType _p;
+ RealType _log_1mp;
- RealType _p;
- RealType _log_p;
+ /// \endcond
};
+} // namespace random
+
+/// \cond show_deprecated
+
+/**
+ * Provided for backwards compatibility. This class is
+ * deprecated. It provides the old behavior of geometric_distribution
+ * with \f$p(i) = (1-p) p^{i-1}\f$.
+ */
+template<class IntType = int, class RealType = double>
+class geometric_distribution
+{
+public:
+ typedef RealType input_type;
+ typedef IntType result_type;
+
+ explicit geometric_distribution(RealType p_arg = RealType(0.5))
+ : _impl(1 - p_arg) {}
+
+ RealType p() const { return 1 - _impl.p(); }
+
+ void reset() {}
+
+ template<class Engine>
+ IntType operator()(Engine& eng) const { return _impl(eng) + IntType(1); }
+
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, geometric_distribution, gd)
+ {
+ os << gd.p();
+ return os;
+ }
+
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, geometric_distribution, gd)
+ {
+ RealType val;
+ if(is >> val) {
+ typename impl_type::param_type impl_param(1 - val);
+ gd._impl.param(impl_param);
+ }
+ return is;
+ }
+
+private:
+ typedef random::geometric_distribution<IntType, RealType> impl_type;
+ impl_type _impl;
+};
+
+/// \endcond
+
} // namespace boost
#endif // BOOST_RANDOM_GEOMETRIC_DISTRIBUTION_HPP
-
--- /dev/null
+/* boost random/independent_bits.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: independent_bits.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ *
+ */
+
+#ifndef BOOST_RANDOM_INDEPENDENT_BITS_HPP
+#define BOOST_RANDOM_INDEPENDENT_BITS_HPP
+
+#include <istream>
+#include <iosfwd>
+#include <boost/assert.hpp>
+#include <boost/limits.hpp>
+#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/integer/integer_mask.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/integer_log2.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/seed.hpp>
+#include <boost/random/detail/seed_impl.hpp>
+#include <boost/random/detail/signed_unsigned_tools.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * An instantiation of class template @c independent_bits_engine
+ * model a \pseudo_random_number_generator. It generates random
+ * numbers distributed between [0, 2^w) by combining one or
+ * more invocations of the base engine.
+ *
+ * Requires: 0 < w <= std::numeric_limits<UIntType>::digits
+ */
+template<class Engine, std::size_t w, class UIntType>
+class independent_bits_engine
+{
+public:
+ typedef Engine base_type;
+ typedef UIntType result_type;
+
+ // Required by old Boost.Random concept
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+
+ /** Returns the smallest value that the generator can produce. */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return 0; }
+ /** Returns the largest value that the generator can produce. */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return boost::low_bits_mask_t<w>::sig_bits; }
+
+ /**
+ * Constructs an @c independent_bits_engine using the
+ * default constructor of the base generator.
+ */
+ independent_bits_engine() { }
+
+ /**
+ * Constructs an @c independent_bits_engine, using seed as
+ * the constructor argument for both base generators.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(independent_bits_engine,
+ result_type, seed_arg)
+ {
+ _base.seed(seed_arg);
+ }
+
+ /**
+ * Constructs an @c independent_bits_engine, using seq as
+ * the constructor argument for the base generator.
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(independent_bits_engine,
+ SeedSeq, seq)
+ { _base.seed(seq); }
+
+ /** Constructs an @c independent_bits_engine by copying @c base. */
+ independent_bits_engine(const base_type& base_arg) : _base(base_arg) {}
+
+ /**
+ * Contructs an @c independent_bits_engine with
+ * values from the range defined by the input iterators first
+ * and last. first will be modified to point to the element
+ * after the last one used.
+ *
+ * Throws: @c std::invalid_argument if the input range is too small.
+ *
+ * Exception Safety: Basic
+ */
+ template<class It>
+ independent_bits_engine(It& first, It last) : _base(first, last) { }
+
+ /**
+ * Seeds an @c independent_bits_engine using the default
+ * seed of the base generator.
+ */
+ void seed() { _base.seed(); }
+
+ /**
+ * Seeds an @c independent_bits_engine, using @c seed as the
+ * seed for the base generator.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(independent_bits_engine,
+ result_type, seed_arg)
+ { _base.seed(seed_arg); }
+
+ /**
+ * Seeds an @c independent_bits_engine, using @c seq to
+ * seed the base generator.
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(independent_bits_engine,
+ SeedSeq, seq)
+ { _base.seed(seq); }
+
+ /**
+ * Seeds an @c independent_bits_engine with
+ * values from the range defined by the input iterators first
+ * and last. first will be modified to point to the element
+ * after the last one used.
+ *
+ * Throws: @c std::invalid_argument if the input range is too small.
+ *
+ * Exception Safety: Basic
+ */
+ template<class It> void seed(It& first, It last)
+ { _base.seed(first, last); }
+
+ /** Returns the next value of the generator. */
+ result_type operator()()
+ {
+ // While it may seem wasteful to recalculate this
+ // every time, both msvc and gcc can propagate
+ // constants, resolving this at compile time.
+ base_unsigned range =
+ detail::subtract<base_result>()((_base.max)(), (_base.min)());
+ std::size_t m =
+ (range == (std::numeric_limits<base_unsigned>::max)()) ?
+ std::numeric_limits<base_unsigned>::digits :
+ detail::integer_log2(range + 1);
+ std::size_t n = (w + m - 1) / m;
+ std::size_t w0, n0;
+ base_unsigned y0, y1;
+ base_unsigned y0_mask, y1_mask;
+ calc_params(n, range, w0, n0, y0, y1, y0_mask, y1_mask);
+ if(base_unsigned(range - y0 + 1) > y0 / n) {
+ // increment n and try again.
+ ++n;
+ calc_params(n, range, w0, n0, y0, y1, y0_mask, y1_mask);
+ }
+
+ BOOST_ASSERT(n0*w0 + (n - n0)*(w0 + 1) == w);
+
+ result_type S = 0;
+ for(std::size_t k = 0; k < n0; ++k) {
+ base_unsigned u;
+ do {
+ u = detail::subtract<base_result>()(_base(), (_base.min)());
+ } while(u > base_unsigned(y0 - 1));
+ S = (S << w0) + (u & y0_mask);
+ }
+ for(std::size_t k = 0; k < (n - n0); ++k) {
+ base_unsigned u;
+ do {
+ u = detail::subtract<base_result>()(_base(), (_base.min)());
+ } while(u > base_unsigned(y1 - 1));
+ S = (S << (w0 + 1)) + (u & y1_mask);
+ }
+ return S;
+ }
+
+ /** Fills a range with random values */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { detail::generate_from_int(*this, first, last); }
+
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z)
+ {
+ for(boost::uintmax_t i = 0; i < z; ++i) {
+ (*this)();
+ }
+ }
+
+ const base_type& base() const { return _base; }
+
+ /**
+ * Writes the textual representation if the generator to a @c std::ostream.
+ * The textual representation of the engine is the textual representation
+ * of the base engine.
+ */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, independent_bits_engine, r)
+ {
+ os << r._base;
+ return os;
+ }
+
+ /**
+ * Reads the state of an @c independent_bits_engine from a
+ * @c std::istream.
+ */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, independent_bits_engine, r)
+ {
+ is >> r._base;
+ return is;
+ }
+
+ /**
+ * Returns: true iff the two @c independent_bits_engines will
+ * produce the same sequence of values.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(independent_bits_engine, x, y)
+ { return x._base == y._base; }
+ /**
+ * Returns: true iff the two @c independent_bits_engines will
+ * produce different sequences of values.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(independent_bits_engine)
+
+private:
+
+ /// \cond show_private
+ typedef typename base_type::result_type base_result;
+ typedef typename make_unsigned<base_result>::type base_unsigned;
+
+ void calc_params(
+ std::size_t n, base_unsigned range,
+ std::size_t& w0, std::size_t& n0,
+ base_unsigned& y0, base_unsigned& y1,
+ base_unsigned& y0_mask, base_unsigned& y1_mask)
+ {
+ BOOST_ASSERT(w >= n);
+ w0 = w/n;
+ n0 = n - w % n;
+ y0_mask = (base_unsigned(2) << (w0 - 1)) - 1;
+ y1_mask = (y0_mask << 1) | 1;
+ y0 = (range + 1) & ~y0_mask;
+ y1 = (range + 1) & ~y1_mask;
+ BOOST_ASSERT(y0 != 0 || base_unsigned(range + 1) == 0);
+ }
+ /// \endcond
+
+ Engine _base;
+};
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+template<class Engine, std::size_t w, class UIntType>
+const bool independent_bits_engine<Engine, w, UIntType>::has_fixed_range;
+#endif
+
+} // namespace random
+} // namespace boost
+
+#endif // BOOST_RANDOM_INDEPENDENT_BITS_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: inversive_congruential.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: inversive_congruential.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#ifndef BOOST_RANDOM_INVERSIVE_CONGRUENTIAL_HPP
#define BOOST_RANDOM_INVERSIVE_CONGRUENTIAL_HPP
-#include <iostream>
-#include <cassert>
+#include <iosfwd>
#include <stdexcept>
+#include <boost/assert.hpp>
#include <boost/config.hpp>
-#include <boost/static_assert.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/integer/static_log2.hpp>
#include <boost/random/detail/config.hpp>
#include <boost/random/detail/const_mod.hpp>
+#include <boost/random/detail/seed.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/seed_impl.hpp>
+
+#include <boost/random/detail/disable_warnings.hpp>
namespace boost {
namespace random {
// Eichenauer and Lehn 1986
/**
- * Instantiations of class template @c inversive_congruential model a
+ * Instantiations of class template @c inversive_congruential_engine model a
* \pseudo_random_number_generator. It uses the inversive congruential
* algorithm (ICG) described in
*
* not optimal for calculating the multiplicative inverse.
* @endxmlnote
*/
-template<class IntType, IntType a, IntType b, IntType p, IntType val>
-class inversive_congruential
+template<class IntType, IntType a, IntType b, IntType p>
+class inversive_congruential_engine
{
public:
- typedef IntType result_type;
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
- static const bool has_fixed_range = true;
- static const result_type min_value = (b == 0 ? 1 : 0);
- static const result_type max_value = p-1;
-#else
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
-#endif
- BOOST_STATIC_CONSTANT(result_type, multiplier = a);
- BOOST_STATIC_CONSTANT(result_type, increment = b);
- BOOST_STATIC_CONSTANT(result_type, modulus = p);
-
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return b == 0 ? 1 : 0; }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return p-1; }
-
- /**
- * Constructs an inversive_congruential generator with
- * @c y0 as the initial state.
- */
- explicit inversive_congruential(IntType y0 = 1) : value(y0)
- {
- BOOST_STATIC_ASSERT(b >= 0);
- BOOST_STATIC_ASSERT(p > 1);
- BOOST_STATIC_ASSERT(a >= 1);
- if(b == 0)
- assert(y0 > 0);
- }
- template<class It> inversive_congruential(It& first, It last)
- { seed(first, last); }
-
- /** Changes the current state to y0. */
- void seed(IntType y0 = 1) { value = y0; if(b == 0) assert(y0 > 0); }
- template<class It> void seed(It& first, It last)
- {
- if(first == last)
- throw std::invalid_argument("inversive_congruential::seed");
- value = *first++;
- }
- IntType operator()()
- {
- typedef const_mod<IntType, p> do_mod;
- value = do_mod::mult_add(a, do_mod::invert(value), b);
- return value;
- }
-
- static bool validation(result_type x) { return val == x; }
-
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, inversive_congruential x)
- { os << x.value; return os; }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, inversive_congruential& x)
- { is >> x.value; return is; }
-#endif
+ typedef IntType result_type;
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+
+ BOOST_STATIC_CONSTANT(result_type, multiplier = a);
+ BOOST_STATIC_CONSTANT(result_type, increment = b);
+ BOOST_STATIC_CONSTANT(result_type, modulus = p);
+ BOOST_STATIC_CONSTANT(IntType, default_seed = 1);
+
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return b == 0 ? 1 : 0; }
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () { return p-1; }
+
+ /**
+ * Constructs an @c inversive_congruential_engine, seeding it with
+ * the default seed.
+ */
+ inversive_congruential_engine() { seed(); }
+
+ /**
+ * Constructs an @c inversive_congruential_engine, seeding it with @c x0.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(inversive_congruential_engine,
+ IntType, x0)
+ { seed(x0); }
+
+ /**
+ * Constructs an @c inversive_congruential_engine, seeding it with values
+ * produced by a call to @c seq.generate().
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(inversive_congruential_engine,
+ SeedSeq, seq)
+ { seed(seq); }
+
+ /**
+ * Constructs an @c inversive_congruential_engine, seeds it
+ * with values taken from the itrator range [first, last),
+ * and adjusts first to point to the element after the last one
+ * used. If there are not enough elements, throws @c std::invalid_argument.
+ *
+ * first and last must be input iterators.
+ */
+ template<class It> inversive_congruential_engine(It& first, It last)
+ { seed(first, last); }
+
+ /**
+ * Calls seed(default_seed)
+ */
+ void seed() { seed(default_seed); }
+
+ /**
+ * If c mod m is zero and x0 mod m is zero, changes the current value of
+ * the generator to 1. Otherwise, changes it to x0 mod m. If c is zero,
+ * distinct seeds in the range [1,m) will leave the generator in distinct
+ * states. If c is not zero, the range is [0,m).
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(inversive_congruential_engine, IntType, x0)
+ {
+ // wrap _x if it doesn't fit in the destination
+ if(modulus == 0) {
+ _value = x0;
+ } else {
+ _value = x0 % modulus;
+ }
+ // handle negative seeds
+ if(_value <= 0 && _value != 0) {
+ _value += modulus;
+ }
+ // adjust to the correct range
+ if(increment == 0 && _value == 0) {
+ _value = 1;
+ }
+ BOOST_ASSERT(_value >= (min)());
+ BOOST_ASSERT(_value <= (max)());
+ }
+
+ /**
+ * Seeds an @c inversive_congruential_engine using values from a SeedSeq.
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(inversive_congruential_engine, SeedSeq, seq)
+ { seed(detail::seed_one_int<IntType, modulus>(seq)); }
+
+ /**
+ * seeds an @c inversive_congruential_engine with values taken
+ * from the itrator range [first, last) and adjusts @c first to
+ * point to the element after the last one used. If there are
+ * not enough elements, throws @c std::invalid_argument.
+ *
+ * @c first and @c last must be input iterators.
+ */
+ template<class It> void seed(It& first, It last)
+ { seed(detail::get_one_int<IntType, modulus>(first, last)); }
+
+ /** Returns the next output of the generator. */
+ IntType operator()()
+ {
+ typedef const_mod<IntType, p> do_mod;
+ _value = do_mod::mult_add(a, do_mod::invert(_value), b);
+ return _value;
+ }
+
+ /** Fills a range with random values */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { detail::generate_from_int(*this, first, last); }
+
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z)
+ {
+ for(boost::uintmax_t j = 0; j < z; ++j) {
+ (*this)();
+ }
+ }
+
+ /**
+ * Writes the textual representation of the generator to a @c std::ostream.
+ */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, inversive_congruential_engine, x)
+ {
+ os << x._value;
+ return os;
+ }
+
+ /**
+ * Reads the textual representation of the generator from a @c std::istream.
+ */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, inversive_congruential_engine, x)
+ {
+ is >> x._value;
+ return is;
+ }
+
+ /**
+ * Returns true if the two generators will produce identical
+ * sequences of outputs.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(inversive_congruential_engine, x, y)
+ { return x._value == y._value; }
+
+ /**
+ * Returns true if the two generators will produce different
+ * sequences of outputs.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(inversive_congruential_engine)
- friend bool operator==(inversive_congruential x, inversive_congruential y)
- { return x.value == y.value; }
- friend bool operator!=(inversive_congruential x, inversive_congruential y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(inversive_congruential rhs) const
- { return value == rhs.value; }
- bool operator!=(inversive_congruential rhs) const
- { return !(*this == rhs); }
-#endif
private:
- IntType value;
+ IntType _value;
};
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
// A definition is required even for integral static constants
-template<class IntType, IntType a, IntType b, IntType p, IntType val>
-const bool inversive_congruential<IntType, a, b, p, val>::has_fixed_range;
-template<class IntType, IntType a, IntType b, IntType p, IntType val>
-const typename inversive_congruential<IntType, a, b, p, val>::result_type inversive_congruential<IntType, a, b, p, val>::min_value;
-template<class IntType, IntType a, IntType b, IntType p, IntType val>
-const typename inversive_congruential<IntType, a, b, p, val>::result_type inversive_congruential<IntType, a, b, p, val>::max_value;
-template<class IntType, IntType a, IntType b, IntType p, IntType val>
-const typename inversive_congruential<IntType, a, b, p, val>::result_type inversive_congruential<IntType, a, b, p, val>::multiplier;
-template<class IntType, IntType a, IntType b, IntType p, IntType val>
-const typename inversive_congruential<IntType, a, b, p, val>::result_type inversive_congruential<IntType, a, b, p, val>::increment;
-template<class IntType, IntType a, IntType b, IntType p, IntType val>
-const typename inversive_congruential<IntType, a, b, p, val>::result_type inversive_congruential<IntType, a, b, p, val>::modulus;
+template<class IntType, IntType a, IntType b, IntType p>
+const bool inversive_congruential_engine<IntType, a, b, p>::has_fixed_range;
+template<class IntType, IntType a, IntType b, IntType p>
+const typename inversive_congruential_engine<IntType, a, b, p>::result_type inversive_congruential_engine<IntType, a, b, p>::multiplier;
+template<class IntType, IntType a, IntType b, IntType p>
+const typename inversive_congruential_engine<IntType, a, b, p>::result_type inversive_congruential_engine<IntType, a, b, p>::increment;
+template<class IntType, IntType a, IntType b, IntType p>
+const typename inversive_congruential_engine<IntType, a, b, p>::result_type inversive_congruential_engine<IntType, a, b, p>::modulus;
+template<class IntType, IntType a, IntType b, IntType p>
+const typename inversive_congruential_engine<IntType, a, b, p>::result_type inversive_congruential_engine<IntType, a, b, p>::default_seed;
#endif
-} // namespace random
+/// \cond show_deprecated
+
+// provided for backwards compatibility
+template<class IntType, IntType a, IntType b, IntType p, IntType val = 0>
+class inversive_congruential : public inversive_congruential_engine<IntType, a, b, p>
+{
+ typedef inversive_congruential_engine<IntType, a, b, p> base_type;
+public:
+ inversive_congruential(IntType x0 = 1) : base_type(x0) {}
+ template<class It>
+ inversive_congruential(It& first, It last) : base_type(first, last) {}
+};
+
+/// \endcond
/**
* The specialization hellekalek1995 was suggested in
* (editors), 1995, pp. 255-262. ftp://random.mat.sbg.ac.at/pub/data/wsc95.ps
* @endblockquote
*/
-typedef random::inversive_congruential<int32_t, 9102, 2147483647-36884165,
- 2147483647, 0> hellekalek1995;
+typedef inversive_congruential_engine<uint32_t, 9102, 2147483647-36884165,
+ 2147483647> hellekalek1995;
+
+} // namespace random
+
+using random::hellekalek1995;
} // namespace boost
+#include <boost/random/detail/enable_warnings.hpp>
+
#endif // BOOST_RANDOM_INVERSIVE_CONGRUENTIAL_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: lagged_fibonacci.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: lagged_fibonacci.hpp 72951 2011-07-07 04:57:37Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#ifndef BOOST_RANDOM_LAGGED_FIBONACCI_HPP
#define BOOST_RANDOM_LAGGED_FIBONACCI_HPP
-#include <boost/config/no_tr1/cmath.hpp>
-#include <iostream>
+#include <istream>
+#include <iosfwd>
#include <algorithm> // std::max
#include <iterator>
#include <boost/config/no_tr1/cmath.hpp> // std::pow
#include <boost/config.hpp>
#include <boost/limits.hpp>
#include <boost/cstdint.hpp>
-#include <boost/detail/workaround.hpp>
+#include <boost/integer/integer_mask.hpp>
#include <boost/random/linear_congruential.hpp>
#include <boost/random/uniform_01.hpp>
#include <boost/random/detail/config.hpp>
#include <boost/random/detail/seed.hpp>
-#include <boost/random/detail/pass_through_engine.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/generator_seed_seq.hpp>
namespace boost {
namespace random {
-#if BOOST_WORKAROUND(_MSC_FULL_VER, BOOST_TESTED_AT(13102292)) && BOOST_MSVC > 1300
-# define BOOST_RANDOM_EXTRACT_LF
-#endif
-
-#if defined(__APPLE_CC__) && defined(__GNUC__) && (__GNUC__ == 3) && (__GNUC_MINOR__ <= 3)
-# define BOOST_RANDOM_EXTRACT_LF
-#endif
-
-# ifdef BOOST_RANDOM_EXTRACT_LF
-namespace detail
-{
- template<class IStream, class F, class RealType>
- IStream&
- extract_lagged_fibonacci_01(
- IStream& is
- , F const& f
- , unsigned int& i
- , RealType* x
- , RealType modulus)
- {
- is >> i >> std::ws;
- for(unsigned int i = 0; i < f.long_lag; ++i)
- {
- RealType value;
- is >> value >> std::ws;
- x[i] = value / modulus;
- }
- return is;
- }
-
- template<class IStream, class F, class UIntType>
- IStream&
- extract_lagged_fibonacci(
- IStream& is
- , F const& f
- , unsigned int& i
- , UIntType* x)
- {
- is >> i >> std::ws;
- for(unsigned int i = 0; i < f.long_lag; ++i)
- is >> x[i] >> std::ws;
- return is;
- }
-}
-# endif
-
/**
- * Instantiations of class template \lagged_fibonacci model a
+ * Instantiations of class template \lagged_fibonacci_engine model a
* \pseudo_random_number_generator. It uses a lagged Fibonacci
* algorithm with two lags @c p and @c q:
* x(i) = x(i-p) + x(i-q) (mod 2<sup>w</sup>) with p > q.
*/
-template<class UIntType, int w, unsigned int p, unsigned int q,
- UIntType val = 0>
-class lagged_fibonacci
+template<class UIntType, int w, unsigned int p, unsigned int q>
+class lagged_fibonacci_engine
{
public:
- typedef UIntType result_type;
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
- BOOST_STATIC_CONSTANT(int, word_size = w);
- BOOST_STATIC_CONSTANT(unsigned int, long_lag = p);
- BOOST_STATIC_CONSTANT(unsigned int, short_lag = q);
-
- /**
- * Returns: the smallest value that the generator can produce
- */
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return 0; }
- /**
- * Returns: the largest value that the generator can produce
- */
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return wordmask; }
-
- /**
- * Creates a new @c lagged_fibonacci generator and calls @c seed()
- */
- lagged_fibonacci() { init_wordmask(); seed(); }
- /**
- * Creates a new @c lagged_fibonacci generator and calls @c seed(value)
- */
- explicit lagged_fibonacci(uint32_t value) { init_wordmask(); seed(value); }
- /**
- * Creates a new @c lagged_fibonacci generator and calls @c seed(first, last)
- */
- template<class It> lagged_fibonacci(It& first, It last)
- { init_wordmask(); seed(first, last); }
- // compiler-generated copy ctor and assignment operator are fine
+ typedef UIntType result_type;
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ BOOST_STATIC_CONSTANT(int, word_size = w);
+ BOOST_STATIC_CONSTANT(unsigned int, long_lag = p);
+ BOOST_STATIC_CONSTANT(unsigned int, short_lag = q);
+
+ BOOST_STATIC_CONSTANT(UIntType, default_seed = 331u);
+
+ /** Returns the smallest value that the generator can produce. */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }
+ /** Returns the largest value that the generator can produce. */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return low_bits_mask_t<w>::sig_bits; }
+
+ /** Creates a new @c lagged_fibonacci_engine and calls @c seed(). */
+ lagged_fibonacci_engine() { seed(); }
+
+ /** Creates a new @c lagged_fibonacci_engine and calls @c seed(value). */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(lagged_fibonacci_engine,
+ UIntType, value)
+ { seed(value); }
+
+ /** Creates a new @c lagged_fibonacci_engine and calls @c seed(seq). */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(lagged_fibonacci_engine,
+ SeedSeq, seq)
+ { seed(seq); }
+
+ /**
+ * Creates a new @c lagged_fibonacci_engine and calls @c seed(first, last).
+ */
+ template<class It> lagged_fibonacci_engine(It& first, It last)
+ { seed(first, last); }
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Calls @c seed(default_seed). */
+ void seed() { seed(default_seed); }
+
+ /**
+ * Sets the state of the generator to values produced by
+ * a \minstd_rand0 generator.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(lagged_fibonacci_engine,
+ UIntType, value)
+ {
+ minstd_rand0 intgen(static_cast<boost::uint32_t>(value));
+ detail::generator_seed_seq<minstd_rand0> gen(intgen);
+ seed(gen);
+ }
-private:
- /// \cond hide_private_members
- void init_wordmask()
- {
- wordmask = 0;
- for(int j = 0; j < w; ++j)
- wordmask |= (1u << j);
- }
- /// \endcond
+ /**
+ * Sets the state of the generator using values produced by seq.
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(lagged_fibonacci_engine, SeedSeq, seq)
+ {
+ detail::seed_array_int<w>(seq, x);
+ i = long_lag;
+ }
-public:
- /**
- * Sets the state of the generator to values produced by
- * a \minstd_rand generator.
- */
- void seed(uint32_t value = 331u)
- {
- minstd_rand0 gen(value);
- for(unsigned int j = 0; j < long_lag; ++j)
- x[j] = gen() & wordmask;
- i = long_lag;
- }
-
- /**
- * Sets the state of the generator to values from the iterator
- * range [first, last). If there are not enough elements in the
- * range [first, last) throws @c std::invalid_argument.
- */
- template<class It>
- void seed(It& first, It last)
- {
- // word size could be smaller than the seed values
- unsigned int j;
- for(j = 0; j < long_lag && first != last; ++j, ++first)
- x[j] = *first & wordmask;
- i = long_lag;
- if(first == last && j < long_lag)
- throw std::invalid_argument("lagged_fibonacci::seed");
- }
-
- /**
- * Returns: the next value of the generator
- */
- result_type operator()()
- {
- if(i >= long_lag)
- fill();
- return x[i++];
- }
-
- static bool validation(result_type x)
- {
- return x == val;
- }
+ /**
+ * Sets the state of the generator to values from the iterator
+ * range [first, last). If there are not enough elements in the
+ * range [first, last) throws @c std::invalid_argument.
+ */
+ template<class It>
+ void seed(It& first, It last)
+ {
+ detail::fill_array_int<w>(first, last, x);
+ i = long_lag;
+ }
+
+ /** Returns the next value of the generator. */
+ result_type operator()()
+ {
+ if(i >= long_lag)
+ fill();
+ return x[i++];
+ }
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const lagged_fibonacci& f)
- {
- os << f.i << " ";
- for(unsigned int i = 0; i < f.long_lag; ++i)
- os << f.x[i] << " ";
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT, Traits>&
- operator>>(std::basic_istream<CharT, Traits>& is, lagged_fibonacci& f)
- {
-# ifdef BOOST_RANDOM_EXTRACT_LF
- return detail::extract_lagged_fibonacci(is, f, f.i, f.x);
-# else
- is >> f.i >> std::ws;
- for(unsigned int i = 0; i < f.long_lag; ++i)
- is >> f.x[i] >> std::ws;
- return is;
-# endif
- }
-#endif
+ /** Fills a range with random values */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { detail::generate_from_int(*this, first, last); }
- friend bool operator==(const lagged_fibonacci& x, const lagged_fibonacci& y)
- { return x.i == y.i && std::equal(x.x, x.x+long_lag, y.x); }
- friend bool operator!=(const lagged_fibonacci& x,
- const lagged_fibonacci& y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(const lagged_fibonacci& rhs) const
- { return i == rhs.i && std::equal(x, x+long_lag, rhs.x); }
- bool operator!=(const lagged_fibonacci& rhs) const
- { return !(*this == rhs); }
-#endif
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z)
+ {
+ for(boost::uintmax_t j = 0; j < z; ++j) {
+ (*this)();
+ }
+ }
+
+ /**
+ * Writes the textual representation of the generator to a @c std::ostream.
+ */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, lagged_fibonacci_engine, f)
+ {
+ os << f.i;
+ for(unsigned int i = 0; i < f.long_lag; ++i)
+ os << ' ' << f.x[i];
+ return os;
+ }
+
+ /**
+ * Reads the textual representation of the generator from a @c std::istream.
+ */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, lagged_fibonacci_engine, f)
+ {
+ is >> f.i >> std::ws;
+ for(unsigned int i = 0; i < f.long_lag; ++i)
+ is >> f.x[i] >> std::ws;
+ return is;
+ }
+
+ /**
+ * Returns true if the two generators will produce identical
+ * sequences of outputs.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(lagged_fibonacci_engine, x, y)
+ { return x.i == y.i && std::equal(x.x, x.x+long_lag, y.x); }
+
+ /**
+ * Returns true if the two generators will produce different
+ * sequences of outputs.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(lagged_fibonacci_engine)
private:
- /// \cond hide_private_members
- void fill();
- /// \endcond
+ /// \cond show_private
+ void fill();
+ /// \endcond
- UIntType wordmask;
- unsigned int i;
- UIntType x[long_lag];
+ unsigned int i;
+ UIntType x[long_lag];
};
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
// A definition is required even for integral static constants
-template<class UIntType, int w, unsigned int p, unsigned int q, UIntType val>
-const bool lagged_fibonacci<UIntType, w, p, q, val>::has_fixed_range;
-template<class UIntType, int w, unsigned int p, unsigned int q, UIntType val>
-const unsigned int lagged_fibonacci<UIntType, w, p, q, val>::long_lag;
-template<class UIntType, int w, unsigned int p, unsigned int q, UIntType val>
-const unsigned int lagged_fibonacci<UIntType, w, p, q, val>::short_lag;
+template<class UIntType, int w, unsigned int p, unsigned int q>
+const bool lagged_fibonacci_engine<UIntType, w, p, q>::has_fixed_range;
+template<class UIntType, int w, unsigned int p, unsigned int q>
+const unsigned int lagged_fibonacci_engine<UIntType, w, p, q>::long_lag;
+template<class UIntType, int w, unsigned int p, unsigned int q>
+const unsigned int lagged_fibonacci_engine<UIntType, w, p, q>::short_lag;
+template<class UIntType, int w, unsigned int p, unsigned int q>
+const UIntType lagged_fibonacci_engine<UIntType, w, p, q>::default_seed;
#endif
-/// \cond hide_private_members
+/// \cond show_private
-template<class UIntType, int w, unsigned int p, unsigned int q, UIntType val>
-void lagged_fibonacci<UIntType, w, p, q, val>::fill()
+template<class UIntType, int w, unsigned int p, unsigned int q>
+void lagged_fibonacci_engine<UIntType, w, p, q>::fill()
{
- // two loops to avoid costly modulo operations
- { // extra scope for MSVC brokenness w.r.t. for scope
- for(unsigned int j = 0; j < short_lag; ++j)
- x[j] = (x[j] + x[j+(long_lag-short_lag)]) & wordmask;
- }
- for(unsigned int j = short_lag; j < long_lag; ++j)
- x[j] = (x[j] + x[j-short_lag]) & wordmask;
- i = 0;
+ // two loops to avoid costly modulo operations
+ { // extra scope for MSVC brokenness w.r.t. for scope
+ for(unsigned int j = 0; j < short_lag; ++j)
+ x[j] = (x[j] + x[j+(long_lag-short_lag)]) & low_bits_mask_t<w>::sig_bits;
+ }
+ for(unsigned int j = short_lag; j < long_lag; ++j)
+ x[j] = (x[j] + x[j-short_lag]) & low_bits_mask_t<w>::sig_bits;
+ i = 0;
}
+/// \endcond
+/// \cond show_deprecated
-// lagged Fibonacci generator for the range [0..1)
-// contributed by Matthias Troyer
-// for p=55, q=24 originally by G. J. Mitchell and D. P. Moore 1958
-
-template<class T, unsigned int p, unsigned int q>
-struct fibonacci_validation
+// provided for backwards compatibility
+template<class UIntType, int w, unsigned int p, unsigned int q, UIntType v = 0>
+class lagged_fibonacci : public lagged_fibonacci_engine<UIntType, w, p, q>
{
- BOOST_STATIC_CONSTANT(bool, is_specialized = false);
- static T value() { return 0; }
- static T tolerance() { return 0; }
-};
-
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-// A definition is required even for integral static constants
-template<class T, unsigned int p, unsigned int q>
-const bool fibonacci_validation<T, p, q>::is_specialized;
-#endif
-
-#define BOOST_RANDOM_FIBONACCI_VAL(T,P,Q,V,E) \
-template<> \
-struct fibonacci_validation<T, P, Q> \
-{ \
- BOOST_STATIC_CONSTANT(bool, is_specialized = true); \
- static T value() { return V; } \
- static T tolerance() \
-{ return (std::max)(E, static_cast<T>(5*std::numeric_limits<T>::epsilon())); } \
+ typedef lagged_fibonacci_engine<UIntType, w, p, q> base_type;
+public:
+ lagged_fibonacci() {}
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(lagged_fibonacci, UIntType, val)
+ { this->seed(val); }
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(lagged_fibonacci, SeedSeq, seq)
+ { this->seed(seq); }
+ template<class It>
+ lagged_fibonacci(It& first, It last) : base_type(first, last) {}
};
-// (The extra static_cast<T> in the std::max call above is actually
-// unnecessary except for HP aCC 1.30, which claims that
-// numeric_limits<double>::epsilon() doesn't actually return a double.)
-
-BOOST_RANDOM_FIBONACCI_VAL(double, 607, 273, 0.4293817707235914, 1e-14)
-BOOST_RANDOM_FIBONACCI_VAL(double, 1279, 418, 0.9421630240437659, 1e-14)
-BOOST_RANDOM_FIBONACCI_VAL(double, 2281, 1252, 0.1768114046909004, 1e-14)
-BOOST_RANDOM_FIBONACCI_VAL(double, 3217, 576, 0.1956232694868209, 1e-14)
-BOOST_RANDOM_FIBONACCI_VAL(double, 4423, 2098, 0.9499762202147172, 1e-14)
-BOOST_RANDOM_FIBONACCI_VAL(double, 9689, 5502, 0.05737836943695162, 1e-14)
-BOOST_RANDOM_FIBONACCI_VAL(double, 19937, 9842, 0.5076528587449834, 1e-14)
-BOOST_RANDOM_FIBONACCI_VAL(double, 23209, 13470, 0.5414473810619185, 1e-14)
-BOOST_RANDOM_FIBONACCI_VAL(double, 44497,21034, 0.254135073399297, 1e-14)
-
-#undef BOOST_RANDOM_FIBONACCI_VAL
/// \endcond
+// lagged Fibonacci generator for the range [0..1)
+// contributed by Matthias Troyer
+// for p=55, q=24 originally by G. J. Mitchell and D. P. Moore 1958
+
/**
* Instantiations of class template @c lagged_fibonacci_01 model a
* \pseudo_random_number_generator. It uses a lagged Fibonacci
* 4856 bytes and \lagged_fibonacci44497 requires about 350 KBytes.
*/
template<class RealType, int w, unsigned int p, unsigned int q>
-class lagged_fibonacci_01
+class lagged_fibonacci_01_engine
{
public:
- typedef RealType result_type;
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
- BOOST_STATIC_CONSTANT(int, word_size = w);
- BOOST_STATIC_CONSTANT(unsigned int, long_lag = p);
- BOOST_STATIC_CONSTANT(unsigned int, short_lag = q);
-
- /** Constructs a @c lagged_fibonacci_01 generator and calls @c seed(). */
- lagged_fibonacci_01() { init_modulus(); seed(); }
- /** Constructs a @c lagged_fibonacci_01 generator and calls @c seed(value). */
- BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(lagged_fibonacci_01, uint32_t, value)
- { init_modulus(); seed(value); }
- /** Constructs a @c lagged_fibonacci_01 generator and calls @c seed(gen). */
- BOOST_RANDOM_DETAIL_GENERATOR_CONSTRUCTOR(lagged_fibonacci_01, Generator, gen)
- { init_modulus(); seed(gen); }
- template<class It> lagged_fibonacci_01(It& first, It last)
- { init_modulus(); seed(first, last); }
- // compiler-generated copy ctor and assignment operator are fine
-
-private:
- /// \cond hide_private_members
- void init_modulus()
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::pow;
-#endif
- _modulus = pow(RealType(2), word_size);
- }
- /// \endcond
+ typedef RealType result_type;
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ BOOST_STATIC_CONSTANT(int, word_size = w);
+ BOOST_STATIC_CONSTANT(unsigned int, long_lag = p);
+ BOOST_STATIC_CONSTANT(unsigned int, short_lag = q);
+
+ BOOST_STATIC_CONSTANT(boost::uint32_t, default_seed = 331u);
+
+ /** Constructs a @c lagged_fibonacci_01 generator and calls @c seed(). */
+ lagged_fibonacci_01_engine() { seed(); }
+ /** Constructs a @c lagged_fibonacci_01 generator and calls @c seed(value). */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(lagged_fibonacci_01_engine, uint32_t, value)
+ { seed(value); }
+ /** Constructs a @c lagged_fibonacci_01 generator and calls @c seed(gen). */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(lagged_fibonacci_01_engine, SeedSeq, seq)
+ { seed(seq); }
+ template<class It> lagged_fibonacci_01_engine(It& first, It last)
+ { seed(first, last); }
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Calls seed(default_seed). */
+ void seed() { seed(default_seed); }
+
+ /**
+ * Constructs a \minstd_rand0 generator with the constructor parameter
+ * value and calls seed with it. Distinct seeds in the range
+ * [1, 2147483647) will produce generators with different states. Other
+ * seeds will be equivalent to some seed within this range. See
+ * \linear_congruential_engine for details.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(lagged_fibonacci_01_engine, boost::uint32_t, value)
+ {
+ minstd_rand0 intgen(value);
+ detail::generator_seed_seq<minstd_rand0> gen(intgen);
+ seed(gen);
+ }
-public:
- /** Calls seed(331u). */
- void seed() { seed(331u); }
- /**
- * Constructs a \minstd_rand0 generator with the constructor parameter
- * value and calls seed with it. Distinct seeds in the range
- * [1, 2147483647) will produce generators with different states. Other
- * seeds will be equivalent to some seed within this range. See
- * \linear_congruential for details.
- */
- BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(lagged_fibonacci_01, uint32_t, value)
- {
- minstd_rand0 intgen(value);
- seed(intgen);
- }
-
- /**
- * Sets the state of this @c lagged_fibonacci_01 to the values returned
- * by p invocations of \uniform_01<code>\<RealType\>()(gen)</code>.
- *
- * Complexity: Exactly p invocations of gen.
- */
- BOOST_RANDOM_DETAIL_GENERATOR_SEED(lagged_fibonacci, Generator, gen)
- {
- // use pass-by-reference, but wrap argument in pass_through_engine
- typedef detail::pass_through_engine<Generator&> ref_gen;
- uniform_01<ref_gen, RealType> gen01 =
- uniform_01<ref_gen, RealType>(ref_gen(gen));
- // I could have used std::generate_n, but it takes "gen" by value
- for(unsigned int j = 0; j < long_lag; ++j)
- x[j] = gen01();
- i = long_lag;
- }
-
- template<class It>
- void seed(It& first, It last)
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::fmod;
- using std::pow;
-#endif
- unsigned long mask = ~((~0u) << (w%32)); // now lowest w bits set
- RealType two32 = pow(RealType(2), 32);
- unsigned int j;
- for(j = 0; j < long_lag && first != last; ++j) {
- x[j] = RealType(0);
- for(int k = 0; k < w/32 && first != last; ++k, ++first)
- x[j] += *first / pow(two32,k+1);
- if(first != last && mask != 0) {
- x[j] += fmod((*first & mask) / _modulus, RealType(1));
- ++first;
- }
+ /**
+ * Seeds this @c lagged_fibonacci_01_engine using values produced by
+ * @c seq.generate.
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(lagged_fibonacci_01_engine, SeedSeq, seq)
+ {
+ detail::seed_array_real<w>(seq, x);
+ i = long_lag;
+ }
+
+ /**
+ * Seeds this @c lagged_fibonacci_01_engine using values from the
+ * iterator range [first, last). If there are not enough elements
+ * in the range, throws @c std::invalid_argument.
+ */
+ template<class It>
+ void seed(It& first, It last)
+ {
+ detail::fill_array_real<w>(first, last, x);
+ i = long_lag;
+ }
+
+ /** Returns the smallest value that the generator can produce. */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return result_type(0); }
+ /** Returns the upper bound of the generators outputs. */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () { return result_type(1); }
+
+ /** Returns the next value of the generator. */
+ result_type operator()()
+ {
+ if(i >= long_lag)
+ fill();
+ return x[i++];
}
- i = long_lag;
- if(first == last && j < long_lag)
- throw std::invalid_argument("lagged_fibonacci_01::seed");
- }
-
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return result_type(0); }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return result_type(1); }
-
- result_type operator()()
- {
- if(i >= long_lag)
- fill();
- return x[i++];
- }
-
- static bool validation(result_type x)
- {
- result_type v = fibonacci_validation<result_type, p, q>::value();
- result_type epsilon = fibonacci_validation<result_type, p, q>::tolerance();
- // std::abs is a source of trouble: sometimes, it's not overloaded
- // for double, plus the usual namespace std noncompliance -> avoid it
- // using std::abs;
- // return abs(x - v) < 5 * epsilon
- return x > v - epsilon && x < v + epsilon;
- }
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const lagged_fibonacci_01&f)
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::pow;
-#endif
- os << f.i << " ";
- std::ios_base::fmtflags oldflags = os.flags(os.dec | os.fixed | os.left);
- for(unsigned int i = 0; i < f.long_lag; ++i)
- os << f.x[i] * f._modulus << " ";
- os.flags(oldflags);
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT, Traits>&
- operator>>(std::basic_istream<CharT, Traits>& is, lagged_fibonacci_01& f)
+ /** Fills a range with random values */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { return detail::generate_from_real(*this, first, last); }
+
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z)
{
-# ifdef BOOST_RANDOM_EXTRACT_LF
- return detail::extract_lagged_fibonacci_01(is, f, f.i, f.x, f._modulus);
-# else
- is >> f.i >> std::ws;
+ for(boost::uintmax_t j = 0; j < z; ++j) {
+ (*this)();
+ }
+ }
+
+ /**
+ * Writes the textual representation of the generator to a @c std::ostream.
+ */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, lagged_fibonacci_01_engine, f)
+ {
+ // allow for Koenig lookup
+ using std::pow;
+ os << f.i;
+ std::ios_base::fmtflags oldflags = os.flags(os.dec | os.fixed | os.left);
+ for(unsigned int i = 0; i < f.long_lag; ++i)
+ os << ' ' << f.x[i] * f.modulus();
+ os.flags(oldflags);
+ return os;
+ }
+
+ /**
+ * Reads the textual representation of the generator from a @c std::istream.
+ */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, lagged_fibonacci_01_engine, f)
+ {
+ is >> f.i;
for(unsigned int i = 0; i < f.long_lag; ++i) {
- typename lagged_fibonacci_01::result_type value;
- is >> value >> std::ws;
- f.x[i] = value / f._modulus;
+ typename lagged_fibonacci_01_engine::result_type value;
+ is >> std::ws >> value;
+ f.x[i] = value / f.modulus();
}
return is;
-# endif
}
-#endif
-
- friend bool operator==(const lagged_fibonacci_01& x,
- const lagged_fibonacci_01& y)
- { return x.i == y.i && std::equal(x.x, x.x+long_lag, y.x); }
- friend bool operator!=(const lagged_fibonacci_01& x,
- const lagged_fibonacci_01& y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(const lagged_fibonacci_01& rhs) const
- { return i == rhs.i && std::equal(x, x+long_lag, rhs.x); }
- bool operator!=(const lagged_fibonacci_01& rhs) const
- { return !(*this == rhs); }
-#endif
+
+ /**
+ * Returns true if the two generators will produce identical
+ * sequences of outputs.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(lagged_fibonacci_01_engine, x, y)
+ { return x.i == y.i && std::equal(x.x, x.x+long_lag, y.x); }
+
+ /**
+ * Returns true if the two generators will produce different
+ * sequences of outputs.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(lagged_fibonacci_01_engine)
private:
- /// \cond hide_private_members
- void fill();
- /// \endcond
- unsigned int i;
- RealType x[long_lag];
- RealType _modulus;
+ /// \cond show_private
+ void fill();
+ static RealType modulus()
+ {
+ using std::pow;
+ return pow(RealType(2), word_size);
+ }
+ /// \endcond
+ unsigned int i;
+ RealType x[long_lag];
};
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
// A definition is required even for integral static constants
template<class RealType, int w, unsigned int p, unsigned int q>
-const bool lagged_fibonacci_01<RealType, w, p, q>::has_fixed_range;
+const bool lagged_fibonacci_01_engine<RealType, w, p, q>::has_fixed_range;
template<class RealType, int w, unsigned int p, unsigned int q>
-const unsigned int lagged_fibonacci_01<RealType, w, p, q>::long_lag;
+const unsigned int lagged_fibonacci_01_engine<RealType, w, p, q>::long_lag;
template<class RealType, int w, unsigned int p, unsigned int q>
-const unsigned int lagged_fibonacci_01<RealType, w, p, q>::short_lag;
+const unsigned int lagged_fibonacci_01_engine<RealType, w, p, q>::short_lag;
template<class RealType, int w, unsigned int p, unsigned int q>
-const int lagged_fibonacci_01<RealType,w,p,q>::word_size;
-
+const int lagged_fibonacci_01_engine<RealType,w,p,q>::word_size;
+template<class RealType, int w, unsigned int p, unsigned int q>
+const boost::uint32_t lagged_fibonacci_01_engine<RealType,w,p,q>::default_seed;
#endif
-/// \cond hide_private_members
+/// \cond show_private
template<class RealType, int w, unsigned int p, unsigned int q>
-void lagged_fibonacci_01<RealType, w, p, q>::fill()
+void lagged_fibonacci_01_engine<RealType, w, p, q>::fill()
{
- // two loops to avoid costly modulo operations
- { // extra scope for MSVC brokenness w.r.t. for scope
- for(unsigned int j = 0; j < short_lag; ++j) {
- RealType t = x[j] + x[j+(long_lag-short_lag)];
- if(t >= RealType(1))
- t -= RealType(1);
- x[j] = t;
- }
- }
- for(unsigned int j = short_lag; j < long_lag; ++j) {
- RealType t = x[j] + x[j-short_lag];
- if(t >= RealType(1))
- t -= RealType(1);
- x[j] = t;
- }
- i = 0;
+ // two loops to avoid costly modulo operations
+ { // extra scope for MSVC brokenness w.r.t. for scope
+ for(unsigned int j = 0; j < short_lag; ++j) {
+ RealType t = x[j] + x[j+(long_lag-short_lag)];
+ if(t >= RealType(1))
+ t -= RealType(1);
+ x[j] = t;
+ }
+ }
+ for(unsigned int j = short_lag; j < long_lag; ++j) {
+ RealType t = x[j] + x[j-short_lag];
+ if(t >= RealType(1))
+ t -= RealType(1);
+ x[j] = t;
+ }
+ i = 0;
}
/// \endcond
-} // namespace random
+/// \cond show_deprecated
+
+// provided for backwards compatibility
+template<class RealType, int w, unsigned int p, unsigned int q>
+class lagged_fibonacci_01 : public lagged_fibonacci_01_engine<RealType, w, p, q>
+{
+ typedef lagged_fibonacci_01_engine<RealType, w, p, q> base_type;
+public:
+ lagged_fibonacci_01() {}
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(lagged_fibonacci_01, boost::uint32_t, val)
+ { this->seed(val); }
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(lagged_fibonacci_01, SeedSeq, seq)
+ { this->seed(seq); }
+ template<class It>
+ lagged_fibonacci_01(It& first, It last) : base_type(first, last) {}
+};
+
+/// \endcond
+
+namespace detail {
+
+template<class Engine>
+struct generator_bits;
+
+template<class RealType, int w, unsigned int p, unsigned int q>
+struct generator_bits<lagged_fibonacci_01_engine<RealType, w, p, q> >
+{
+ static std::size_t value() { return w; }
+};
+
+template<class RealType, int w, unsigned int p, unsigned int q>
+struct generator_bits<lagged_fibonacci_01<RealType, w, p, q> >
+{
+ static std::size_t value() { return w; }
+};
+
+}
#ifdef BOOST_RANDOM_DOXYGEN
namespace detail {
}
#endif
-/**
- * @copydoc boost::detail::lagged_fibonacci_doc
- */
-typedef random::lagged_fibonacci_01<double, 48, 607, 273> lagged_fibonacci607;
-/**
- * @copydoc boost::detail::lagged_fibonacci_doc
- */
-typedef random::lagged_fibonacci_01<double, 48, 1279, 418> lagged_fibonacci1279;
-/**
- * @copydoc boost::detail::lagged_fibonacci_doc
- */
-typedef random::lagged_fibonacci_01<double, 48, 2281, 1252> lagged_fibonacci2281;
-/**
- * @copydoc boost::detail::lagged_fibonacci_doc
- */
-typedef random::lagged_fibonacci_01<double, 48, 3217, 576> lagged_fibonacci3217;
-/**
- * @copydoc boost::detail::lagged_fibonacci_doc
- */
-typedef random::lagged_fibonacci_01<double, 48, 4423, 2098> lagged_fibonacci4423;
-/**
- * @copydoc boost::detail::lagged_fibonacci_doc
- */
-typedef random::lagged_fibonacci_01<double, 48, 9689, 5502> lagged_fibonacci9689;
-/**
- * @copydoc boost::detail::lagged_fibonacci_doc
- */
-typedef random::lagged_fibonacci_01<double, 48, 19937, 9842> lagged_fibonacci19937;
-/**
- * @copydoc boost::detail::lagged_fibonacci_doc
- */
-typedef random::lagged_fibonacci_01<double, 48, 23209, 13470> lagged_fibonacci23209;
-/**
- * @copydoc boost::detail::lagged_fibonacci_doc
- */
-typedef random::lagged_fibonacci_01<double, 48, 44497, 21034> lagged_fibonacci44497;
+/** @copydoc boost::random::detail::lagged_fibonacci_doc */
+typedef lagged_fibonacci_01_engine<double, 48, 607, 273> lagged_fibonacci607;
+/** @copydoc boost::random::detail::lagged_fibonacci_doc */
+typedef lagged_fibonacci_01_engine<double, 48, 1279, 418> lagged_fibonacci1279;
+/** @copydoc boost::random::detail::lagged_fibonacci_doc */
+typedef lagged_fibonacci_01_engine<double, 48, 2281, 1252> lagged_fibonacci2281;
+/** @copydoc boost::random::detail::lagged_fibonacci_doc */
+typedef lagged_fibonacci_01_engine<double, 48, 3217, 576> lagged_fibonacci3217;
+/** @copydoc boost::random::detail::lagged_fibonacci_doc */
+typedef lagged_fibonacci_01_engine<double, 48, 4423, 2098> lagged_fibonacci4423;
+/** @copydoc boost::random::detail::lagged_fibonacci_doc */
+typedef lagged_fibonacci_01_engine<double, 48, 9689, 5502> lagged_fibonacci9689;
+/** @copydoc boost::random::detail::lagged_fibonacci_doc */
+typedef lagged_fibonacci_01_engine<double, 48, 19937, 9842> lagged_fibonacci19937;
+/** @copydoc boost::random::detail::lagged_fibonacci_doc */
+typedef lagged_fibonacci_01_engine<double, 48, 23209, 13470> lagged_fibonacci23209;
+/** @copydoc boost::random::detail::lagged_fibonacci_doc */
+typedef lagged_fibonacci_01_engine<double, 48, 44497, 21034> lagged_fibonacci44497;
+} // namespace random
-// It is possible to partially specialize uniform_01<> on lagged_fibonacci_01<>
-// to help the compiler generate efficient code. For GCC, this seems useless,
-// because GCC optimizes (x-0)/(1-0) to (x-0). This is good enough for now.
+using random::lagged_fibonacci607;
+using random::lagged_fibonacci1279;
+using random::lagged_fibonacci2281;
+using random::lagged_fibonacci3217;
+using random::lagged_fibonacci4423;
+using random::lagged_fibonacci9689;
+using random::lagged_fibonacci19937;
+using random::lagged_fibonacci23209;
+using random::lagged_fibonacci44497;
} // namespace boost
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: linear_congruential.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: linear_congruential.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#define BOOST_RANDOM_LINEAR_CONGRUENTIAL_HPP
#include <iostream>
-#include <cassert>
#include <stdexcept>
+#include <boost/assert.hpp>
#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
#include <boost/limits.hpp>
#include <boost/static_assert.hpp>
+#include <boost/integer/static_log2.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_arithmetic.hpp>
#include <boost/random/detail/config.hpp>
#include <boost/random/detail/const_mod.hpp>
+#include <boost/random/detail/seed.hpp>
+#include <boost/random/detail/seed_impl.hpp>
#include <boost/detail/workaround.hpp>
#include <boost/random/detail/disable_warnings.hpp>
namespace random {
/**
- * Instantiations of class template linear_congruential model a
+ * Instantiations of class template linear_congruential_engine model a
* \pseudo_random_number_generator. Linear congruential pseudo-random
* number generators are described in:
*
+ * @blockquote
* "Mathematical methods in large-scale computing units", D. H. Lehmer,
* Proc. 2nd Symposium on Large-Scale Digital Calculating Machines,
* Harvard University Press, 1951, pp. 141-146
+ * @endblockquote
*
* Let x(n) denote the sequence of numbers returned by some pseudo-random
* number generator. Then for the linear congruential generator,
* the parameters. User code should use one of the sensibly parameterized
* generators such as minstd_rand instead.
*/
-template<class IntType, IntType a, IntType c, IntType m, IntType val>
-class linear_congruential
+template<class IntType, IntType a, IntType c, IntType m>
+class linear_congruential_engine
{
public:
- typedef IntType result_type;
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
- static const bool has_fixed_range = true;
- static const result_type min_value = ( c == 0 ? 1 : 0 );
- static const result_type max_value = m-1;
-#else
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
-#endif
- BOOST_STATIC_CONSTANT(IntType, multiplier = a);
- BOOST_STATIC_CONSTANT(IntType, increment = c);
- BOOST_STATIC_CONSTANT(IntType, modulus = m);
-
- // MSVC 6 and possibly others crash when encountering complicated integral
- // constant expressions. Avoid the check for now.
- // BOOST_STATIC_ASSERT(m == 0 || a < m);
- // BOOST_STATIC_ASSERT(m == 0 || c < m);
-
- /**
- * Constructs a linear_congruential generator, seeding it with @c x0.
- */
- explicit linear_congruential(IntType x0 = 1)
- {
- seed(x0);
-
- // MSVC fails BOOST_STATIC_ASSERT with std::numeric_limits at class scope
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+ typedef IntType result_type;
+
+ // Required for old Boost.Random concept
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+
+ BOOST_STATIC_CONSTANT(IntType, multiplier = a);
+ BOOST_STATIC_CONSTANT(IntType, increment = c);
+ BOOST_STATIC_CONSTANT(IntType, modulus = m);
+ BOOST_STATIC_CONSTANT(IntType, default_seed = 1);
+
BOOST_STATIC_ASSERT(std::numeric_limits<IntType>::is_integer);
-#endif
- }
-
- /**
- * Constructs a @c linear_congruential generator and seeds it
- * with values taken from the itrator range [first, last)
- * and adjusts first to point to the element after the last one
- * used. If there are not enough elements, throws @c std::invalid_argument.
- *
- * first and last must be input iterators.
- */
- template<class It>
- linear_congruential(It& first, It last)
- {
- seed(first, last);
- }
-
- // compiler-generated copy constructor and assignment operator are fine
-
- /**
- * If c mod m is zero and x0 mod m is zero, changes the current value of
- * the generator to 1. Otherwise, changes it to x0 mod m. If c is zero,
- * distinct seeds in the range [1,m) will leave the generator in distinct
- * states. If c is not zero, the range is [0,m).
- */
- void seed(IntType x0 = 1)
- {
- // wrap _x if it doesn't fit in the destination
- if(modulus == 0) {
- _x = x0;
- } else {
- _x = x0 % modulus;
+ BOOST_STATIC_ASSERT(m == 0 || a < m);
+ BOOST_STATIC_ASSERT(m == 0 || c < m);
+
+ /**
+ * Constructs a @c linear_congruential_engine, using the default seed
+ */
+ linear_congruential_engine() { seed(); }
+
+ /**
+ * Constructs a @c linear_congruential_engine, seeding it with @c x0.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(linear_congruential_engine,
+ IntType, x0)
+ { seed(x0); }
+
+ /**
+ * Constructs a @c linear_congruential_engine, seeding it with values
+ * produced by a call to @c seq.generate().
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(linear_congruential_engine,
+ SeedSeq, seq)
+ { seed(seq); }
+
+ /**
+ * Constructs a @c linear_congruential_engine and seeds it
+ * with values taken from the itrator range [first, last)
+ * and adjusts first to point to the element after the last one
+ * used. If there are not enough elements, throws @c std::invalid_argument.
+ *
+ * first and last must be input iterators.
+ */
+ template<class It>
+ linear_congruential_engine(It& first, It last)
+ {
+ seed(first, last);
}
- // handle negative seeds
- if(_x <= 0 && _x != 0) {
- _x += modulus;
+
+ // compiler-generated copy constructor and assignment operator are fine
+
+ /**
+ * Calls seed(default_seed)
+ */
+ void seed() { seed(default_seed); }
+
+ /**
+ * If c mod m is zero and x0 mod m is zero, changes the current value of
+ * the generator to 1. Otherwise, changes it to x0 mod m. If c is zero,
+ * distinct seeds in the range [1,m) will leave the generator in distinct
+ * states. If c is not zero, the range is [0,m).
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(linear_congruential_engine, IntType, x0)
+ {
+ // wrap _x if it doesn't fit in the destination
+ if(modulus == 0) {
+ _x = x0;
+ } else {
+ _x = x0 % modulus;
+ }
+ // handle negative seeds
+ if(_x <= 0 && _x != 0) {
+ _x += modulus;
+ }
+ // adjust to the correct range
+ if(increment == 0 && _x == 0) {
+ _x = 1;
+ }
+ BOOST_ASSERT(_x >= (min)());
+ BOOST_ASSERT(_x <= (max)());
}
- // adjust to the correct range
- if(increment == 0 && _x == 0) {
- _x = 1;
+
+ /**
+ * Seeds a @c linear_congruential_engine using values from a SeedSeq.
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(linear_congruential_engine, SeedSeq, seq)
+ { seed(detail::seed_one_int<IntType, m>(seq)); }
+
+ /**
+ * seeds a @c linear_congruential_engine with values taken
+ * from the itrator range [first, last) and adjusts @c first to
+ * point to the element after the last one used. If there are
+ * not enough elements, throws @c std::invalid_argument.
+ *
+ * @c first and @c last must be input iterators.
+ */
+ template<class It>
+ void seed(It& first, It last)
+ { seed(detail::get_one_int<IntType, m>(first, last)); }
+
+ /**
+ * Returns the smallest value that the @c linear_congruential_engine
+ * can produce.
+ */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return c == 0 ? 1 : 0; }
+ /**
+ * Returns the largest value that the @c linear_congruential_engine
+ * can produce.
+ */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return modulus-1; }
+
+ /** Returns the next value of the @c linear_congruential_engine. */
+ IntType operator()()
+ {
+ _x = const_mod<IntType, m>::mult_add(a, _x, c);
+ return _x;
}
- assert(_x >= (min)());
- assert(_x <= (max)());
- }
-
- /**
- * seeds a @c linear_congruential generator with values taken
- * from the itrator range [first, last) and adjusts @c first to
- * point to the element after the last one used. If there are
- * not enough elements, throws @c std::invalid_argument.
- *
- * @c first and @c last must be input iterators.
- */
- template<class It>
- void seed(It& first, It last)
- {
- if(first == last)
- throw std::invalid_argument("linear_congruential::seed");
- seed(*first++);
- }
-
- /**
- * Returns the smallest value that the @c linear_congruential generator
- * can produce.
- */
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return c == 0 ? 1 : 0; }
- /**
- * Returns the largest value that the @c linear_congruential generator
- * can produce.
- */
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return modulus-1; }
-
- /** Returns the next value of the @c linear_congruential generator. */
- IntType operator()()
- {
- _x = const_mod<IntType, m>::mult_add(a, _x, c);
- return _x;
- }
-
- static bool validation(IntType x) { return val == x; }
-
-#ifdef BOOST_NO_OPERATORS_IN_NAMESPACE
-
- // Use a member function; Streamable concept not supported.
- bool operator==(const linear_congruential& rhs) const
- { return _x == rhs._x; }
- bool operator!=(const linear_congruential& rhs) const
- { return !(*this == rhs); }
-
-#else
- friend bool operator==(const linear_congruential& x,
- const linear_congruential& y)
- { return x._x == y._x; }
- friend bool operator!=(const linear_congruential& x,
- const linear_congruential& y)
- { return !(x == y); }
+
+ /** Fills a range with random values */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { detail::generate_from_int(*this, first, last); }
+
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z)
+ {
+ typedef const_mod<IntType, m> mod_type;
+ IntType b_inv = mod_type::invert(a-1);
+ IntType b_gcd = mod_type::mult(a-1, b_inv);
+ if(b_gcd == 1) {
+ IntType a_z = mod_type::pow(a, z);
+ _x = mod_type::mult_add(a_z, _x,
+ mod_type::mult(mod_type::mult(c, b_inv), a_z - 1));
+ } else {
+ // compute (a^z - 1)*c % (b_gcd * m) / (b / b_gcd) * inv(b / b_gcd)
+ // we're storing the intermediate result / b_gcd
+ IntType a_zm1_over_gcd = 0;
+ IntType a_km1_over_gcd = (a - 1) / b_gcd;
+ boost::uintmax_t exponent = z;
+ while(exponent != 0) {
+ if(exponent % 2 == 1) {
+ a_zm1_over_gcd =
+ mod_type::mult_add(
+ b_gcd,
+ mod_type::mult(a_zm1_over_gcd, a_km1_over_gcd),
+ mod_type::add(a_zm1_over_gcd, a_km1_over_gcd));
+ }
+ a_km1_over_gcd = mod_type::mult_add(
+ b_gcd,
+ mod_type::mult(a_km1_over_gcd, a_km1_over_gcd),
+ mod_type::add(a_km1_over_gcd, a_km1_over_gcd));
+ exponent /= 2;
+ }
+
+ IntType a_z = mod_type::mult_add(b_gcd, a_zm1_over_gcd, 1);
+ IntType num = mod_type::mult(c, a_zm1_over_gcd);
+ b_inv = mod_type::invert((a-1)/b_gcd);
+ _x = mod_type::mult_add(a_z, _x, mod_type::mult(b_inv, num));
+ }
+ }
+
+ friend bool operator==(const linear_congruential_engine& x,
+ const linear_congruential_engine& y)
+ { return x._x == y._x; }
+ friend bool operator!=(const linear_congruential_engine& x,
+ const linear_congruential_engine& y)
+ { return !(x == y); }
-#if !defined(BOOST_RANDOM_NO_STREAM_OPERATORS) && !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os,
- const linear_congruential& lcg)
- {
- return os << lcg._x;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is,
- linear_congruential& lcg)
- {
- return is >> lcg._x;
- }
-
-private:
-#endif
+#if !defined(BOOST_RANDOM_NO_STREAM_OPERATORS)
+ /** Writes a @c linear_congruential_engine to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const linear_congruential_engine& lcg)
+ {
+ return os << lcg._x;
+ }
+
+ /** Reads a @c linear_congruential_engine from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is,
+ linear_congruential_engine& lcg)
+ {
+ lcg.read(is);
+ return is;
+ }
#endif
- IntType _x;
-};
+private:
-// probably needs the "no native streams" caveat for STLPort
-#if !defined(__SGI_STL_PORT) && BOOST_WORKAROUND(__GNUC__, == 2)
-template<class IntType, IntType a, IntType c, IntType m, IntType val>
-std::ostream&
-operator<<(std::ostream& os,
- const linear_congruential<IntType,a,c,m,val>& lcg)
-{
- return os << lcg._x;
-}
+ /// \cond show_private
+
+ template<class CharT, class Traits>
+ void read(std::basic_istream<CharT, Traits>& is) {
+ IntType x;
+ if(is >> x) {
+ if(x >= (min)() && x <= (max)()) {
+ _x = x;
+ } else {
+ is.setstate(std::ios_base::failbit);
+ }
+ }
+ }
-template<class IntType, IntType a, IntType c, IntType m, IntType val>
-std::istream&
-operator>>(std::istream& is,
- linear_congruential<IntType,a,c,m,val>& lcg)
-{
- return is >> lcg._x;
-}
-#elif defined(BOOST_RANDOM_NO_STREAM_OPERATORS) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
-template<class CharT, class Traits, class IntType, IntType a, IntType c, IntType m, IntType val>
-std::basic_ostream<CharT,Traits>&
-operator<<(std::basic_ostream<CharT,Traits>& os,
- const linear_congruential<IntType,a,c,m,val>& lcg)
-{
- return os << lcg._x;
-}
+ /// \endcond
-template<class CharT, class Traits, class IntType, IntType a, IntType c, IntType m, IntType val>
-std::basic_istream<CharT,Traits>&
-operator>>(std::basic_istream<CharT,Traits>& is,
- linear_congruential<IntType,a,c,m,val>& lcg)
-{
- return is >> lcg._x;
-}
-#endif
+ IntType _x;
+};
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
// A definition is required even for integral static constants
-template<class IntType, IntType a, IntType c, IntType m, IntType val>
-const bool linear_congruential<IntType, a, c, m, val>::has_fixed_range;
-template<class IntType, IntType a, IntType c, IntType m, IntType val>
-const typename linear_congruential<IntType, a, c, m, val>::result_type linear_congruential<IntType, a, c, m, val>::min_value;
-template<class IntType, IntType a, IntType c, IntType m, IntType val>
-const typename linear_congruential<IntType, a, c, m, val>::result_type linear_congruential<IntType, a, c, m, val>::max_value;
-template<class IntType, IntType a, IntType c, IntType m, IntType val>
-const IntType linear_congruential<IntType,a,c,m,val>::modulus;
+template<class IntType, IntType a, IntType c, IntType m>
+const bool linear_congruential_engine<IntType, a, c, m>::has_fixed_range;
+template<class IntType, IntType a, IntType c, IntType m>
+const IntType linear_congruential_engine<IntType,a,c,m>::multiplier;
+template<class IntType, IntType a, IntType c, IntType m>
+const IntType linear_congruential_engine<IntType,a,c,m>::increment;
+template<class IntType, IntType a, IntType c, IntType m>
+const IntType linear_congruential_engine<IntType,a,c,m>::modulus;
+template<class IntType, IntType a, IntType c, IntType m>
+const IntType linear_congruential_engine<IntType,a,c,m>::default_seed;
#endif
-} // namespace random
+/// \cond show_deprecated
+
+// provided for backwards compatibility
+template<class IntType, IntType a, IntType c, IntType m, IntType val = 0>
+class linear_congruential : public linear_congruential_engine<IntType, a, c, m>
+{
+ typedef linear_congruential_engine<IntType, a, c, m> base_type;
+public:
+ linear_congruential(IntType x0 = 1) : base_type(x0) {}
+ template<class It>
+ linear_congruential(It& first, It last) : base_type(first, last) {}
+};
+
+/// \endcond
-// validation values from the publications
/**
* The specialization \minstd_rand0 was originally suggested in
*
* the ACM, Vol. 31, No. 10, October 1988, pp. 1192-1201
* @endblockquote
*/
-typedef random::linear_congruential<int32_t, 16807, 0, 2147483647,
- 1043618065> minstd_rand0;
+typedef linear_congruential_engine<uint32_t, 16807, 0, 2147483647> minstd_rand0;
/** The specialization \minstd_rand was suggested in
*
* the ACM, Vol. 31, No. 10, October 1988, pp. 1192-1201
* @endblockquote
*/
-typedef random::linear_congruential<int32_t, 48271, 0, 2147483647,
- 399268537> minstd_rand;
+typedef linear_congruential_engine<uint32_t, 48271, 0, 2147483647> minstd_rand;
#if !defined(BOOST_NO_INT64_T) && !defined(BOOST_NO_INTEGRAL_INT64_T)
-/** Class @c rand48 models a \pseudo_random_number_generator. It uses
+/**
+ * Class @c rand48 models a \pseudo_random_number_generator. It uses
* the linear congruential algorithm with the parameters a = 0x5DEECE66D,
* c = 0xB, m = 2**48. It delivers identical results to the @c lrand48()
* function available on some systems (assuming lcong48 has not been called).
class rand48
{
public:
- typedef int32_t result_type;
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
- static const bool has_fixed_range = true;
- static const int32_t min_value = 0;
- static const int32_t max_value = integer_traits<int32_t>::const_max;
-#else
- enum { has_fixed_range = false };
-#endif
- /**
- * Returns the smallest value that the generator can produce
- */
- int32_t min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return 0; }
- /**
- * Returns the largest value that the generator can produce
- */
- int32_t max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return std::numeric_limits<int32_t>::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ typedef boost::uint32_t result_type;
+
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ /**
+ * Returns the smallest value that the generator can produce
+ */
+ static uint32_t min BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }
+ /**
+ * Returns the largest value that the generator can produce
+ */
+ static uint32_t max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return 0x7FFFFFFF; }
-#ifdef BOOST_RANDOM_DOXYGEN
- /**
- * If T is an integral type smaller than int46_t, constructs
- * a \rand48 generator with x(0) := (x0 << 16) | 0x330e. Otherwise
- * constructs a \rand48 generator with x(0) = x0.
- */
- template<class T> explicit rand48(T x0 = 1);
-#else
- rand48() : lcf(cnv(static_cast<int32_t>(1))) {}
- template<class T> explicit rand48(T x0) : lcf(cnv(x0)) { }
-#endif
- template<class It> rand48(It& first, It last) : lcf(first, last) { }
-
- // compiler-generated copy ctor and assignment operator are fine
-
-#ifdef BOOST_RANDOM_DOXYGEN
- /**
- * If T is an integral type smaller than int46_t, changes
- * the current value x(n) of the generator to (x0 << 16) | 0x330e.
- * Otherwise changes the current value x(n) to x0.
- */
- template<class T> void seed(T x0 = 1);
-#else
- void seed() { seed(static_cast<int32_t>(1)); }
- template<class T> void seed(T x0) { lcf.seed(cnv(x0)); }
-#endif
- template<class It> void seed(It& first, It last) { lcf.seed(first,last); }
-
- /**
- * Returns the next value of the generator.
- */
- int32_t operator()() { return static_cast<int32_t>(lcf() >> 17); }
- // by experiment from lrand48()
- static bool validation(int32_t x) { return x == 1993516219; }
-
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
+ /** Seeds the generator with the default seed. */
+ rand48() : lcf(cnv(static_cast<uint32_t>(1))) {}
+ /**
+ * Constructs a \rand48 generator with x(0) := (x0 << 16) | 0x330e.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(rand48, result_type, x0)
+ { seed(x0); }
+ /**
+ * Seeds the generator with values produced by @c seq.generate().
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(rand48, SeedSeq, seq)
+ { seed(seq); }
+ /**
+ * Seeds the generator using values from an iterator range,
+ * and updates first to point one past the last value consumed.
+ */
+ template<class It> rand48(It& first, It last) : lcf(first, last) { }
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Seeds the generator with the default seed. */
+ void seed() { seed(static_cast<uint32_t>(1)); }
+ /**
+ * Changes the current value x(n) of the generator to (x0 << 16) | 0x330e.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(rand48, result_type, x0)
+ { lcf.seed(cnv(x0)); }
+ /**
+ * Seeds the generator using values from an iterator range,
+ * and updates first to point one past the last value consumed.
+ */
+ template<class It> void seed(It& first, It last) { lcf.seed(first,last); }
+ /**
+ * Seeds the generator with values produced by @c seq.generate().
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(rand48, SeedSeq, seq)
+ { lcf.seed(seq); }
+
+ /** Returns the next value of the generator. */
+ uint32_t operator()() { return static_cast<uint32_t>(lcf() >> 17); }
+
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z) { lcf.discard(z); }
+
+ /** Fills a range with random values */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ {
+ for(; first != last; ++first) {
+ *first = (*this)();
+ }
+ }
#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT,class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const rand48& r)
- { os << r.lcf; return os; }
-
- template<class CharT,class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, rand48& r)
- { is >> r.lcf; return is; }
+ /** Writes a @c rand48 to a @c std::ostream. */
+ template<class CharT,class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os, const rand48& r)
+ { os << r.lcf; return os; }
+
+ /** Reads a @c rand48 from a @c std::istream. */
+ template<class CharT,class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is, rand48& r)
+ { is >> r.lcf; return is; }
#endif
- friend bool operator==(const rand48& x, const rand48& y)
- { return x.lcf == y.lcf; }
- friend bool operator!=(const rand48& x, const rand48& y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(const rand48& rhs) const
- { return lcf == rhs.lcf; }
- bool operator!=(const rand48& rhs) const
- { return !(*this == rhs); }
-#endif
+ /**
+ * Returns true if the two generators will produce identical
+ * sequences of values.
+ */
+ friend bool operator==(const rand48& x, const rand48& y)
+ { return x.lcf == y.lcf; }
+ /**
+ * Returns true if the two generators will produce different
+ * sequences of values.
+ */
+ friend bool operator!=(const rand48& x, const rand48& y)
+ { return !(x == y); }
private:
- /// \cond hide_private_members
- random::linear_congruential<uint64_t,
- uint64_t(0xDEECE66DUL) | (uint64_t(0x5) << 32), // xxxxULL is not portable
- 0xB, uint64_t(1)<<48, /* unknown */ 0> lcf;
- template<class T>
- static uint64_t cnv(T x)
- {
- if(sizeof(T) < sizeof(uint64_t)) {
- return (static_cast<uint64_t>(x) << 16) | 0x330e;
- } else {
- return(static_cast<uint64_t>(x));
- }
- }
- static uint64_t cnv(float x) { return(static_cast<uint64_t>(x)); }
- static uint64_t cnv(double x) { return(static_cast<uint64_t>(x)); }
- static uint64_t cnv(long double x) { return(static_cast<uint64_t>(x)); }
- /// \endcond
+ /// \cond show_private
+ typedef random::linear_congruential_engine<uint64_t,
+ // xxxxULL is not portable
+ uint64_t(0xDEECE66DUL) | (uint64_t(0x5) << 32),
+ 0xB, uint64_t(1)<<48> lcf_t;
+ lcf_t lcf;
+
+ static boost::uint64_t cnv(boost::uint32_t x)
+ { return (static_cast<uint64_t>(x) << 16) | 0x330e; }
+ /// \endcond
};
#endif /* !BOOST_NO_INT64_T && !BOOST_NO_INTEGRAL_INT64_T */
+} // namespace random
+
+using random::minstd_rand0;
+using random::minstd_rand;
+using random::rand48;
+
} // namespace boost
#include <boost/random/detail/enable_warnings.hpp>
-/* boost random/tausworthe.hpp header file
+/* boost random/linear_feedback_shift.hpp header file
*
* Copyright Jens Maurer 2002
+ * Copyright Steven Watanabe 2011
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: linear_feedback_shift.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: linear_feedback_shift.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
*/
#ifndef BOOST_RANDOM_LINEAR_FEEDBACK_SHIFT_HPP
#define BOOST_RANDOM_LINEAR_FEEDBACK_SHIFT_HPP
-#include <iostream>
-#include <cassert>
+#include <iosfwd>
#include <stdexcept>
#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
#include <boost/static_assert.hpp>
-#include <boost/limits.hpp>
+#include <boost/integer/integer_mask.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/seed.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/seed_impl.hpp>
namespace boost {
namespace random {
/**
- * Instatiation of @c linear_feedback_shift model a
+ * Instatiations of @c linear_feedback_shift model a
* \pseudo_random_number_generator. It was originally
* proposed in
*
* Tausworthe, R. C.(1965), Mathematics of Computation 19, 201-209.
* @endblockquote
*/
-template<class UIntType, int w, int k, int q, int s, UIntType val>
-class linear_feedback_shift
+template<class UIntType, int w, int k, int q, int s>
+class linear_feedback_shift_engine
{
public:
- typedef UIntType result_type;
- // avoid the warning trouble when using (1<<w) on 32 bit machines
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
- BOOST_STATIC_CONSTANT(int, word_size = w);
- BOOST_STATIC_CONSTANT(int, exponent1 = k);
- BOOST_STATIC_CONSTANT(int, exponent2 = q);
- BOOST_STATIC_CONSTANT(int, step_size = s);
-
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return 0; }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return wordmask; }
-
- // MSVC 6 and possibly others crash when encountering complicated integral
- // constant expressions. Avoid the checks for now.
- // BOOST_STATIC_ASSERT(w > 0);
- // BOOST_STATIC_ASSERT(q > 0);
- // BOOST_STATIC_ASSERT(k < w);
- // BOOST_STATIC_ASSERT(0 < 2*q && 2*q < k);
- // BOOST_STATIC_ASSERT(0 < s && s <= k-q);
-
- explicit linear_feedback_shift(UIntType s0 = 341) : wordmask(0)
- {
- // MSVC fails BOOST_STATIC_ASSERT with std::numeric_limits at class scope
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(std::numeric_limits<UIntType>::is_integer);
- BOOST_STATIC_ASSERT(!std::numeric_limits<UIntType>::is_signed);
-#endif
-
- // avoid "left shift count >= with of type" warning
- for(int i = 0; i < w; ++i)
- wordmask |= (1u << i);
- seed(s0);
- }
-
- template<class It> linear_feedback_shift(It& first, It last) : wordmask(0)
- {
- // MSVC fails BOOST_STATIC_ASSERT with std::numeric_limits at class scope
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(std::numeric_limits<UIntType>::is_integer);
- BOOST_STATIC_ASSERT(!std::numeric_limits<UIntType>::is_signed);
-#endif
-
- // avoid "left shift count >= with of type" warning
- for(int i = 0; i < w; ++i)
- wordmask |= (1u << i);
- seed(first, last);
- }
-
- void seed(UIntType s0 = 341) {
- if(s0 < (1 << (w-k))) {
- s0 += 1 << (w-k);
- }
- value = s0;
- }
- template<class It> void seed(It& first, It last)
- {
- if(first == last)
- throw std::invalid_argument("linear_feedback_shift::seed");
- value = *first++;
- assert(value >= (1 << (w-k)));
- }
-
- result_type operator()()
- {
- const UIntType b = (((value << q) ^ value) & wordmask) >> (k-s);
- const UIntType mask = ( (~static_cast<UIntType>(0)) << (w-k) ) & wordmask;
- value = ((value & mask) << s) ^ b;
- return value;
- }
- static bool validation(result_type x) { return val == x; }
-
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, linear_feedback_shift x)
- { os << x.value; return os; }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, linear_feedback_shift& x)
- { is >> x.value; return is; }
-#endif
-
- friend bool operator==(linear_feedback_shift x, linear_feedback_shift y)
- { return x.value == y.value; }
- friend bool operator!=(linear_feedback_shift x, linear_feedback_shift y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(linear_feedback_shift rhs) const
- { return value == rhs.value; }
- bool operator!=(linear_feedback_shift rhs) const
- { return !(*this == rhs); }
-#endif
+ typedef UIntType result_type;
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ BOOST_STATIC_CONSTANT(int, word_size = w);
+ BOOST_STATIC_CONSTANT(int, exponent1 = k);
+ BOOST_STATIC_CONSTANT(int, exponent2 = q);
+ BOOST_STATIC_CONSTANT(int, step_size = s);
+ BOOST_STATIC_CONSTANT(UIntType, default_seed = 341);
+
+ /** Returns the smallest value that the generator can produce. */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }
+ /** Returns the largest value that the generator can produce. */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return wordmask(); }
+
+ BOOST_STATIC_ASSERT(w > 0);
+ BOOST_STATIC_ASSERT(q > 0);
+ BOOST_STATIC_ASSERT(k < w);
+ BOOST_STATIC_ASSERT(0 < 2*q && 2*q < k);
+ BOOST_STATIC_ASSERT(0 < s && s <= k-q);
+
+ /** Constructs a @c linear_feedback_shift_engine, using the default seed. */
+ linear_feedback_shift_engine() { seed(); }
+
+ /** Constructs a @c linear_feedback_shift_engine, seeding it with s0. */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(linear_feedback_shift_engine,
+ UIntType, s0)
+ { seed(s0); }
+
+ /** Constructs a @c linear_feedback_shift_engine, seeding it with seq. */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(linear_feedback_shift_engine,
+ SeedSeq, seq)
+ { seed(seq); }
+
+ /**
+ * Constructs a @c linear_feedback_shift_engine, seeding it with
+ * values from the range [first, last).
+ */
+ template<class It> linear_feedback_shift_engine(It& first, It last)
+ { seed(first, last); }
+
+ /** Seeds a @c linear_feedback_shift_engine with the default seed. */
+ void seed() { seed(default_seed); }
+
+ /** Seeds a @c linear_feedback_shift_engine with @c s0. */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(linear_feedback_shift_engine,
+ UIntType, s0)
+ {
+ value = s0 & wordmask();
+ if(value < (1 << (w-k))) {
+ value += 1 << (w-k);
+ }
+ }
+
+ /**
+ * Seeds a @c linear_feedback_shift_engine with values
+ * produced by @c seq.generate().
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(linear_feedback_shift_engine,
+ SeedSeq, seq)
+ { seed(detail::seed_one_int<UIntType, (UIntType(2) << (w - 1))>(seq)); }
+
+ /**
+ * Seeds a @c linear_feedback_shift_engine with values
+ * from the range [first, last).
+ */
+ template<class It> void seed(It& first, It last)
+ {
+ seed(detail::get_one_int<UIntType, (UIntType(2) << (w - 1))>(first, last));
+ }
+
+ /** Returns the next value of the generator. */
+ result_type operator()()
+ {
+ const UIntType b = (((value << q) ^ value) & wordmask()) >> (k-s);
+ const UIntType mask = (wordmask() << (w-k)) & wordmask();
+ value = ((value & mask) << s) ^ b;
+ return value;
+ }
+
+ /** Fills a range with random values */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { detail::generate_from_int(*this, first, last); }
+
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z)
+ {
+ for(boost::uintmax_t j = 0; j < z; ++j) {
+ (*this)();
+ }
+ }
+
+ /**
+ * Writes the textual representation of the generator to a @c std::ostream.
+ */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, linear_feedback_shift_engine, x)
+ {
+ os << x.value;
+ return os;
+ }
+
+ /**
+ * Reads the textual representation of the generator from a @c std::istream.
+ */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, linear_feedback_shift_engine, x)
+ {
+ is >> x.value;
+ return is;
+ }
+
+ /**
+ * Returns true if the two generators will produce identical
+ * sequences of outputs.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(linear_feedback_shift_engine, x, y)
+ { return x.value == y.value; }
+
+ /**
+ * Returns true if the two generators will produce different
+ * sequences of outputs.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(linear_feedback_shift_engine)
private:
- UIntType wordmask; // avoid "left shift count >= width of type" warnings
- UIntType value;
+ /// \cond show_private
+ static UIntType wordmask() { return boost::low_bits_mask_t<w>::sig_bits; }
+ /// \endcond
+ UIntType value;
};
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
// A definition is required even for integral static constants
-template<class UIntType, int w, int k, int q, int s, UIntType val>
-const bool linear_feedback_shift<UIntType, w, k, q, s, val>::has_fixed_range;
-template<class UIntType, int w, int k, int q, int s, UIntType val>
-const int linear_feedback_shift<UIntType, w, k, q, s, val>::word_size;
-template<class UIntType, int w, int k, int q, int s, UIntType val>
-const int linear_feedback_shift<UIntType, w, k, q, s, val>::exponent1;
-template<class UIntType, int w, int k, int q, int s, UIntType val>
-const int linear_feedback_shift<UIntType, w, k, q, s, val>::exponent2;
-template<class UIntType, int w, int k, int q, int s, UIntType val>
-const int linear_feedback_shift<UIntType, w, k, q, s, val>::step_size;
+template<class UIntType, int w, int k, int q, int s>
+const bool linear_feedback_shift_engine<UIntType, w, k, q, s>::has_fixed_range;
+template<class UIntType, int w, int k, int q, int s>
+const int linear_feedback_shift_engine<UIntType, w, k, q, s>::word_size;
+template<class UIntType, int w, int k, int q, int s>
+const int linear_feedback_shift_engine<UIntType, w, k, q, s>::exponent1;
+template<class UIntType, int w, int k, int q, int s>
+const int linear_feedback_shift_engine<UIntType, w, k, q, s>::exponent2;
+template<class UIntType, int w, int k, int q, int s>
+const int linear_feedback_shift_engine<UIntType, w, k, q, s>::step_size;
+template<class UIntType, int w, int k, int q, int s>
+const UIntType linear_feedback_shift_engine<UIntType, w, k, q, s>::default_seed;
#endif
+/// \cond show_deprecated
+
+/** Provided for backwards compatibility. */
+template<class UIntType, int w, int k, int q, int s, UIntType v = 0>
+class linear_feedback_shift :
+ public linear_feedback_shift_engine<UIntType, w, k, q, s>
+{
+ typedef linear_feedback_shift_engine<UIntType, w, k, q, s> base_type;
+public:
+ linear_feedback_shift() {}
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(linear_feedback_shift,
+ SeedSeq, seq)
+ { seed(seq); }
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(linear_feedback_shift,
+ UIntType, val)
+ { seed(val); }
+ template<class It>
+ linear_feedback_shift(It& first, It last) : base_type(first, last) {}
+};
+
+/// \endcond
+
} // namespace random
} // namespace boost
/* boost random/lognormal_distribution.hpp header file
*
* Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: lognormal_distribution.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: lognormal_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#include <boost/config/no_tr1/cmath.hpp> // std::exp, std::sqrt
#include <cassert>
-#include <iostream>
+#include <iosfwd>
+#include <istream>
#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
#include <boost/random/normal_distribution.hpp>
-#ifdef BOOST_NO_STDC_NAMESPACE
-namespace std {
- using ::log;
- using ::sqrt;
-}
-#endif
-
namespace boost {
-
-#if defined(__GNUC__) && (__GNUC__ < 3)
-// Special gcc workaround: gcc 2.95.x ignores using-declarations
-// in template classes (confirmed by gcc author Martin v. Loewis)
- using std::sqrt;
- using std::exp;
-#endif
+namespace random {
/**
* Instantiations of class template lognormal_distribution model a
* \random_distribution. Such a distribution produces random numbers
- * with \f$p(x) = \frac{1}{x \sigma_N \sqrt{2\pi}} e^{\frac{-\left(\log(x)-\mu_N\right)^2}{2\sigma_N^2}}\f$
- * for x > 0, where \f$\mu_N = \log\left(\frac{\mu^2}{\sqrt{\sigma^2 + \mu^2}}\right)\f$ and
- * \f$\sigma_N = \sqrt{\log\left(1 + \frac{\sigma^2}{\mu^2}\right)}\f$.
+ * with \f$\displaystyle p(x) = \frac{1}{x s \sqrt{2\pi}} e^{\frac{-\left(\log(x)-m\right)^2}{2s^2}}\f$
+ * for x > 0.
+ *
+ * @xmlwarning
+ * This distribution has been updated to match the C++ standard.
+ * Its behavior has changed from the original
+ * boost::lognormal_distribution. A backwards compatible
+ * version is provided in namespace boost.
+ * @endxmlwarning
*/
template<class RealType = double>
class lognormal_distribution
{
public:
- typedef typename normal_distribution<RealType>::input_type input_type;
- typedef RealType result_type;
-
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
-#endif
-
- /**
- * Constructs a lognormal_distribution. @c mean and @c sigma are the
- * mean and standard deviation of the lognormal distribution.
- */
- explicit lognormal_distribution(result_type mean_arg = result_type(1),
- result_type sigma_arg = result_type(1))
- : _mean(mean_arg), _sigma(sigma_arg)
- {
- assert(_mean > result_type(0));
- init();
- }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- RealType mean() const { return _mean; }
- RealType sigma() const { return _sigma; }
- void reset() { _normal.reset(); }
-
- template<class Engine>
- result_type operator()(Engine& eng)
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::exp;
-#endif
- return exp(_normal(eng) * _nsigma + _nmean);
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const lognormal_distribution& ld)
- {
- os << ld._normal << " " << ld._mean << " " << ld._sigma;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, lognormal_distribution& ld)
- {
- is >> std::ws >> ld._normal >> std::ws >> ld._mean >> std::ws >> ld._sigma;
- ld.init();
- return is;
- }
-#endif
+ typedef typename normal_distribution<RealType>::input_type input_type;
+ typedef RealType result_type;
+
+ class param_type
+ {
+ public:
+
+ typedef lognormal_distribution distribution_type;
+
+ /** Constructs the parameters of a lognormal_distribution. */
+ explicit param_type(RealType m_arg = RealType(0.0),
+ RealType s_arg = RealType(1.0))
+ : _m(m_arg), _s(s_arg) {}
+
+ /** Returns the "m" parameter of the distribution. */
+ RealType m() const { return _m; }
+
+ /** Returns the "s" parameter of the distribution. */
+ RealType s() const { return _s; }
+
+ /** Writes the parameters to a std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ os << parm._m << " " << parm._s;
+ return os;
+ }
+
+ /** Reads the parameters from a std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ is >> parm._m >> std::ws >> parm._s;
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are equal. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._m == rhs._m && lhs._s == rhs._s; }
+
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ RealType _m;
+ RealType _s;
+ };
+
+ /**
+ * Constructs a lognormal_distribution. @c m and @c s are the
+ * parameters of the distribution.
+ */
+ explicit lognormal_distribution(RealType m_arg = RealType(0.0),
+ RealType s_arg = RealType(1.0))
+ : _normal(m_arg, s_arg) {}
+
+ /**
+ * Constructs a lognormal_distribution from its parameters.
+ */
+ explicit lognormal_distribution(const param_type& parm)
+ : _normal(parm.m(), parm.s()) {}
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Returns the m parameter of the distribution. */
+ RealType m() const { return _normal.mean(); }
+ /** Returns the s parameter of the distribution. */
+ RealType s() const { return _normal.sigma(); }
+
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return RealType(0); }
+ /** Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return (std::numeric_limits<RealType>::infinity)(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(m(), s()); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ typedef normal_distribution<RealType> normal_type;
+ typename normal_type::param_type normal_param(parm.m(), parm.s());
+ _normal.param(normal_param);
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { _normal.reset(); }
+
+ /**
+ * Returns a random variate distributed according to the
+ * lognormal distribution.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng)
+ {
+ using std::exp;
+ return exp(_normal(eng));
+ }
+
+ /**
+ * Returns a random variate distributed according to the
+ * lognormal distribution with parameters specified by param.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng, const param_type& parm)
+ { return lognormal_distribution(parm)(eng); }
+
+ /** Writes the distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, lognormal_distribution, ld)
+ {
+ os << ld._normal;
+ return os;
+ }
+
+ /** Reads the distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, lognormal_distribution, ld)
+ {
+ is >> ld._normal;
+ return is;
+ }
+
+ /**
+ * Returns true if the two distributions will produce identical
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(lognormal_distribution, lhs, rhs)
+ { return lhs._normal == rhs._normal; }
+
+ /**
+ * Returns true if the two distributions may produce different
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(lognormal_distribution)
private:
+ normal_distribution<result_type> _normal;
+};
- /// \cond hide_private_members
- void init()
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::exp; using std::log; using std::sqrt;
-#endif
- _nmean = log(_mean*_mean/sqrt(_sigma*_sigma + _mean*_mean));
- _nsigma = sqrt(log(_sigma*_sigma/_mean/_mean+result_type(1)));
- }
- /// \endcond
-
- RealType _mean, _sigma;
- RealType _nmean, _nsigma;
- normal_distribution<result_type> _normal;
+} // namespace random
+
+/// \cond show_deprecated
+
+/**
+ * Provided for backwards compatibility. This class is
+ * deprecated. It provides the old behavior of lognormal_distribution with
+ * \f$\displaystyle p(x) = \frac{1}{x \sigma_N \sqrt{2\pi}} e^{\frac{-\left(\log(x)-\mu_N\right)^2}{2\sigma_N^2}}\f$
+ * for x > 0, where \f$\displaystyle \mu_N = \log\left(\frac{\mu^2}{\sqrt{\sigma^2 + \mu^2}}\right)\f$ and
+ * \f$\displaystyle \sigma_N = \sqrt{\log\left(1 + \frac{\sigma^2}{\mu^2}\right)}\f$.
+ */
+template<class RealType = double>
+class lognormal_distribution
+{
+public:
+ typedef typename normal_distribution<RealType>::input_type input_type;
+ typedef RealType result_type;
+
+ lognormal_distribution(RealType mean_arg = RealType(1.0),
+ RealType sigma_arg = RealType(1.0))
+ : _mean(mean_arg), _sigma(sigma_arg)
+ {
+ init();
+ }
+ RealType mean() const { return _mean; }
+ RealType sigma() const { return _sigma; }
+ void reset() { _normal.reset(); }
+ template<class Engine>
+ RealType operator()(Engine& eng)
+ {
+ using std::exp;
+ return exp(_normal(eng) * _nsigma + _nmean);
+ }
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, lognormal_distribution, ld)
+ {
+ os << ld._normal << " " << ld._mean << " " << ld._sigma;
+ return os;
+ }
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, lognormal_distribution, ld)
+ {
+ is >> ld._normal >> std::ws >> ld._mean >> std::ws >> ld._sigma;
+ ld.init();
+ return is;
+ }
+private:
+ /// \cond show_private
+ void init()
+ {
+ using std::log;
+ using std::sqrt;
+ _nmean = log(_mean*_mean/sqrt(_sigma*_sigma + _mean*_mean));
+ _nsigma = sqrt(log(_sigma*_sigma/_mean/_mean+result_type(1)));
+ }
+ RealType _mean;
+ RealType _sigma;
+ RealType _nmean;
+ RealType _nsigma;
+ normal_distribution<RealType> _normal;
+ /// \endcond
};
+/// \endcond
+
} // namespace boost
#endif // BOOST_RANDOM_LOGNORMAL_DISTRIBUTION_HPP
/* boost random/mersenne_twister.hpp header file
*
* Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2010
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: mersenne_twister.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: mersenne_twister.hpp 74867 2011-10-09 23:13:31Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#ifndef BOOST_RANDOM_MERSENNE_TWISTER_HPP
#define BOOST_RANDOM_MERSENNE_TWISTER_HPP
-#include <iostream>
-#include <algorithm> // std::copy
+#include <iosfwd>
+#include <istream>
#include <stdexcept>
#include <boost/config.hpp>
-#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/integer_traits.hpp>
#include <boost/cstdint.hpp>
-#include <boost/random/linear_congruential.hpp>
-#include <boost/detail/workaround.hpp>
+#include <boost/integer/integer_mask.hpp>
#include <boost/random/detail/config.hpp>
#include <boost/random/detail/ptr_helper.hpp>
#include <boost/random/detail/seed.hpp>
+#include <boost/random/detail/seed_impl.hpp>
+#include <boost/random/detail/generator_seed_seq.hpp>
namespace boost {
namespace random {
/**
- * Instantiations of class template mersenne_twister model a
+ * Instantiations of class template mersenne_twister_engine model a
* \pseudo_random_number_generator. It uses the algorithm described in
*
* @blockquote
* its state array. For example, \mt11213b requires about 1408 bytes and
* \mt19937 requires about 2496 bytes.
*/
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-class mersenne_twister
+template<class UIntType,
+ std::size_t w, std::size_t n, std::size_t m, std::size_t r,
+ UIntType a, std::size_t u, UIntType d, std::size_t s,
+ UIntType b, std::size_t t,
+ UIntType c, std::size_t l, UIntType f>
+class mersenne_twister_engine
{
public:
- typedef UIntType result_type;
- BOOST_STATIC_CONSTANT(int, word_size = w);
- BOOST_STATIC_CONSTANT(int, state_size = n);
- BOOST_STATIC_CONSTANT(int, shift_size = m);
- BOOST_STATIC_CONSTANT(int, mask_bits = r);
- BOOST_STATIC_CONSTANT(UIntType, parameter_a = a);
- BOOST_STATIC_CONSTANT(int, output_u = u);
- BOOST_STATIC_CONSTANT(int, output_s = s);
- BOOST_STATIC_CONSTANT(UIntType, output_b = b);
- BOOST_STATIC_CONSTANT(int, output_t = t);
- BOOST_STATIC_CONSTANT(UIntType, output_c = c);
- BOOST_STATIC_CONSTANT(int, output_l = l);
-
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ typedef UIntType result_type;
+ BOOST_STATIC_CONSTANT(std::size_t, word_size = w);
+ BOOST_STATIC_CONSTANT(std::size_t, state_size = n);
+ BOOST_STATIC_CONSTANT(std::size_t, shift_size = m);
+ BOOST_STATIC_CONSTANT(std::size_t, mask_bits = r);
+ BOOST_STATIC_CONSTANT(UIntType, xor_mask = a);
+ BOOST_STATIC_CONSTANT(std::size_t, tempering_u = u);
+ BOOST_STATIC_CONSTANT(UIntType, tempering_d = d);
+ BOOST_STATIC_CONSTANT(std::size_t, tempering_s = s);
+ BOOST_STATIC_CONSTANT(UIntType, tempering_b = b);
+ BOOST_STATIC_CONSTANT(std::size_t, tempering_t = t);
+ BOOST_STATIC_CONSTANT(UIntType, tempering_c = c);
+ BOOST_STATIC_CONSTANT(std::size_t, tempering_l = l);
+ BOOST_STATIC_CONSTANT(UIntType, initialization_multiplier = f);
+ BOOST_STATIC_CONSTANT(UIntType, default_seed = 5489u);
- /**
- * Constructs a @c mersenne_twister and calls @c seed().
- */
- mersenne_twister() { seed(); }
-
- /**
- * Constructs a @c mersenne_twister and calls @c seed(value).
- */
- BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(mersenne_twister, UIntType, value)
- { seed(value); }
- template<class It> mersenne_twister(It& first, It last) { seed(first,last); }
-
- /**
- * Constructs a mersenne_twister and calls @c seed(gen).
- *
- * @xmlnote
- * The copy constructor will always be preferred over
- * the templated constructor.
- * @endxmlnote
- */
- BOOST_RANDOM_DETAIL_GENERATOR_CONSTRUCTOR(mersenne_twister, Generator, gen)
- { seed(gen); }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- /** Calls @c seed(result_type(5489)). */
- void seed() { seed(UIntType(5489)); }
-
- /**
- * Sets the state x(0) to v mod 2w. Then, iteratively,
- * sets x(i) to (i + 1812433253 * (x(i-1) xor (x(i-1) rshift w-2))) mod 2<sup>w</sup>
- * for i = 1 .. n-1. x(n) is the first value to be returned by operator().
- */
- BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(mersenne_twister, UIntType, value)
- {
- // New seeding algorithm from
- // http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html
- // In the previous versions, MSBs of the seed affected only MSBs of the
- // state x[].
- const UIntType mask = ~0u;
- x[0] = value & mask;
- for (i = 1; i < n; i++) {
- // See Knuth "The Art of Computer Programming" Vol. 2, 3rd ed., page 106
- x[i] = (1812433253UL * (x[i-1] ^ (x[i-1] >> (w-2))) + i) & mask;
+ // backwards compatibility
+ BOOST_STATIC_CONSTANT(UIntType, parameter_a = a);
+ BOOST_STATIC_CONSTANT(std::size_t, output_u = u);
+ BOOST_STATIC_CONSTANT(std::size_t, output_s = s);
+ BOOST_STATIC_CONSTANT(UIntType, output_b = b);
+ BOOST_STATIC_CONSTANT(std::size_t, output_t = t);
+ BOOST_STATIC_CONSTANT(UIntType, output_c = c);
+ BOOST_STATIC_CONSTANT(std::size_t, output_l = l);
+
+ // old Boost.Random concept requirements
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+
+
+ /**
+ * Constructs a @c mersenne_twister_engine and calls @c seed().
+ */
+ mersenne_twister_engine() { seed(); }
+
+ /**
+ * Constructs a @c mersenne_twister_engine and calls @c seed(value).
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(mersenne_twister_engine,
+ UIntType, value)
+ { seed(value); }
+ template<class It> mersenne_twister_engine(It& first, It last)
+ { seed(first,last); }
+
+ /**
+ * Constructs a mersenne_twister_engine and calls @c seed(gen).
+ *
+ * @xmlnote
+ * The copy constructor will always be preferred over
+ * the templated constructor.
+ * @endxmlnote
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(mersenne_twister_engine,
+ SeedSeq, seq)
+ { seed(seq); }
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Calls @c seed(default_seed). */
+ void seed() { seed(default_seed); }
+
+ /**
+ * Sets the state x(0) to v mod 2w. Then, iteratively,
+ * sets x(i) to
+ * (i + f * (x(i-1) xor (x(i-1) rshift w-2))) mod 2<sup>w</sup>
+ * for i = 1 .. n-1. x(n) is the first value to be returned by operator().
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(mersenne_twister_engine, UIntType, value)
+ {
+ // New seeding algorithm from
+ // http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html
+ // In the previous versions, MSBs of the seed affected only MSBs of the
+ // state x[].
+ const UIntType mask = (max)();
+ x[0] = value & mask;
+ for (i = 1; i < n; i++) {
+ // See Knuth "The Art of Computer Programming"
+ // Vol. 2, 3rd ed., page 106
+ x[i] = (f * (x[i-1] ^ (x[i-1] >> (w-2))) + i) & mask;
+ }
+ }
+
+ /**
+ * Seeds a mersenne_twister_engine using values produced by seq.generate().
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(mersenne_twister_engine, SeeqSeq, seq)
+ {
+ detail::seed_array_int<w>(seq, x);
+ i = n;
+
+ // fix up the state if it's all zeroes.
+ if((x[0] & (~static_cast<UIntType>(0) << r)) == 0) {
+ for(std::size_t j = 1; j < n; ++j) {
+ if(x[j] != 0) return;
+ }
+ x[0] = static_cast<UIntType>(1) << (w-1);
+ }
}
- }
-
- /**
- * Sets the state of this mersenne_twister to the values
- * returned by n invocations of gen.
- *
- * Complexity: Exactly n invocations of gen.
- */
- BOOST_RANDOM_DETAIL_GENERATOR_SEED(mersenne_twister, Generator, gen)
- {
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(!std::numeric_limits<result_type>::is_signed);
-#endif
- // I could have used std::generate_n, but it takes "gen" by value
- for(int j = 0; j < n; j++)
- x[j] = gen();
- i = n;
- }
-
- template<class It>
- void seed(It& first, It last)
- {
- int j;
- for(j = 0; j < n && first != last; ++j, ++first)
- x[j] = *first;
- i = n;
- if(first == last && j < n)
- throw std::invalid_argument("mersenne_twister::seed");
- }
-
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return 0; }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const
- {
- // avoid "left shift count >= with of type" warning
- result_type res = 0;
- for(int j = 0; j < w; ++j)
- res |= (1u << j);
- return res;
- }
-
- result_type operator()();
- static bool validation(result_type v) { return val == v; }
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
+ /** Sets the state of the generator using values from an iterator range. */
+ template<class It>
+ void seed(It& first, It last)
+ {
+ detail::fill_array_int<w>(first, last, x);
+ i = n;
+
+ // fix up the state if it's all zeroes.
+ if((x[0] & (~static_cast<UIntType>(0) << r)) == 0) {
+ for(std::size_t j = 1; j < n; ++j) {
+ if(x[j] != 0) return;
+ }
+ x[0] = static_cast<UIntType>(1) << (w-1);
+ }
+ }
+
+ /** Returns the smallest value that the generator can produce. */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return 0; }
+ /** Returns the largest value that the generator can produce. */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return boost::low_bits_mask_t<w>::sig_bits; }
+
+ /** Produces the next value of the generator. */
+ result_type operator()();
+
+ /** Fills a range with random values */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { detail::generate_from_int(*this, first, last); }
+
+ /**
+ * Advances the state of the generator by @c z steps. Equivalent to
+ *
+ * @code
+ * for(unsigned long long i = 0; i < z; ++i) {
+ * gen();
+ * }
+ * @endcode
+ */
+ void discard(boost::uintmax_t z)
+ {
+ for(boost::uintmax_t j = 0; j < z; ++j) {
+ (*this)();
+ }
+ }
#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const mersenne_twister& mt)
- {
- for(int j = 0; j < mt.state_size; ++j)
- os << mt.compute(j) << " ";
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, mersenne_twister& mt)
- {
- for(int j = 0; j < mt.state_size; ++j)
- is >> mt.x[j] >> std::ws;
- // MSVC (up to 7.1) and Borland (up to 5.64) don't handle the template
- // value parameter "n" available from the class template scope, so use
- // the static constant with the same value
- mt.i = mt.state_size;
- return is;
- }
+ /** Writes a mersenne_twister_engine to a @c std::ostream */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const mersenne_twister_engine& mt)
+ {
+ mt.print(os);
+ return os;
+ }
+
+ /** Reads a mersenne_twister_engine from a @c std::istream */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is,
+ mersenne_twister_engine& mt)
+ {
+ for(std::size_t j = 0; j < mt.state_size; ++j)
+ is >> mt.x[j] >> std::ws;
+ // MSVC (up to 7.1) and Borland (up to 5.64) don't handle the template
+ // value parameter "n" available from the class template scope, so use
+ // the static constant with the same value
+ mt.i = mt.state_size;
+ return is;
+ }
#endif
- friend bool operator==(const mersenne_twister& x, const mersenne_twister& y)
- {
- for(int j = 0; j < state_size; ++j)
- if(x.compute(j) != y.compute(j))
- return false;
- return true;
- }
-
- friend bool operator!=(const mersenne_twister& x, const mersenne_twister& y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(const mersenne_twister& rhs) const
- {
- for(int j = 0; j < state_size; ++j)
- if(compute(j) != rhs.compute(j))
- return false;
- return true;
- }
-
- bool operator!=(const mersenne_twister& rhs) const
- { return !(*this == rhs); }
-#endif
+ /**
+ * Returns true if the two generators are in the same state,
+ * and will thus produce identical sequences.
+ */
+ friend bool operator==(const mersenne_twister_engine& x,
+ const mersenne_twister_engine& y)
+ {
+ if(x.i < y.i) return x.equal_imp(y);
+ else return y.equal_imp(x);
+ }
+
+ /**
+ * Returns true if the two generators are in different states.
+ */
+ friend bool operator!=(const mersenne_twister_engine& x,
+ const mersenne_twister_engine& y)
+ { return !(x == y); }
private:
- /// \cond hide_private_members
- // returns x(i-n+index), where index is in 0..n-1
- UIntType compute(unsigned int index) const
- {
- // equivalent to (i-n+index) % 2n, but doesn't produce negative numbers
- return x[ (i + n + index) % (2*n) ];
- }
- void twist(int block);
- /// \endcond
-
- // state representation: next output is o(x(i))
- // x[0] ... x[k] x[k+1] ... x[n-1] x[n] ... x[2*n-1] represents
- // x(i-k) ... x(i) x(i+1) ... x(i-k+n-1) x(i-k-n) ... x[i(i-k-1)]
- // The goal is to always have x(i-n) ... x(i-1) available for
- // operator== and save/restore.
-
- UIntType x[2*n];
- int i;
+ /// \cond show_private
+
+ void twist();
+
+ /**
+ * Does the work of operator==. This is in a member function
+ * for portability. Some compilers, such as msvc 7.1 and
+ * Sun CC 5.10 can't access template parameters or static
+ * members of the class from inline friend functions.
+ *
+ * requires i <= other.i
+ */
+ bool equal_imp(const mersenne_twister_engine& other) const
+ {
+ UIntType back[n];
+ std::size_t offset = other.i - i;
+ for(std::size_t j = 0; j + offset < n; ++j)
+ if(x[j] != other.x[j+offset])
+ return false;
+ rewind(&back[n-1], offset);
+ for(std::size_t j = 0; j < offset; ++j)
+ if(back[j + n - offset] != other.x[j])
+ return false;
+ return true;
+ }
+
+ /**
+ * Does the work of operator<<. This is in a member function
+ * for portability.
+ */
+ template<class CharT, class Traits>
+ void print(std::basic_ostream<CharT, Traits>& os) const
+ {
+ UIntType data[n];
+ for(std::size_t j = 0; j < i; ++j) {
+ data[j + n - i] = x[j];
+ }
+ if(i != n) {
+ rewind(&data[n - i - 1], n - i);
+ }
+ os << data[0];
+ for(std::size_t j = 1; j < n; ++j) {
+ os << ' ' << data[j];
+ }
+ }
+
+ /**
+ * Copies z elements of the state preceding x[0] into
+ * the array whose last element is last.
+ */
+ void rewind(UIntType* last, std::size_t z) const
+ {
+ const UIntType upper_mask = (~static_cast<UIntType>(0)) << r;
+ const UIntType lower_mask = ~upper_mask;
+ UIntType y0 = x[m-1] ^ x[n-1];
+ if(y0 & (static_cast<UIntType>(1) << (w-1))) {
+ y0 = ((y0 ^ a) << 1) | 1;
+ } else {
+ y0 = y0 << 1;
+ }
+ for(std::size_t sz = 0; sz < z; ++sz) {
+ UIntType y1 =
+ rewind_find(last, sz, m-1) ^ rewind_find(last, sz, n-1);
+ if(y1 & (static_cast<UIntType>(1) << (w-1))) {
+ y1 = ((y1 ^ a) << 1) | 1;
+ } else {
+ y1 = y1 << 1;
+ }
+ *(last - sz) = (y0 & upper_mask) | (y1 & lower_mask);
+ y0 = y1;
+ }
+ }
+
+ /**
+ * Given a pointer to the last element of the rewind array,
+ * and the current size of the rewind array, finds an element
+ * relative to the next available slot in the rewind array.
+ */
+ UIntType
+ rewind_find(UIntType* last, std::size_t size, std::size_t j) const
+ {
+ std::size_t index = (j + n - size + n - 1) % n;
+ if(index < n - size) {
+ return x[index];
+ } else {
+ return *(last - (n - 1 - index));
+ }
+ }
+
+ /// \endcond
+
+ // state representation: next output is o(x(i))
+ // x[0] ... x[k] x[k+1] ... x[n-1] represents
+ // x(i-k) ... x(i) x(i+1) ... x(i-k+n-1)
+
+ UIntType x[n];
+ std::size_t i;
};
+/// \cond show_private
+
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
// A definition is required even for integral static constants
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const bool mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::has_fixed_range;
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const int mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::state_size;
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const int mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::shift_size;
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const int mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::mask_bits;
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const UIntType mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::parameter_a;
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const int mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::output_u;
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const int mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::output_s;
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const UIntType mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::output_b;
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const int mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::output_t;
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const UIntType mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::output_c;
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-const int mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::output_l;
+#define BOOST_RANDOM_MT_DEFINE_CONSTANT(type, name) \
+template<class UIntType, std::size_t w, std::size_t n, std::size_t m, \
+ std::size_t r, UIntType a, std::size_t u, UIntType d, std::size_t s, \
+ UIntType b, std::size_t t, UIntType c, std::size_t l, UIntType f> \
+const type mersenne_twister_engine<UIntType,w,n,m,r,a,u,d,s,b,t,c,l,f>::name
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, word_size);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, state_size);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, shift_size);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, mask_bits);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(UIntType, xor_mask);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, tempering_u);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(UIntType, tempering_d);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, tempering_s);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(UIntType, tempering_b);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, tempering_t);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(UIntType, tempering_c);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, tempering_l);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(UIntType, initialization_multiplier);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(UIntType, default_seed);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(UIntType, parameter_a);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, output_u );
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, output_s);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(UIntType, output_b);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, output_t);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(UIntType, output_c);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(std::size_t, output_l);
+BOOST_RANDOM_MT_DEFINE_CONSTANT(bool, has_fixed_range);
+#undef BOOST_RANDOM_MT_DEFINE_CONSTANT
#endif
-/// \cond hide_private_members
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-void mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::twist(int block)
+template<class UIntType,
+ std::size_t w, std::size_t n, std::size_t m, std::size_t r,
+ UIntType a, std::size_t u, UIntType d, std::size_t s,
+ UIntType b, std::size_t t,
+ UIntType c, std::size_t l, UIntType f>
+void
+mersenne_twister_engine<UIntType,w,n,m,r,a,u,d,s,b,t,c,l,f>::twist()
{
- const UIntType upper_mask = (~0u) << r;
- const UIntType lower_mask = ~upper_mask;
+ const UIntType upper_mask = (~static_cast<UIntType>(0)) << r;
+ const UIntType lower_mask = ~upper_mask;
+
+ const std::size_t unroll_factor = 6;
+ const std::size_t unroll_extra1 = (n-m) % unroll_factor;
+ const std::size_t unroll_extra2 = (m-1) % unroll_factor;
- if(block == 0) {
- for(int j = n; j < 2*n; j++) {
- UIntType y = (x[j-n] & upper_mask) | (x[j-(n-1)] & lower_mask);
- x[j] = x[j-(n-m)] ^ (y >> 1) ^ (y&1 ? a : 0);
- }
- } else if (block == 1) {
// split loop to avoid costly modulo operations
{ // extra scope for MSVC brokenness w.r.t. for scope
- for(int j = 0; j < n-m; j++) {
- UIntType y = (x[j+n] & upper_mask) | (x[j+n+1] & lower_mask);
- x[j] = x[j+n+m] ^ (y >> 1) ^ (y&1 ? a : 0);
- }
+ for(std::size_t j = 0; j < n-m-unroll_extra1; j++) {
+ UIntType y = (x[j] & upper_mask) | (x[j+1] & lower_mask);
+ x[j] = x[j+m] ^ (y >> 1) ^ ((x[j+1]&1) * a);
+ }
}
-
- for(int j = n-m; j < n-1; j++) {
- UIntType y = (x[j+n] & upper_mask) | (x[j+n+1] & lower_mask);
- x[j] = x[j-(n-m)] ^ (y >> 1) ^ (y&1 ? a : 0);
+ {
+ for(std::size_t j = n-m-unroll_extra1; j < n-m; j++) {
+ UIntType y = (x[j] & upper_mask) | (x[j+1] & lower_mask);
+ x[j] = x[j+m] ^ (y >> 1) ^ ((x[j+1]&1) * a);
+ }
+ }
+ {
+ for(std::size_t j = n-m; j < n-1-unroll_extra2; j++) {
+ UIntType y = (x[j] & upper_mask) | (x[j+1] & lower_mask);
+ x[j] = x[j-(n-m)] ^ (y >> 1) ^ ((x[j+1]&1) * a);
+ }
+ }
+ {
+ for(std::size_t j = n-1-unroll_extra2; j < n-1; j++) {
+ UIntType y = (x[j] & upper_mask) | (x[j+1] & lower_mask);
+ x[j] = x[j-(n-m)] ^ (y >> 1) ^ ((x[j+1]&1) * a);
+ }
}
// last iteration
- UIntType y = (x[2*n-1] & upper_mask) | (x[0] & lower_mask);
- x[n-1] = x[m-1] ^ (y >> 1) ^ (y&1 ? a : 0);
+ UIntType y = (x[n-1] & upper_mask) | (x[0] & lower_mask);
+ x[n-1] = x[m-1] ^ (y >> 1) ^ ((x[0]&1) * a);
i = 0;
- }
}
/// \endcond
-template<class UIntType, int w, int n, int m, int r, UIntType a, int u,
- int s, UIntType b, int t, UIntType c, int l, UIntType val>
-inline typename mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::result_type
-mersenne_twister<UIntType,w,n,m,r,a,u,s,b,t,c,l,val>::operator()()
+template<class UIntType,
+ std::size_t w, std::size_t n, std::size_t m, std::size_t r,
+ UIntType a, std::size_t u, UIntType d, std::size_t s,
+ UIntType b, std::size_t t,
+ UIntType c, std::size_t l, UIntType f>
+inline typename
+mersenne_twister_engine<UIntType,w,n,m,r,a,u,d,s,b,t,c,l,f>::result_type
+mersenne_twister_engine<UIntType,w,n,m,r,a,u,d,s,b,t,c,l,f>::operator()()
{
- if(i == n)
- twist(0);
- else if(i >= 2*n)
- twist(1);
- // Step 4
- UIntType z = x[i];
- ++i;
- z ^= (z >> u);
- z ^= ((z << s) & b);
- z ^= ((z << t) & c);
- z ^= (z >> l);
- return z;
+ if(i == n)
+ twist();
+ // Step 4
+ UIntType z = x[i];
+ ++i;
+ z ^= ((z >> u) & d);
+ z ^= ((z << s) & b);
+ z ^= ((z << t) & c);
+ z ^= (z >> l);
+ return z;
}
-} // namespace random
-
/**
* The specializations \mt11213b and \mt19937 are from
*
* Generation, Vol. 8, No. 1, January 1998, pp. 3-30.
* @endblockquote
*/
-typedef random::mersenne_twister<uint32_t,32,351,175,19,0xccab8ee7,11,
- 7,0x31b6ab00,15,0xffe50000,17, 0xa37d3c92> mt11213b;
+typedef mersenne_twister_engine<uint32_t,32,351,175,19,0xccab8ee7,
+ 11,0xffffffff,7,0x31b6ab00,15,0xffe50000,17,1812433253> mt11213b;
/**
* The specializations \mt11213b and \mt19937 are from
* Generation, Vol. 8, No. 1, January 1998, pp. 3-30.
* @endblockquote
*/
-typedef random::mersenne_twister<uint32_t,32,624,397,31,0x9908b0df,11,
- 7,0x9d2c5680,15,0xefc60000,18, 3346425566U> mt19937;
+typedef mersenne_twister_engine<uint32_t,32,624,397,31,0x9908b0df,
+ 11,0xffffffff,7,0x9d2c5680,15,0xefc60000,18,1812433253> mt19937;
+
+#if !defined(BOOST_NO_INT64_T) && !defined(BOOST_NO_INTEGRAL_INT64_T)
+typedef mersenne_twister_engine<uint64_t,64,312,156,31,
+ UINT64_C(0xb5026f5aa96619e9),29,UINT64_C(0x5555555555555555),17,
+ UINT64_C(0x71d67fffeda60000),37,UINT64_C(0xfff7eee000000000),43,
+ UINT64_C(6364136223846793005)> mt19937_64;
+#endif
+
+/// \cond show_deprecated
+
+template<class UIntType,
+ int w, int n, int m, int r,
+ UIntType a, int u, std::size_t s,
+ UIntType b, int t,
+ UIntType c, int l, UIntType v>
+class mersenne_twister :
+ public mersenne_twister_engine<UIntType,
+ w, n, m, r, a, u, ~(UIntType)0, s, b, t, c, l, 1812433253>
+{
+ typedef mersenne_twister_engine<UIntType,
+ w, n, m, r, a, u, ~(UIntType)0, s, b, t, c, l, 1812433253> base_type;
+public:
+ mersenne_twister() {}
+ BOOST_RANDOM_DETAIL_GENERATOR_CONSTRUCTOR(mersenne_twister, Gen, gen)
+ { seed(gen); }
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(mersenne_twister, UIntType, val)
+ { seed(val); }
+ template<class It>
+ mersenne_twister(It& first, It last) : base_type(first, last) {}
+ void seed() { base_type::seed(); }
+ BOOST_RANDOM_DETAIL_GENERATOR_SEED(mersenne_twister, Gen, gen)
+ {
+ detail::generator_seed_seq<Gen> seq(gen);
+ base_type::seed(seq);
+ }
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(mersenne_twister, UIntType, val)
+ { base_type::seed(val); }
+ template<class It>
+ void seed(It& first, It last) { base_type::seed(first, last); }
+};
+
+/// \endcond
+
+} // namespace random
+
+using random::mt11213b;
+using random::mt19937;
+using random::mt19937_64;
} // namespace boost
+BOOST_RANDOM_PTR_HELPER_SPEC(boost::mt11213b)
BOOST_RANDOM_PTR_HELPER_SPEC(boost::mt19937)
+BOOST_RANDOM_PTR_HELPER_SPEC(boost::mt19937_64)
#endif // BOOST_RANDOM_MERSENNE_TWISTER_HPP
--- /dev/null
+/* boost random/negative_binomial_distribution.hpp header file
+ *
+ * Copyright Steven Watanabe 2010
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: negative_binomial_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ */
+
+#ifndef BOOST_RANDOM_NEGATIVE_BINOMIAL_DISTRIBUTION_HPP_INCLUDED
+#define BOOST_RANDOM_NEGATIVE_BINOMIAL_DISTRIBUTION_HPP_INCLUDED
+
+#include <iosfwd>
+
+#include <boost/limits.hpp>
+#include <boost/random/detail/config.hpp>
+#include <boost/random/gamma_distribution.hpp>
+#include <boost/random/poisson_distribution.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * The negative binomial distribution is an integer valued
+ * distribution with two parameters, @c k and @c p. The
+ * distribution produces non-negative values.
+ *
+ * The distribution function is
+ * \f$\displaystyle P(i) = {k+i-1\choose i}p^k(1-p)^i\f$.
+ *
+ * This implementation uses a gamma-poisson mixture.
+ */
+template<class IntType = int, class RealType = double>
+class negative_binomial_distribution {
+public:
+ typedef IntType result_type;
+ typedef RealType input_type;
+
+ class param_type {
+ public:
+ typedef negative_binomial_distribution distribution_type;
+ /**
+ * Construct a param_type object. @c k and @c p
+ * are the parameters of the distribution.
+ *
+ * Requires: k >=0 && 0 <= p <= 1
+ */
+ explicit param_type(IntType k_arg = 1, RealType p_arg = RealType (0.5))
+ : _k(k_arg), _p(p_arg)
+ {}
+ /** Returns the @c k parameter of the distribution. */
+ IntType k() const { return _k; }
+ /** Returns the @c p parameter of the distribution. */
+ RealType p() const { return _p; }
+#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
+ /** Writes the parameters of the distribution to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const param_type& parm)
+ {
+ os << parm._p << " " << parm._k;
+ return os;
+ }
+
+ /** Reads the parameters of the distribution from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is, param_type& parm)
+ {
+ is >> parm._p >> std::ws >> parm._k;
+ return is;
+ }
+#endif
+ /** Returns true if the parameters have the same values. */
+ friend bool operator==(const param_type& lhs, const param_type& rhs)
+ {
+ return lhs._k == rhs._k && lhs._p == rhs._p;
+ }
+ /** Returns true if the parameters have different values. */
+ friend bool operator!=(const param_type& lhs, const param_type& rhs)
+ {
+ return !(lhs == rhs);
+ }
+ private:
+ IntType _k;
+ RealType _p;
+ };
+
+ /**
+ * Construct a @c negative_binomial_distribution object. @c k and @c p
+ * are the parameters of the distribution.
+ *
+ * Requires: k >=0 && 0 <= p <= 1
+ */
+ explicit negative_binomial_distribution(IntType k_arg = 1,
+ RealType p_arg = RealType(0.5))
+ : _k(k_arg), _p(p_arg)
+ {}
+
+ /**
+ * Construct an @c negative_binomial_distribution object from the
+ * parameters.
+ */
+ explicit negative_binomial_distribution(const param_type& parm)
+ : _k(parm.k()), _p(parm.p())
+ {}
+
+ /**
+ * Returns a random variate distributed according to the
+ * negative binomial distribution.
+ */
+ template<class URNG>
+ IntType operator()(URNG& urng) const
+ {
+ gamma_distribution<RealType> gamma(_k, (1-_p)/_p);
+ poisson_distribution<IntType, RealType> poisson(gamma(urng));
+ return poisson(urng);
+ }
+
+ /**
+ * Returns a random variate distributed according to the negative
+ * binomial distribution with parameters specified by @c param.
+ */
+ template<class URNG>
+ IntType operator()(URNG& urng, const param_type& parm) const
+ {
+ return negative_binomial_distribution(parm)(urng);
+ }
+
+ /** Returns the @c k parameter of the distribution. */
+ IntType k() const { return _k; }
+ /** Returns the @c p parameter of the distribution. */
+ RealType p() const { return _p; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ IntType min BOOST_PREVENT_MACRO_SUBSTITUTION() const { return 0; }
+ /** Returns the largest value that the distribution can produce. */
+ IntType max BOOST_PREVENT_MACRO_SUBSTITUTION() const
+ { return (std::numeric_limits<IntType>::max)(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_k, _p); }
+ /** Sets parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _k = parm.k();
+ _p = parm.p();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
+ /** Writes the parameters of the distribution to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const negative_binomial_distribution& bd)
+ {
+ os << bd.param();
+ return os;
+ }
+
+ /** Reads the parameters of the distribution from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is,
+ negative_binomial_distribution& bd)
+ {
+ bd.read(is);
+ return is;
+ }
+#endif
+
+ /** Returns true if the two distributions will produce the same
+ sequence of values, given equal generators. */
+ friend bool operator==(const negative_binomial_distribution& lhs,
+ const negative_binomial_distribution& rhs)
+ {
+ return lhs._k == rhs._k && lhs._p == rhs._p;
+ }
+ /** Returns true if the two distributions could produce different
+ sequences of values, given equal generators. */
+ friend bool operator!=(const negative_binomial_distribution& lhs,
+ const negative_binomial_distribution& rhs)
+ {
+ return !(lhs == rhs);
+ }
+
+private:
+
+ /// @cond \show_private
+
+ template<class CharT, class Traits>
+ void read(std::basic_istream<CharT, Traits>& is) {
+ param_type parm;
+ if(is >> parm) {
+ param(parm);
+ }
+ }
+
+ // parameters
+ IntType _k;
+ RealType _p;
+
+ /// @endcond
+};
+
+}
+
+}
+
+#endif
/* boost random/normal_distribution.hpp header file
*
* Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2010-2011
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: normal_distribution.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: normal_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#define BOOST_RANDOM_NORMAL_DISTRIBUTION_HPP
#include <boost/config/no_tr1/cmath.hpp>
-#include <cassert>
-#include <iostream>
+#include <istream>
+#include <iosfwd>
+#include <boost/assert.hpp>
#include <boost/limits.hpp>
#include <boost/static_assert.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/uniform_01.hpp>
namespace boost {
+namespace random {
+
+// deterministic Box-Muller method, uses trigonometric functions
/**
* Instantiations of class template normal_distribution model a
* \random_distribution. Such a distribution produces random numbers
* @c x distributed with probability density function
- * \f$p(x) = \frac{1}{\sqrt{2\pi\sigma}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}\f$,
+ * \f$\displaystyle p(x) =
+ * \frac{1}{\sqrt{2\pi\sigma}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}
+ * \f$,
* where mean and sigma are the parameters of the distribution.
*/
-// deterministic Box-Muller method, uses trigonometric functions
template<class RealType = double>
class normal_distribution
{
public:
- typedef RealType input_type;
- typedef RealType result_type;
-
-#if !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) && !(defined(BOOST_MSVC) && BOOST_MSVC <= 1300)
- BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
-#endif
-
- /**
- * Constructs a normal_distribution object. @c mean and @c sigma are
- * the parameters for the distribution.
- *
- * Requires: sigma > 0
- */
- explicit normal_distribution(const result_type& mean_arg = result_type(0),
- const result_type& sigma_arg = result_type(1))
- : _mean(mean_arg), _sigma(sigma_arg), _valid(false)
- {
- assert(_sigma >= result_type(0));
- }
-
- // compiler-generated copy constructor is NOT fine, need to purge cache
- normal_distribution(const normal_distribution& other)
- : _mean(other._mean), _sigma(other._sigma), _valid(false)
- {
- }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- /**
- * Returns: The "mean" parameter of the distribution.
- */
- RealType mean() const { return _mean; }
- /**
- * Returns: The "sigma" parameter of the distribution.
- */
- RealType sigma() const { return _sigma; }
-
- void reset() { _valid = false; }
-
- template<class Engine>
- result_type operator()(Engine& eng)
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::sqrt; using std::log; using std::sin; using std::cos;
-#endif
- if(!_valid) {
- _r1 = eng();
- _r2 = eng();
- _cached_rho = sqrt(-result_type(2) * log(result_type(1)-_r2));
- _valid = true;
- } else {
- _valid = false;
+ typedef RealType input_type;
+ typedef RealType result_type;
+
+ class param_type {
+ public:
+ typedef normal_distribution distribution_type;
+
+ /**
+ * Constructs a @c param_type with a given mean and
+ * standard deviation.
+ *
+ * Requires: sigma >= 0
+ */
+ explicit param_type(RealType mean_arg = RealType(0.0),
+ RealType sigma_arg = RealType(1.0))
+ : _mean(mean_arg),
+ _sigma(sigma_arg)
+ {}
+
+ /** Returns the mean of the distribution. */
+ RealType mean() const { return _mean; }
+
+ /** Returns the standand deviation of the distribution. */
+ RealType sigma() const { return _sigma; }
+
+ /** Writes a @c param_type to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ { os << parm._mean << " " << parm._sigma ; return os; }
+
+ /** Reads a @c param_type from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ { is >> parm._mean >> std::ws >> parm._sigma; return is; }
+
+ /** Returns true if the two sets of parameters are the same. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._mean == rhs._mean && lhs._sigma == rhs._sigma; }
+
+ /** Returns true if the two sets of parameters are the different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ RealType _mean;
+ RealType _sigma;
+ };
+
+ /**
+ * Constructs a @c normal_distribution object. @c mean and @c sigma are
+ * the parameters for the distribution.
+ *
+ * Requires: sigma >= 0
+ */
+ explicit normal_distribution(const RealType& mean_arg = RealType(0.0),
+ const RealType& sigma_arg = RealType(1.0))
+ : _mean(mean_arg), _sigma(sigma_arg),
+ _r1(0), _r2(0), _cached_rho(0), _valid(false)
+ {
+ BOOST_ASSERT(_sigma >= RealType(0));
}
- // Can we have a boost::mathconst please?
- const result_type pi = result_type(3.14159265358979323846);
-
- return _cached_rho * (_valid ?
- cos(result_type(2)*pi*_r1) :
- sin(result_type(2)*pi*_r1))
- * _sigma + _mean;
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const normal_distribution& nd)
- {
- os << nd._mean << " " << nd._sigma << " "
- << nd._valid << " " << nd._cached_rho << " " << nd._r1;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, normal_distribution& nd)
- {
- is >> std::ws >> nd._mean >> std::ws >> nd._sigma
- >> std::ws >> nd._valid >> std::ws >> nd._cached_rho
- >> std::ws >> nd._r1;
- return is;
- }
-#endif
+
+ /**
+ * Constructs a @c normal_distribution object from its parameters.
+ */
+ explicit normal_distribution(const param_type& parm)
+ : _mean(parm.mean()), _sigma(parm.sigma()),
+ _r1(0), _r2(0), _cached_rho(0), _valid(false)
+ {}
+
+ /** Returns the mean of the distribution. */
+ RealType mean() const { return _mean; }
+ /** Returns the standard deviation of the distribution. */
+ RealType sigma() const { return _sigma; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return -std::numeric_limits<RealType>::infinity(); }
+ /** Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return std::numeric_limits<RealType>::infinity(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_mean, _sigma); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _mean = parm.mean();
+ _sigma = parm.sigma();
+ _valid = false;
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { _valid = false; }
+
+ /** Returns a normal variate. */
+ template<class Engine>
+ result_type operator()(Engine& eng)
+ {
+ using std::sqrt;
+ using std::log;
+ using std::sin;
+ using std::cos;
+
+ if(!_valid) {
+ _r1 = boost::uniform_01<RealType>()(eng);
+ _r2 = boost::uniform_01<RealType>()(eng);
+ _cached_rho = sqrt(-result_type(2) * log(result_type(1)-_r2));
+ _valid = true;
+ } else {
+ _valid = false;
+ }
+ // Can we have a boost::mathconst please?
+ const result_type pi = result_type(3.14159265358979323846);
+
+ return _cached_rho * (_valid ?
+ cos(result_type(2)*pi*_r1) :
+ sin(result_type(2)*pi*_r1))
+ * _sigma + _mean;
+ }
+
+ /** Returns a normal variate with parameters specified by @c param. */
+ template<class URNG>
+ result_type operator()(URNG& urng, const param_type& parm)
+ {
+ return normal_distribution(parm)(urng);
+ }
+
+ /** Writes a @c normal_distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, normal_distribution, nd)
+ {
+ os << nd._mean << " " << nd._sigma << " "
+ << nd._valid << " " << nd._cached_rho << " " << nd._r1;
+ return os;
+ }
+
+ /** Reads a @c normal_distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, normal_distribution, nd)
+ {
+ is >> std::ws >> nd._mean >> std::ws >> nd._sigma
+ >> std::ws >> nd._valid >> std::ws >> nd._cached_rho
+ >> std::ws >> nd._r1;
+ return is;
+ }
+
+ /**
+ * Returns true if the two instances of @c normal_distribution will
+ * return identical sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(normal_distribution, lhs, rhs)
+ {
+ return lhs._mean == rhs._mean && lhs._sigma == rhs._sigma
+ && lhs._valid == rhs._valid
+ && (!lhs._valid || (lhs._r1 == rhs._r1 && lhs._r2 == rhs._r2));
+ }
+
+ /**
+ * Returns true if the two instances of @c normal_distribution will
+ * return different sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(normal_distribution)
+
private:
- result_type _mean, _sigma;
- result_type _r1, _r2, _cached_rho;
- bool _valid;
+ RealType _mean, _sigma;
+ RealType _r1, _r2, _cached_rho;
+ bool _valid;
+
};
+} // namespace random
+
+using random::normal_distribution;
+
} // namespace boost
#endif // BOOST_RANDOM_NORMAL_DISTRIBUTION_HPP
--- /dev/null
+/* boost random/piecewise_constant_distribution.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: piecewise_constant_distribution.hpp 85813 2013-09-21 20:17:00Z jewillco $
+ */
+
+#ifndef BOOST_RANDOM_PIECEWISE_CONSTANT_DISTRIBUTION_HPP_INCLUDED
+#define BOOST_RANDOM_PIECEWISE_CONSTANT_DISTRIBUTION_HPP_INCLUDED
+
+#include <vector>
+#include <numeric>
+#include <boost/assert.hpp>
+#include <boost/random/uniform_real.hpp>
+#include <boost/random/discrete_distribution.hpp>
+#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/vector_io.hpp>
+
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#include <initializer_list>
+#endif
+
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * The class @c piecewise_constant_distribution models a \random_distribution.
+ */
+template<class RealType = double, class WeightType = double>
+class piecewise_constant_distribution {
+public:
+ typedef std::size_t input_type;
+ typedef RealType result_type;
+
+ class param_type {
+ public:
+
+ typedef piecewise_constant_distribution distribution_type;
+
+ /**
+ * Constructs a @c param_type object, representing a distribution
+ * that produces values uniformly distributed in the range [0, 1).
+ */
+ param_type()
+ {
+ _weights.push_back(WeightType(1));
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ }
+ /**
+ * Constructs a @c param_type object from two iterator ranges
+ * containing the interval boundaries and the interval weights.
+ * If there are less than two boundaries, then this is equivalent to
+ * the default constructor and creates a single interval, [0, 1).
+ *
+ * The values of the interval boundaries must be strictly
+ * increasing, and the number of weights must be one less than
+ * the number of interval boundaries. If there are extra
+ * weights, they are ignored.
+ */
+ template<class IntervalIter, class WeightIter>
+ param_type(IntervalIter intervals_first, IntervalIter intervals_last,
+ WeightIter weight_first)
+ : _intervals(intervals_first, intervals_last)
+ {
+ if(_intervals.size() < 2) {
+ _intervals.clear();
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ _weights.push_back(WeightType(1));
+ } else {
+ _weights.reserve(_intervals.size() - 1);
+ for(std::size_t i = 0; i < _intervals.size() - 1; ++i) {
+ _weights.push_back(*weight_first++);
+ }
+ }
+ }
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+ /**
+ * Constructs a @c param_type object from an
+ * initializer_list containing the interval boundaries
+ * and a unary function specifying the weights. Each
+ * weight is determined by calling the function at the
+ * midpoint of the corresponding interval.
+ *
+ * If the initializer_list contains less than two elements,
+ * this is equivalent to the default constructor and the
+ * distribution will produce values uniformly distributed
+ * in the range [0, 1).
+ */
+ template<class T, class F>
+ param_type(const std::initializer_list<T>& il, F f)
+ : _intervals(il.begin(), il.end())
+ {
+ if(_intervals.size() < 2) {
+ _intervals.clear();
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ _weights.push_back(WeightType(1));
+ } else {
+ _weights.reserve(_intervals.size() - 1);
+ for(std::size_t i = 0; i < _intervals.size() - 1; ++i) {
+ RealType midpoint = (_intervals[i] + _intervals[i + 1]) / 2;
+ _weights.push_back(f(midpoint));
+ }
+ }
+ }
+#endif
+ /**
+ * Constructs a @c param_type object from Boost.Range
+ * ranges holding the interval boundaries and the weights. If
+ * there are less than two interval boundaries, this is equivalent
+ * to the default constructor and the distribution will produce
+ * values uniformly distributed in the range [0, 1). The
+ * number of weights must be one less than the number of
+ * interval boundaries.
+ */
+ template<class IntervalRange, class WeightRange>
+ param_type(const IntervalRange& intervals_arg,
+ const WeightRange& weights_arg)
+ : _intervals(boost::begin(intervals_arg), boost::end(intervals_arg)),
+ _weights(boost::begin(weights_arg), boost::end(weights_arg))
+ {
+ if(_intervals.size() < 2) {
+ _intervals.clear();
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ _weights.push_back(WeightType(1));
+ }
+ }
+
+ /**
+ * Constructs the parameters for a distribution that approximates a
+ * function. The range of the distribution is [xmin, xmax). This
+ * range is divided into nw equally sized intervals and the weights
+ * are found by calling the unary function f on the midpoints of the
+ * intervals.
+ */
+ template<class F>
+ param_type(std::size_t nw, RealType xmin, RealType xmax, F f)
+ {
+ std::size_t n = (nw == 0) ? 1 : nw;
+ double delta = (xmax - xmin) / n;
+ BOOST_ASSERT(delta > 0);
+ for(std::size_t k = 0; k < n; ++k) {
+ _weights.push_back(f(xmin + k*delta + delta/2));
+ _intervals.push_back(xmin + k*delta);
+ }
+ _intervals.push_back(xmax);
+ }
+
+ /** Returns a vector containing the interval boundaries. */
+ std::vector<RealType> intervals() const { return _intervals; }
+
+ /**
+ * Returns a vector containing the probability densities
+ * over all the intervals of the distribution.
+ */
+ std::vector<RealType> densities() const
+ {
+ RealType sum = std::accumulate(_weights.begin(), _weights.end(),
+ static_cast<RealType>(0));
+ std::vector<RealType> result;
+ result.reserve(_weights.size());
+ for(std::size_t i = 0; i < _weights.size(); ++i) {
+ RealType width = _intervals[i + 1] - _intervals[i];
+ result.push_back(_weights[i] / (sum * width));
+ }
+ return result;
+ }
+
+ /** Writes the parameters to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ detail::print_vector(os, parm._intervals);
+ detail::print_vector(os, parm._weights);
+ return os;
+ }
+
+ /** Reads the parameters from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ std::vector<RealType> new_intervals;
+ std::vector<WeightType> new_weights;
+ detail::read_vector(is, new_intervals);
+ detail::read_vector(is, new_weights);
+ if(is) {
+ parm._intervals.swap(new_intervals);
+ parm._weights.swap(new_weights);
+ }
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are the same. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ {
+ return lhs._intervals == rhs._intervals
+ && lhs._weights == rhs._weights;
+ }
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+
+ friend class piecewise_constant_distribution;
+
+ std::vector<RealType> _intervals;
+ std::vector<WeightType> _weights;
+ };
+
+ /**
+ * Creates a new @c piecewise_constant_distribution with
+ * a single interval, [0, 1).
+ */
+ piecewise_constant_distribution()
+ {
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ }
+ /**
+ * Constructs a piecewise_constant_distribution from two iterator ranges
+ * containing the interval boundaries and the interval weights.
+ * If there are less than two boundaries, then this is equivalent to
+ * the default constructor and creates a single interval, [0, 1).
+ *
+ * The values of the interval boundaries must be strictly
+ * increasing, and the number of weights must be one less than
+ * the number of interval boundaries. If there are extra
+ * weights, they are ignored.
+ *
+ * For example,
+ *
+ * @code
+ * double intervals[] = { 0.0, 1.0, 4.0 };
+ * double weights[] = { 1.0, 1.0 };
+ * piecewise_constant_distribution<> dist(
+ * &intervals[0], &intervals[0] + 3, &weights[0]);
+ * @endcode
+ *
+ * The distribution has a 50% chance of producing a
+ * value between 0 and 1 and a 50% chance of producing
+ * a value between 1 and 4.
+ */
+ template<class IntervalIter, class WeightIter>
+ piecewise_constant_distribution(IntervalIter first_interval,
+ IntervalIter last_interval,
+ WeightIter first_weight)
+ : _intervals(first_interval, last_interval)
+ {
+ if(_intervals.size() < 2) {
+ _intervals.clear();
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ } else {
+ std::vector<WeightType> actual_weights;
+ actual_weights.reserve(_intervals.size() - 1);
+ for(std::size_t i = 0; i < _intervals.size() - 1; ++i) {
+ actual_weights.push_back(*first_weight++);
+ }
+ typedef discrete_distribution<std::size_t, WeightType> bins_type;
+ typename bins_type::param_type bins_param(actual_weights);
+ _bins.param(bins_param);
+ }
+ }
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+ /**
+ * Constructs a piecewise_constant_distribution from an
+ * initializer_list containing the interval boundaries
+ * and a unary function specifying the weights. Each
+ * weight is determined by calling the function at the
+ * midpoint of the corresponding interval.
+ *
+ * If the initializer_list contains less than two elements,
+ * this is equivalent to the default constructor and the
+ * distribution will produce values uniformly distributed
+ * in the range [0, 1).
+ */
+ template<class T, class F>
+ piecewise_constant_distribution(std::initializer_list<T> il, F f)
+ : _intervals(il.begin(), il.end())
+ {
+ if(_intervals.size() < 2) {
+ _intervals.clear();
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ } else {
+ std::vector<WeightType> actual_weights;
+ actual_weights.reserve(_intervals.size() - 1);
+ for(std::size_t i = 0; i < _intervals.size() - 1; ++i) {
+ RealType midpoint = (_intervals[i] + _intervals[i + 1]) / 2;
+ actual_weights.push_back(f(midpoint));
+ }
+ typedef discrete_distribution<std::size_t, WeightType> bins_type;
+ typename bins_type::param_type bins_param(actual_weights);
+ _bins.param(bins_param);
+ }
+ }
+#endif
+ /**
+ * Constructs a piecewise_constant_distribution from Boost.Range
+ * ranges holding the interval boundaries and the weights. If
+ * there are less than two interval boundaries, this is equivalent
+ * to the default constructor and the distribution will produce
+ * values uniformly distributed in the range [0, 1). The
+ * number of weights must be one less than the number of
+ * interval boundaries.
+ */
+ template<class IntervalsRange, class WeightsRange>
+ piecewise_constant_distribution(const IntervalsRange& intervals_arg,
+ const WeightsRange& weights_arg)
+ : _bins(weights_arg),
+ _intervals(boost::begin(intervals_arg), boost::end(intervals_arg))
+ {
+ if(_intervals.size() < 2) {
+ _intervals.clear();
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ }
+ }
+ /**
+ * Constructs a piecewise_constant_distribution that approximates a
+ * function. The range of the distribution is [xmin, xmax). This
+ * range is divided into nw equally sized intervals and the weights
+ * are found by calling the unary function f on the midpoints of the
+ * intervals.
+ */
+ template<class F>
+ piecewise_constant_distribution(std::size_t nw,
+ RealType xmin,
+ RealType xmax,
+ F f)
+ : _bins(nw, xmin, xmax, f)
+ {
+ if(nw == 0) { nw = 1; }
+ RealType delta = (xmax - xmin) / nw;
+ _intervals.reserve(nw + 1);
+ for(std::size_t i = 0; i < nw; ++i) {
+ _intervals.push_back(xmin + i * delta);
+ }
+ _intervals.push_back(xmax);
+ }
+ /**
+ * Constructs a piecewise_constant_distribution from its parameters.
+ */
+ explicit piecewise_constant_distribution(const param_type& parm)
+ : _bins(parm._weights),
+ _intervals(parm._intervals)
+ {
+ }
+
+ /**
+ * Returns a value distributed according to the parameters of the
+ * piecewist_constant_distribution.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng) const
+ {
+ std::size_t i = _bins(urng);
+ return uniform_real<RealType>(_intervals[i], _intervals[i+1])(urng);
+ }
+
+ /**
+ * Returns a value distributed according to the parameters
+ * specified by param.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng, const param_type& parm) const
+ {
+ return piecewise_constant_distribution(parm)(urng);
+ }
+
+ /** Returns the smallest value that the distribution can produce. */
+ result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return _intervals.front(); }
+ /** Returns the largest value that the distribution can produce. */
+ result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return _intervals.back(); }
+
+ /**
+ * Returns a vector containing the probability density
+ * over each interval.
+ */
+ std::vector<RealType> densities() const
+ {
+ std::vector<RealType> result(_bins.probabilities());
+ for(std::size_t i = 0; i < result.size(); ++i) {
+ result[i] /= (_intervals[i+1] - _intervals[i]);
+ }
+ return(result);
+ }
+ /** Returns a vector containing the interval boundaries. */
+ std::vector<RealType> intervals() const { return _intervals; }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const
+ {
+ return param_type(_intervals, _bins.probabilities());
+ }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ std::vector<RealType> new_intervals(parm._intervals);
+ typedef discrete_distribution<std::size_t, RealType> bins_type;
+ typename bins_type::param_type bins_param(parm._weights);
+ _bins.param(bins_param);
+ _intervals.swap(new_intervals);
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { _bins.reset(); }
+
+ /** Writes a distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(
+ os, piecewise_constant_distribution, pcd)
+ {
+ os << pcd.param();
+ return os;
+ }
+
+ /** Reads a distribution from a @c std::istream */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(
+ is, piecewise_constant_distribution, pcd)
+ {
+ param_type parm;
+ if(is >> parm) {
+ pcd.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two distributions will return the
+ * same sequence of values, when passed equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(
+ piecewise_constant_distribution, lhs, rhs)
+ {
+ return lhs._bins == rhs._bins && lhs._intervals == rhs._intervals;
+ }
+ /**
+ * Returns true if the two distributions may return different
+ * sequences of values, when passed equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(piecewise_constant_distribution)
+
+private:
+ discrete_distribution<std::size_t, WeightType> _bins;
+ std::vector<RealType> _intervals;
+};
+
+}
+}
+
+#endif
--- /dev/null
+/* boost random/piecewise_linear_distribution.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: piecewise_linear_distribution.hpp 85813 2013-09-21 20:17:00Z jewillco $
+ */
+
+#ifndef BOOST_RANDOM_PIECEWISE_LINEAR_DISTRIBUTION_HPP_INCLUDED
+#define BOOST_RANDOM_PIECEWISE_LINEAR_DISTRIBUTION_HPP_INCLUDED
+
+#include <vector>
+#include <algorithm>
+#include <cmath>
+#include <cstdlib>
+#include <boost/assert.hpp>
+#include <boost/random/uniform_real.hpp>
+#include <boost/random/discrete_distribution.hpp>
+#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/vector_io.hpp>
+
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#include <initializer_list>
+#endif
+
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * The class @c piecewise_linear_distribution models a \random_distribution.
+ */
+template<class RealType = double>
+class piecewise_linear_distribution {
+public:
+ typedef std::size_t input_type;
+ typedef RealType result_type;
+
+ class param_type {
+ public:
+
+ typedef piecewise_linear_distribution distribution_type;
+
+ /**
+ * Constructs a @c param_type object, representing a distribution
+ * that produces values uniformly distributed in the range [0, 1).
+ */
+ param_type()
+ {
+ _weights.push_back(RealType(1));
+ _weights.push_back(RealType(1));
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ }
+ /**
+ * Constructs a @c param_type object from two iterator ranges
+ * containing the interval boundaries and weights at the boundaries.
+ * If there are fewer than two boundaries, then this is equivalent to
+ * the default constructor and the distribution will produce values
+ * uniformly distributed in the range [0, 1).
+ *
+ * The values of the interval boundaries must be strictly
+ * increasing, and the number of weights must be the same as
+ * the number of interval boundaries. If there are extra
+ * weights, they are ignored.
+ */
+ template<class IntervalIter, class WeightIter>
+ param_type(IntervalIter intervals_first, IntervalIter intervals_last,
+ WeightIter weight_first)
+ : _intervals(intervals_first, intervals_last)
+ {
+ if(_intervals.size() < 2) {
+ _intervals.clear();
+ _weights.push_back(RealType(1));
+ _weights.push_back(RealType(1));
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ } else {
+ _weights.reserve(_intervals.size());
+ for(std::size_t i = 0; i < _intervals.size(); ++i) {
+ _weights.push_back(*weight_first++);
+ }
+ }
+ }
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+ /**
+ * Constructs a @c param_type object from an initializer_list
+ * containing the interval boundaries and a unary function
+ * specifying the weights at the boundaries. Each weight is
+ * determined by calling the function at the corresponding point.
+ *
+ * If the initializer_list contains fewer than two elements,
+ * this is equivalent to the default constructor and the
+ * distribution will produce values uniformly distributed
+ * in the range [0, 1).
+ */
+ template<class T, class F>
+ param_type(const std::initializer_list<T>& il, F f)
+ : _intervals(il.begin(), il.end())
+ {
+ if(_intervals.size() < 2) {
+ _intervals.clear();
+ _weights.push_back(RealType(1));
+ _weights.push_back(RealType(1));
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ } else {
+ _weights.reserve(_intervals.size());
+ for(typename std::vector<RealType>::const_iterator
+ iter = _intervals.begin(), end = _intervals.end();
+ iter != end; ++iter)
+ {
+ _weights.push_back(f(*iter));
+ }
+ }
+ }
+#endif
+ /**
+ * Constructs a @c param_type object from Boost.Range ranges holding
+ * the interval boundaries and the weights at the boundaries. If
+ * there are fewer than two interval boundaries, this is equivalent
+ * to the default constructor and the distribution will produce
+ * values uniformly distributed in the range [0, 1). The
+ * number of weights must be equal to the number of
+ * interval boundaries.
+ */
+ template<class IntervalRange, class WeightRange>
+ param_type(const IntervalRange& intervals_arg,
+ const WeightRange& weights_arg)
+ : _intervals(boost::begin(intervals_arg), boost::end(intervals_arg)),
+ _weights(boost::begin(weights_arg), boost::end(weights_arg))
+ {
+ if(_intervals.size() < 2) {
+ _weights.clear();
+ _weights.push_back(RealType(1));
+ _weights.push_back(RealType(1));
+ _intervals.clear();
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ }
+ }
+
+ /**
+ * Constructs the parameters for a distribution that approximates a
+ * function. The range of the distribution is [xmin, xmax). This
+ * range is divided into nw equally sized intervals and the weights
+ * are found by calling the unary function f on the boundaries of the
+ * intervals.
+ */
+ template<class F>
+ param_type(std::size_t nw, RealType xmin, RealType xmax, F f)
+ {
+ std::size_t n = (nw == 0) ? 1 : nw;
+ double delta = (xmax - xmin) / n;
+ BOOST_ASSERT(delta > 0);
+ for(std::size_t k = 0; k < n; ++k) {
+ _weights.push_back(f(xmin + k*delta));
+ _intervals.push_back(xmin + k*delta);
+ }
+ _weights.push_back(f(xmax));
+ _intervals.push_back(xmax);
+ }
+
+ /** Returns a vector containing the interval boundaries. */
+ std::vector<RealType> intervals() const { return _intervals; }
+
+ /**
+ * Returns a vector containing the probability densities
+ * at all the interval boundaries.
+ */
+ std::vector<RealType> densities() const
+ {
+ RealType sum = static_cast<RealType>(0);
+ for(std::size_t i = 0; i < _intervals.size() - 1; ++i) {
+ RealType width = _intervals[i + 1] - _intervals[i];
+ sum += (_weights[i] + _weights[i + 1]) * width / 2;
+ }
+ std::vector<RealType> result;
+ result.reserve(_weights.size());
+ for(typename std::vector<RealType>::const_iterator
+ iter = _weights.begin(), end = _weights.end();
+ iter != end; ++iter)
+ {
+ result.push_back(*iter / sum);
+ }
+ return result;
+ }
+
+ /** Writes the parameters to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ detail::print_vector(os, parm._intervals);
+ detail::print_vector(os, parm._weights);
+ return os;
+ }
+
+ /** Reads the parameters from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ std::vector<RealType> new_intervals;
+ std::vector<RealType> new_weights;
+ detail::read_vector(is, new_intervals);
+ detail::read_vector(is, new_weights);
+ if(is) {
+ parm._intervals.swap(new_intervals);
+ parm._weights.swap(new_weights);
+ }
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are the same. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ {
+ return lhs._intervals == rhs._intervals
+ && lhs._weights == rhs._weights;
+ }
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ friend class piecewise_linear_distribution;
+
+ std::vector<RealType> _intervals;
+ std::vector<RealType> _weights;
+ };
+
+ /**
+ * Creates a new @c piecewise_linear_distribution that
+ * produces values uniformly distributed in the range [0, 1).
+ */
+ piecewise_linear_distribution()
+ {
+ default_init();
+ }
+ /**
+ * Constructs a piecewise_linear_distribution from two iterator ranges
+ * containing the interval boundaries and the weights at the boundaries.
+ * If there are fewer than two boundaries, then this is equivalent to
+ * the default constructor and creates a distribution that
+ * produces values uniformly distributed in the range [0, 1).
+ *
+ * The values of the interval boundaries must be strictly
+ * increasing, and the number of weights must be equal to
+ * the number of interval boundaries. If there are extra
+ * weights, they are ignored.
+ *
+ * For example,
+ *
+ * @code
+ * double intervals[] = { 0.0, 1.0, 2.0 };
+ * double weights[] = { 0.0, 1.0, 0.0 };
+ * piecewise_constant_distribution<> dist(
+ * &intervals[0], &intervals[0] + 3, &weights[0]);
+ * @endcode
+ *
+ * produces a triangle distribution.
+ */
+ template<class IntervalIter, class WeightIter>
+ piecewise_linear_distribution(IntervalIter first_interval,
+ IntervalIter last_interval,
+ WeightIter first_weight)
+ : _intervals(first_interval, last_interval)
+ {
+ if(_intervals.size() < 2) {
+ default_init();
+ } else {
+ _weights.reserve(_intervals.size());
+ for(std::size_t i = 0; i < _intervals.size(); ++i) {
+ _weights.push_back(*first_weight++);
+ }
+ init();
+ }
+ }
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+ /**
+ * Constructs a piecewise_linear_distribution from an
+ * initializer_list containing the interval boundaries
+ * and a unary function specifying the weights. Each
+ * weight is determined by calling the function at the
+ * corresponding interval boundary.
+ *
+ * If the initializer_list contains fewer than two elements,
+ * this is equivalent to the default constructor and the
+ * distribution will produce values uniformly distributed
+ * in the range [0, 1).
+ */
+ template<class T, class F>
+ piecewise_linear_distribution(std::initializer_list<T> il, F f)
+ : _intervals(il.begin(), il.end())
+ {
+ if(_intervals.size() < 2) {
+ default_init();
+ } else {
+ _weights.reserve(_intervals.size());
+ for(typename std::vector<RealType>::const_iterator
+ iter = _intervals.begin(), end = _intervals.end();
+ iter != end; ++iter)
+ {
+ _weights.push_back(f(*iter));
+ }
+ init();
+ }
+ }
+#endif
+ /**
+ * Constructs a piecewise_linear_distribution from Boost.Range
+ * ranges holding the interval boundaries and the weights. If
+ * there are fewer than two interval boundaries, this is equivalent
+ * to the default constructor and the distribution will produce
+ * values uniformly distributed in the range [0, 1). The
+ * number of weights must be equal to the number of
+ * interval boundaries.
+ */
+ template<class IntervalsRange, class WeightsRange>
+ piecewise_linear_distribution(const IntervalsRange& intervals_arg,
+ const WeightsRange& weights_arg)
+ : _intervals(boost::begin(intervals_arg), boost::end(intervals_arg)),
+ _weights(boost::begin(weights_arg), boost::end(weights_arg))
+ {
+ if(_intervals.size() < 2) {
+ default_init();
+ } else {
+ init();
+ }
+ }
+ /**
+ * Constructs a piecewise_linear_distribution that approximates a
+ * function. The range of the distribution is [xmin, xmax). This
+ * range is divided into nw equally sized intervals and the weights
+ * are found by calling the unary function f on the interval boundaries.
+ */
+ template<class F>
+ piecewise_linear_distribution(std::size_t nw,
+ RealType xmin,
+ RealType xmax,
+ F f)
+ {
+ if(nw == 0) { nw = 1; }
+ RealType delta = (xmax - xmin) / nw;
+ _intervals.reserve(nw + 1);
+ for(std::size_t i = 0; i < nw; ++i) {
+ RealType x = xmin + i * delta;
+ _intervals.push_back(x);
+ _weights.push_back(f(x));
+ }
+ _intervals.push_back(xmax);
+ _weights.push_back(f(xmax));
+ init();
+ }
+ /**
+ * Constructs a piecewise_linear_distribution from its parameters.
+ */
+ explicit piecewise_linear_distribution(const param_type& parm)
+ : _intervals(parm._intervals),
+ _weights(parm._weights)
+ {
+ init();
+ }
+
+ /**
+ * Returns a value distributed according to the parameters of the
+ * piecewise_linear_distribution.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng) const
+ {
+ std::size_t i = _bins(urng);
+ bool is_in_rectangle = (i % 2 == 0);
+ i = i / 2;
+ uniform_real<RealType> dist(_intervals[i], _intervals[i+1]);
+ if(is_in_rectangle) {
+ return dist(urng);
+ } else if(_weights[i] < _weights[i+1]) {
+ return (std::max)(dist(urng), dist(urng));
+ } else {
+ return (std::min)(dist(urng), dist(urng));
+ }
+ }
+
+ /**
+ * Returns a value distributed according to the parameters
+ * specified by param.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng, const param_type& parm) const
+ {
+ return piecewise_linear_distribution(parm)(urng);
+ }
+
+ /** Returns the smallest value that the distribution can produce. */
+ result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return _intervals.front(); }
+ /** Returns the largest value that the distribution can produce. */
+ result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return _intervals.back(); }
+
+ /**
+ * Returns a vector containing the probability densities
+ * at the interval boundaries.
+ */
+ std::vector<RealType> densities() const
+ {
+ RealType sum = static_cast<RealType>(0);
+ for(std::size_t i = 0; i < _intervals.size() - 1; ++i) {
+ RealType width = _intervals[i + 1] - _intervals[i];
+ sum += (_weights[i] + _weights[i + 1]) * width / 2;
+ }
+ std::vector<RealType> result;
+ result.reserve(_weights.size());
+ for(typename std::vector<RealType>::const_iterator
+ iter = _weights.begin(), end = _weights.end();
+ iter != end; ++iter)
+ {
+ result.push_back(*iter / sum);
+ }
+ return result;
+ }
+ /** Returns a vector containing the interval boundaries. */
+ std::vector<RealType> intervals() const { return _intervals; }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const
+ {
+ return param_type(_intervals, _weights);
+ }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ std::vector<RealType> new_intervals(parm._intervals);
+ std::vector<RealType> new_weights(parm._weights);
+ init(new_intervals, new_weights);
+ _intervals.swap(new_intervals);
+ _weights.swap(new_weights);
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { _bins.reset(); }
+
+ /** Writes a distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(
+ os, piecewise_linear_distribution, pld)
+ {
+ os << pld.param();
+ return os;
+ }
+
+ /** Reads a distribution from a @c std::istream */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(
+ is, piecewise_linear_distribution, pld)
+ {
+ param_type parm;
+ if(is >> parm) {
+ pld.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two distributions will return the
+ * same sequence of values, when passed equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(
+ piecewise_linear_distribution, lhs, rhs)
+ {
+ return lhs._intervals == rhs._intervals && lhs._weights == rhs._weights;
+ }
+ /**
+ * Returns true if the two distributions may return different
+ * sequences of values, when passed equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(piecewise_linear_distribution)
+
+private:
+
+ /// @cond \show_private
+
+ void init(const std::vector<RealType>& intervals_arg,
+ const std::vector<RealType>& weights_arg)
+ {
+ std::vector<RealType> bin_weights;
+ bin_weights.reserve((intervals_arg.size() - 1) * 2);
+ for(std::size_t i = 0; i < intervals_arg.size() - 1; ++i) {
+ RealType width = intervals_arg[i + 1] - intervals_arg[i];
+ RealType w1 = weights_arg[i];
+ RealType w2 = weights_arg[i + 1];
+ bin_weights.push_back((std::min)(w1, w2) * width);
+ bin_weights.push_back(std::abs(w1 - w2) * width / 2);
+ }
+ typedef discrete_distribution<std::size_t, RealType> bins_type;
+ typename bins_type::param_type bins_param(bin_weights);
+ _bins.param(bins_param);
+ }
+
+ void init()
+ {
+ init(_intervals, _weights);
+ }
+
+ void default_init()
+ {
+ _intervals.clear();
+ _intervals.push_back(RealType(0));
+ _intervals.push_back(RealType(1));
+ _weights.clear();
+ _weights.push_back(RealType(1));
+ _weights.push_back(RealType(1));
+ init();
+ }
+
+ discrete_distribution<std::size_t, RealType> _bins;
+ std::vector<RealType> _intervals;
+ std::vector<RealType> _weights;
+
+ /// @endcond
+};
+
+}
+}
+
+#endif
/* boost random/poisson_distribution.hpp header file
*
* Copyright Jens Maurer 2002
+ * Copyright Steven Watanabe 2010
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: poisson_distribution.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: poisson_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
*/
#define BOOST_RANDOM_POISSON_DISTRIBUTION_HPP
#include <boost/config/no_tr1/cmath.hpp>
-#include <cassert>
-#include <iostream>
+#include <cstdlib>
+#include <iosfwd>
+#include <boost/assert.hpp>
#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
+#include <boost/random/uniform_01.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/disable_warnings.hpp>
+
namespace boost {
+namespace random {
+
+namespace detail {
+
+template<class RealType>
+struct poisson_table {
+ static RealType value[10];
+};
+
+template<class RealType>
+RealType poisson_table<RealType>::value[10] = {
+ 0.0,
+ 0.0,
+ 0.69314718055994529,
+ 1.7917594692280550,
+ 3.1780538303479458,
+ 4.7874917427820458,
+ 6.5792512120101012,
+ 8.5251613610654147,
+ 10.604602902745251,
+ 12.801827480081469
+};
-// Knuth
+}
/**
* An instantiation of the class template @c poisson_distribution is a
* model of \random_distribution. The poisson distribution has
* \f$p(i) = \frac{e^{-\lambda}\lambda^i}{i!}\f$
+ *
+ * This implementation is based on the PTRD algorithm described
+ *
+ * @blockquote
+ * "The transformed rejection method for generating Poisson random variables",
+ * Wolfgang Hormann, Insurance: Mathematics and Economics
+ * Volume 12, Issue 1, February 1993, Pages 39-45
+ * @endblockquote
*/
template<class IntType = int, class RealType = double>
-class poisson_distribution
-{
+class poisson_distribution {
public:
- typedef RealType input_type;
- typedef IntType result_type;
-
- /**
- * Constructs a @c poisson_distribution with the parameter @c mean.
- *
- * Requires: mean > 0
- */
- explicit poisson_distribution(const RealType& mean_arg = RealType(1))
- : _mean(mean_arg)
- {
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- // MSVC fails BOOST_STATIC_ASSERT with std::numeric_limits at class scope
- BOOST_STATIC_ASSERT(std::numeric_limits<IntType>::is_integer);
- BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
+ typedef IntType result_type;
+ typedef RealType input_type;
+
+ class param_type {
+ public:
+ typedef poisson_distribution distribution_type;
+ /**
+ * Construct a param_type object with the parameter "mean"
+ *
+ * Requires: mean > 0
+ */
+ explicit param_type(RealType mean_arg = RealType(1))
+ : _mean(mean_arg)
+ {
+ BOOST_ASSERT(_mean > 0);
+ }
+ /* Returns the "mean" parameter of the distribution. */
+ RealType mean() const { return _mean; }
+#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
+ /** Writes the parameters of the distribution to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT, Traits>&
+ operator<<(std::basic_ostream<CharT, Traits>& os,
+ const param_type& parm)
+ {
+ os << parm._mean;
+ return os;
+ }
+
+ /** Reads the parameters of the distribution from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, param_type& parm)
+ {
+ is >> parm._mean;
+ return is;
+ }
#endif
+ /** Returns true if the parameters have the same values. */
+ friend bool operator==(const param_type& lhs, const param_type& rhs)
+ {
+ return lhs._mean == rhs._mean;
+ }
+ /** Returns true if the parameters have different values. */
+ friend bool operator!=(const param_type& lhs, const param_type& rhs)
+ {
+ return !(lhs == rhs);
+ }
+ private:
+ RealType _mean;
+ };
+
+ /**
+ * Constructs a @c poisson_distribution with the parameter @c mean.
+ *
+ * Requires: mean > 0
+ */
+ explicit poisson_distribution(RealType mean_arg = RealType(1))
+ : _mean(mean_arg)
+ {
+ BOOST_ASSERT(_mean > 0);
+ init();
+ }
+
+ /**
+ * Construct an @c poisson_distribution object from the
+ * parameters.
+ */
+ explicit poisson_distribution(const param_type& parm)
+ : _mean(parm.mean())
+ {
+ init();
+ }
+
+ /**
+ * Returns a random variate distributed according to the
+ * poisson distribution.
+ */
+ template<class URNG>
+ IntType operator()(URNG& urng) const
+ {
+ if(use_inversion()) {
+ return invert(urng);
+ } else {
+ return generate(urng);
+ }
+ }
+
+ /**
+ * Returns a random variate distributed according to the
+ * poisson distribution with parameters specified by param.
+ */
+ template<class URNG>
+ IntType operator()(URNG& urng, const param_type& parm) const
+ {
+ return poisson_distribution(parm)(urng);
+ }
- assert(_mean > RealType(0));
- init();
- }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- /**
- * Returns: the "mean" parameter of the distribution.
- */
- RealType mean() const { return _mean; }
- void reset() { }
-
- template<class Engine>
- result_type operator()(Engine& eng)
- {
- // TODO: This is O(_mean), but it should be O(log(_mean)) for large _mean
- RealType product = RealType(1);
- for(result_type m = 0; ; ++m) {
- product *= eng();
- if(product <= _exp_mean)
- return m;
+ /** Returns the "mean" parameter of the distribution. */
+ RealType mean() const { return _mean; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ IntType min BOOST_PREVENT_MACRO_SUBSTITUTION() const { return 0; }
+ /** Returns the largest value that the distribution can produce. */
+ IntType max BOOST_PREVENT_MACRO_SUBSTITUTION() const
+ { return (std::numeric_limits<IntType>::max)(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_mean); }
+ /** Sets parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _mean = parm.mean();
+ init();
}
- }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const poisson_distribution& pd)
- {
- os << pd._mean;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, poisson_distribution& pd)
- {
- is >> std::ws >> pd._mean;
- pd.init();
- return is;
- }
+ /** Writes the parameters of the distribution to a @c std::ostream. */
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os,
+ const poisson_distribution& pd)
+ {
+ os << pd.param();
+ return os;
+ }
+
+ /** Reads the parameters of the distribution from a @c std::istream. */
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is, poisson_distribution& pd)
+ {
+ pd.read(is);
+ return is;
+ }
#endif
+
+ /** Returns true if the two distributions will produce the same
+ sequence of values, given equal generators. */
+ friend bool operator==(const poisson_distribution& lhs,
+ const poisson_distribution& rhs)
+ {
+ return lhs._mean == rhs._mean;
+ }
+ /** Returns true if the two distributions could produce different
+ sequences of values, given equal generators. */
+ friend bool operator!=(const poisson_distribution& lhs,
+ const poisson_distribution& rhs)
+ {
+ return !(lhs == rhs);
+ }
private:
- /// \cond hide_private_members
- void init()
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::exp;
-#endif
- _exp_mean = exp(-_mean);
- }
- /// \endcond
- RealType _mean;
- // some precomputed data from the parameters
- RealType _exp_mean;
+ /// @cond show_private
+
+ template<class CharT, class Traits>
+ void read(std::basic_istream<CharT, Traits>& is) {
+ param_type parm;
+ if(is >> parm) {
+ param(parm);
+ }
+ }
+
+ bool use_inversion() const
+ {
+ return _mean < 10;
+ }
+
+ static RealType log_factorial(IntType k)
+ {
+ BOOST_ASSERT(k >= 0);
+ BOOST_ASSERT(k < 10);
+ return detail::poisson_table<RealType>::value[k];
+ }
+
+ void init()
+ {
+ using std::sqrt;
+ using std::exp;
+
+ if(use_inversion()) {
+ _exp_mean = exp(-_mean);
+ } else {
+ _ptrd.smu = sqrt(_mean);
+ _ptrd.b = 0.931 + 2.53 * _ptrd.smu;
+ _ptrd.a = -0.059 + 0.02483 * _ptrd.b;
+ _ptrd.inv_alpha = 1.1239 + 1.1328 / (_ptrd.b - 3.4);
+ _ptrd.v_r = 0.9277 - 3.6224 / (_ptrd.b - 2);
+ }
+ }
+
+ template<class URNG>
+ IntType generate(URNG& urng) const
+ {
+ using std::floor;
+ using std::abs;
+ using std::log;
+
+ while(true) {
+ RealType u;
+ RealType v = uniform_01<RealType>()(urng);
+ if(v <= 0.86 * _ptrd.v_r) {
+ u = v / _ptrd.v_r - 0.43;
+ return static_cast<IntType>(floor(
+ (2*_ptrd.a/(0.5-abs(u)) + _ptrd.b)*u + _mean + 0.445));
+ }
+
+ if(v >= _ptrd.v_r) {
+ u = uniform_01<RealType>()(urng) - 0.5;
+ } else {
+ u = v/_ptrd.v_r - 0.93;
+ u = ((u < 0)? -0.5 : 0.5) - u;
+ v = uniform_01<RealType>()(urng) * _ptrd.v_r;
+ }
+
+ RealType us = 0.5 - abs(u);
+ if(us < 0.013 && v > us) {
+ continue;
+ }
+
+ RealType k = floor((2*_ptrd.a/us + _ptrd.b)*u+_mean+0.445);
+ v = v*_ptrd.inv_alpha/(_ptrd.a/(us*us) + _ptrd.b);
+
+ RealType log_sqrt_2pi = 0.91893853320467267;
+
+ if(k >= 10) {
+ if(log(v*_ptrd.smu) <= (k + 0.5)*log(_mean/k)
+ - _mean
+ - log_sqrt_2pi
+ + k
+ - (1/12. - (1/360. - 1/(1260.*k*k))/(k*k))/k) {
+ return static_cast<IntType>(k);
+ }
+ } else if(k >= 0) {
+ if(log(v) <= k*log(_mean)
+ - _mean
+ - log_factorial(static_cast<IntType>(k))) {
+ return static_cast<IntType>(k);
+ }
+ }
+ }
+ }
+
+ template<class URNG>
+ IntType invert(URNG& urng) const
+ {
+ RealType p = _exp_mean;
+ IntType x = 0;
+ RealType u = uniform_01<RealType>()(urng);
+ while(u > p) {
+ u = u - p;
+ ++x;
+ p = _mean * p / x;
+ }
+ return x;
+ }
+
+ RealType _mean;
+
+ union {
+ // for ptrd
+ struct {
+ RealType v_r;
+ RealType a;
+ RealType b;
+ RealType smu;
+ RealType inv_alpha;
+ } _ptrd;
+ // for inversion
+ RealType _exp_mean;
+ };
+
+ /// @endcond
};
+} // namespace random
+
+using random::poisson_distribution;
+
} // namespace boost
+#include <boost/random/detail/enable_warnings.hpp>
+
#endif // BOOST_RANDOM_POISSON_DISTRIBUTION_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: random_number_generator.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: random_number_generator.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#ifndef BOOST_RANDOM_RANDOM_NUMBER_GENERATOR_HPP
#define BOOST_RANDOM_RANDOM_NUMBER_GENERATOR_HPP
-#include <boost/config.hpp>
-#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/random/uniform_int.hpp>
-#include <boost/random/variate_generator.hpp>
+#include <boost/assert.hpp>
+#include <boost/random/uniform_int_distribution.hpp>
+
+#include <boost/random/detail/disable_warnings.hpp>
namespace boost {
+namespace random {
/**
* Instantiations of class template random_number_generator model a
*
* The template parameter IntType shall denote some integer-like value type.
*/
-template<class UniformRandomNumberGenerator, class IntType = long>
+template<class URNG, class IntType = long>
class random_number_generator
{
public:
- typedef UniformRandomNumberGenerator base_type;
- typedef IntType argument_type;
- typedef IntType result_type;
- /**
- * Constructs a random_number_generator functor with the given
- * \uniform_random_number_generator as the underlying source of
- * random numbers.
- */
- random_number_generator(base_type& rng) : _rng(rng)
- {
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(std::numeric_limits<result_type>::is_integer);
-#endif
- }
- // compiler-generated copy ctor is fine
- // assignment is disallowed because there is a reference member
+ typedef URNG base_type;
+ typedef IntType argument_type;
+ typedef IntType result_type;
+ /**
+ * Constructs a random_number_generator functor with the given
+ * \uniform_random_number_generator as the underlying source of
+ * random numbers.
+ */
+ random_number_generator(base_type& rng) : _rng(rng) {}
+
+ // compiler-generated copy ctor is fine
+ // assignment is disallowed because there is a reference member
- /**
- * Returns a value in the range [0, n)
- */
- result_type operator()(argument_type n)
- {
- typedef uniform_int<IntType> dist_type;
- return variate_generator<base_type&, dist_type>(_rng, dist_type(0, n-1))();
- }
+ /**
+ * Returns a value in the range [0, n)
+ */
+ result_type operator()(argument_type n)
+ {
+ BOOST_ASSERT(n > 0);
+ return uniform_int_distribution<IntType>(0, n-1)(_rng);
+ }
private:
- base_type& _rng;
+ base_type& _rng;
};
+} // namespace random
+
+using random::random_number_generator;
+
} // namespace boost
+#include <boost/random/detail/enable_warnings.hpp>
+
#endif // BOOST_RANDOM_RANDOM_NUMBER_GENERATOR_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: ranlux.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: ranlux.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 created
namespace boost {
namespace random {
- typedef subtract_with_carry<int, (1<<24), 10, 24, 0> ranlux_base;
- typedef subtract_with_carry_01<float, 24, 10, 24> ranlux_base_01;
- typedef subtract_with_carry_01<double, 48, 10, 24> ranlux64_base_01;
-}
-namespace random {
namespace detail {
/**
* The ranlux family of generators are described in
*/
class ranlux_documentation {};
}
-}
+
+typedef subtract_with_carry_engine<uint32_t, 24, 10, 24> ranlux_base;
+typedef subtract_with_carry_01_engine<float, 24, 10, 24> ranlux_base_01;
+typedef subtract_with_carry_01_engine<double, 48, 10, 24> ranlux64_base_01;
+
/** @copydoc boost::random::detail::ranlux_documentation */
-typedef random::discard_block<random::ranlux_base, 223, 24> ranlux3;
+typedef discard_block_engine<ranlux_base, 223, 24> ranlux3;
/** @copydoc boost::random::detail::ranlux_documentation */
-typedef random::discard_block<random::ranlux_base, 389, 24> ranlux4;
+typedef discard_block_engine<ranlux_base, 389, 24> ranlux4;
/** @copydoc boost::random::detail::ranlux_documentation */
-typedef random::discard_block<random::ranlux_base_01, 223, 24> ranlux3_01;
+typedef discard_block_engine<ranlux_base_01, 223, 24> ranlux3_01;
/** @copydoc boost::random::detail::ranlux_documentation */
-typedef random::discard_block<random::ranlux_base_01, 389, 24> ranlux4_01;
+typedef discard_block_engine<ranlux_base_01, 389, 24> ranlux4_01;
/** @copydoc boost::random::detail::ranlux_documentation */
-typedef random::discard_block<random::ranlux64_base_01, 223, 24> ranlux64_3_01;
+typedef discard_block_engine<ranlux64_base_01, 223, 24> ranlux64_3_01;
/** @copydoc boost::random::detail::ranlux_documentation */
-typedef random::discard_block<random::ranlux64_base_01, 389, 24> ranlux64_4_01;
+typedef discard_block_engine<ranlux64_base_01, 389, 24> ranlux64_4_01;
#if !defined(BOOST_NO_INT64_T) && !defined(BOOST_NO_INTEGRAL_INT64_T)
-namespace random {
- typedef random::subtract_with_carry<int64_t, (int64_t(1)<<48), 10, 24, 0> ranlux64_base;
-}
+typedef subtract_with_carry_engine<uint64_t, 48, 10, 24> ranlux64_base;
/** @copydoc boost::random::detail::ranlux_documentation */
-typedef random::discard_block<random::ranlux64_base, 223, 24> ranlux64_3;
+typedef discard_block_engine<ranlux64_base, 223, 24> ranlux64_3;
/** @copydoc boost::random::detail::ranlux_documentation */
-typedef random::discard_block<random::ranlux64_base, 389, 24> ranlux64_4;
+typedef discard_block_engine<ranlux64_base, 389, 24> ranlux64_4;
#endif /* !BOOST_NO_INT64_T && !BOOST_NO_INTEGRAL_INT64_T */
+
+typedef subtract_with_carry_engine<uint32_t, 24, 10, 24> ranlux24_base;
+typedef subtract_with_carry_engine<uint64_t, 48, 5, 12> ranlux48_base;
+
+typedef discard_block_engine<ranlux24_base, 223, 23> ranlux24;
+#if !defined(BOOST_NO_INT64_T) && !defined(BOOST_NO_INTEGRAL_INT64_T)
+typedef discard_block_engine<ranlux48_base, 389, 11> ranlux48;
+#endif
+}
+
+using random::ranlux3;
+using random::ranlux4;
+using random::ranlux3_01;
+using random::ranlux4_01;
+using random::ranlux64_3_01;
+using random::ranlux64_4_01;
+#if !defined(BOOST_NO_INT64_T) && !defined(BOOST_NO_INTEGRAL_INT64_T)
+using random::ranlux64_3;
+using random::ranlux64_4;
+#endif
+
} // namespace boost
#endif // BOOST_RANDOM_LINEAR_CONGRUENTIAL_HPP
--- /dev/null
+/* boost random/seed_seq.hpp header file
+ *
+ * Copyright Steven Watanabe 2010
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: seed_seq.hpp 85813 2013-09-21 20:17:00Z jewillco $
+ *
+ */
+
+#ifndef BOOST_RANDOM_SEED_SEQ_HPP
+#define BOOST_RANDOM_SEED_SEQ_HPP
+
+#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <cstddef>
+#include <vector>
+#include <algorithm>
+#include <iterator>
+
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#include <initializer_list>
+#endif
+
+namespace boost {
+namespace random {
+
+/**
+ * The class @c seed_seq stores a sequence of 32-bit words
+ * for seeding a \pseudo_random_number_generator. These
+ * words will be combined to fill the entire state of the
+ * generator.
+ */
+class seed_seq {
+public:
+ typedef boost::uint_least32_t result_type;
+
+ /** Initializes a seed_seq to hold an empty sequence. */
+ seed_seq() {}
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+ /** Initializes the sequence from an initializer_list. */
+ template<class T>
+ seed_seq(const std::initializer_list<T>& il) : v(il.begin(), il.end()) {}
+#endif
+ /** Initializes the sequence from an iterator range. */
+ template<class Iter>
+ seed_seq(Iter first, Iter last) : v(first, last) {}
+ /** Initializes the sequence from Boost.Range range. */
+ template<class Range>
+ explicit seed_seq(const Range& range)
+ : v(boost::begin(range), boost::end(range)) {}
+
+ /**
+ * Fills a range with 32-bit values based on the stored sequence.
+ *
+ * Requires: Iter must be a Random Access Iterator whose value type
+ * is an unsigned integral type at least 32 bits wide.
+ */
+ template<class Iter>
+ void generate(Iter first, Iter last) const
+ {
+ typedef typename std::iterator_traits<Iter>::value_type value_type;
+ std::fill(first, last, static_cast<value_type>(0x8b8b8b8bu));
+ std::size_t s = v.size();
+ std::size_t n = last - first;
+ std::size_t t =
+ (n >= 623) ? 11 :
+ (n >= 68) ? 7 :
+ (n >= 39) ? 5 :
+ (n >= 7) ? 3 :
+ (n - 1)/2;
+ std::size_t p = (n - t) / 2;
+ std::size_t q = p + t;
+ std::size_t m = (std::max)(s+1, n);
+ value_type mask = 0xffffffffu;
+ for(std::size_t k = 0; k < m; ++k) {
+ value_type r1 =
+ *(first + k%n) ^ *(first + (k+p)%n) ^ *(first + (k+n-1)%n);
+ r1 = r1 ^ (r1 >> 27);
+ r1 = (r1 * 1664525u) & mask;
+ value_type r2 = r1 +
+ ((k == 0) ? s :
+ (k <= s) ? k % n + v[k - 1] :
+ (k % n));
+ *(first + (k+p)%n) = (*(first + (k+p)%n) + r1) & mask;
+ *(first + (k+q)%n) = (*(first + (k+q)%n) + r2) & mask;
+ *(first + k%n) = r2;
+ }
+ for(std::size_t k = m; k < m + n; ++k) {
+ value_type r3 =
+ (*(first + k%n) + *(first + (k+p)%n) + *(first + (k+n-1)%n))
+ & mask;
+ r3 = r3 ^ (r3 >> 27);
+ r3 = (r3 * 1566083941u) & mask;
+ value_type r4 = r3 - k%m;
+ *(first + (k+p)%n) ^= r3;
+ *(first + (k+q)%n) ^= r4;
+ *(first + k%n) = r4;
+ }
+ }
+ /** Returns the size of the sequence. */
+ std::size_t size() const { return v.size(); }
+ /** Writes the stored sequence to iter. */
+ template<class Iter>
+ void param(Iter out) { std::copy(v.begin(), v.end(), out); }
+private:
+ std::vector<result_type> v;
+};
+
+}
+}
+
+#endif
--- /dev/null
+/* boost random/shuffle_order.hpp header file
+ *
+ * Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2010
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: shuffle_order.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ *
+ */
+
+#ifndef BOOST_RANDOM_SHUFFLE_ORDER_HPP
+#define BOOST_RANDOM_SHUFFLE_ORDER_HPP
+
+#include <iostream>
+#include <algorithm> // std::copy
+#include <cassert>
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/seed.hpp>
+#include <boost/random/detail/signed_unsigned_tools.hpp>
+#include <boost/random/linear_congruential.hpp>
+
+#include <boost/random/detail/disable_warnings.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * Instatiations of class template @c shuffle_order_engine model a
+ * \pseudo_random_number_generator. It mixes the output
+ * of some (usually \linear_congruential_engine)
+ * \uniform_random_number_generator to get better statistical properties.
+ * The algorithm is described in
+ *
+ * @blockquote
+ * "Improving a poor random number generator", Carter Bays
+ * and S.D. Durham, ACM Transactions on Mathematical Software,
+ * Vol 2, No. 1, March 1976, pp. 59-64.
+ * http://doi.acm.org/10.1145/355666.355670
+ * @endblockquote
+ *
+ * The output of the base generator is buffered in an array of
+ * length k. Every output X(n) has a second role: It gives an
+ * index into the array where X(n+1) will be retrieved. Used
+ * array elements are replaced with fresh output from the base
+ * generator.
+ *
+ * Template parameters are the base generator and the array
+ * length k, which should be around 100.
+ */
+template<class UniformRandomNumberGenerator, std::size_t k>
+class shuffle_order_engine
+{
+public:
+ typedef UniformRandomNumberGenerator base_type;
+ typedef typename base_type::result_type result_type;
+
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ BOOST_STATIC_CONSTANT(std::size_t, buffer_size = k);
+ BOOST_STATIC_CONSTANT(std::size_t, table_size = k);
+
+ BOOST_STATIC_ASSERT(std::numeric_limits<result_type>::is_integer);
+ BOOST_STATIC_ASSERT(k > 0);
+
+ /**
+ * Constructs a @c shuffle_order_engine by invoking the
+ * default constructor of the base generator.
+ *
+ * Complexity: Exactly k+1 invocations of the base generator.
+ */
+ shuffle_order_engine() : _rng() { init(); }
+ /**
+ * Constructs a @c shuffle_output_engine by invoking the one-argument
+ * constructor of the base generator with the parameter seed.
+ *
+ * Complexity: Exactly k+1 invocations of the base generator.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(shuffle_order_engine,
+ result_type, s)
+ { _rng.seed(s); init(); }
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(shuffle_order_engine, SeedSeq, seq)
+ { _rng.seed(seq); init(); }
+ /**
+ * Constructs a @c shuffle_output_engine by using a copy
+ * of the provided generator.
+ *
+ * Precondition: The template argument UniformRandomNumberGenerator
+ * shall denote a CopyConstructible type.
+ *
+ * Complexity: Exactly k+1 invocations of the base generator.
+ */
+ explicit shuffle_order_engine(const base_type & rng) : _rng(rng) { init(); }
+
+#ifndef BOOST_NO_RVALUE_REFERENCES
+ explicit shuffle_order_engine(base_type&& rng) : _rng(rng) { init(); }
+#endif
+
+ template<class It> shuffle_order_engine(It& first, It last)
+ : _rng(first, last) { init(); }
+ void seed() { _rng.seed(); init(); }
+ /**
+ * Invokes the one-argument seed method of the base generator
+ * with the parameter seed and re-initializes the internal buffer array.
+ *
+ * Complexity: Exactly k+1 invocations of the base generator.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(shuffle_order_engine,
+ result_type, seed_arg)
+ { _rng.seed(seed_arg); init(); }
+ /**
+ * Invokes the one-argument seed method of the base generator
+ * with the parameter seq and re-initializes the internal buffer array.
+ *
+ * Complexity: Exactly k+1 invocations of the base generator.
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(shuffle_order_engine, SeedSeq, seq)
+ { _rng.seed(seq); init(); }
+ template<class It> void seed(It& first, It last)
+ { _rng.seed(first, last); init(); }
+
+ const base_type& base() const { return _rng; }
+
+ result_type operator()() {
+ // calculating the range every time may seem wasteful. However, this
+ // makes the information locally available for the optimizer.
+ typedef typename make_unsigned<result_type>::type base_unsigned;
+ const base_unsigned brange =
+ detail::subtract<result_type>()((max)(), (min)());
+ const base_unsigned off =
+ detail::subtract<result_type>()(y, (min)());
+
+ base_unsigned j;
+ if(k == 1) {
+ j = 0;
+ } else if(brange < (std::numeric_limits<base_unsigned>::max)() / k) {
+ // try to do it in the native type if we know that it won't
+ // overflow
+ j = k * off / (brange + 1);
+ } else if(brange < (std::numeric_limits<uintmax_t>::max)() / k) {
+ // Otherwise try to use uint64_t
+ j = static_cast<base_unsigned>(
+ static_cast<uintmax_t>(off) * k /
+ (static_cast<uintmax_t>(brange) + 1));
+ } else {
+ boost::uintmax_t divisor =
+ static_cast<boost::uintmax_t>(brange) + 1;
+ j = static_cast<base_unsigned>(detail::muldiv(off, k, divisor));
+ }
+ // assert(0 <= j && j < k);
+ y = v[j];
+ v[j] = _rng();
+ return y;
+ }
+
+ /** Advances the generator by z steps. */
+ void discard(boost::uintmax_t z)
+ {
+ for(boost::uintmax_t j = 0; j < z; ++j) {
+ (*this)();
+ }
+ }
+
+ /** Fills a range with pseudo-random values. */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { detail::generate_from_int(*this, first, last); }
+
+ /** Returns the smallest value that the generator can produce. */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return (base_type::min)(); }
+ /** Returns the largest value that the generator can produce. */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return (base_type::max)(); }
+
+ /** Writes a @c shuffle_order_engine to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, shuffle_order_engine, s)
+ {
+ os << s._rng;
+ for(std::size_t i = 0; i < k; ++i)
+ os << ' ' << s.v[i];
+ os << ' ' << s.y;
+ return os;
+ }
+
+ /** Reads a @c shuffle_order_engine from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, shuffle_order_engine, s)
+ {
+ is >> s._rng;
+ for(std::size_t i = 0; i < k; ++i)
+ is >> std::ws >> s.v[i];
+ is >> std::ws >> s.y;
+ return is;
+ }
+
+ /** Returns true if the two generators will produce identical sequences. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(shuffle_order_engine, x, y)
+ { return x._rng == y._rng && x.y == y.y && std::equal(x.v, x.v+k, y.v); }
+ /** Returns true if the two generators will produce different sequences. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(shuffle_order_engine)
+
+private:
+
+ /// \cond show_private
+
+ void init()
+ {
+ // we cannot use std::generate, because it uses pass-by-value for _rng
+ for(result_type * p = v; p != v+k; ++p)
+ *p = _rng();
+ y = _rng();
+ }
+
+ /// \endcond
+
+ base_type _rng;
+ result_type v[k];
+ result_type y;
+};
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+// A definition is required even for integral static constants
+template<class URNG, std::size_t k>
+const bool shuffle_order_engine<URNG, k>::has_fixed_range;
+template<class URNG, std::size_t k>
+const std::size_t shuffle_order_engine<URNG, k>::table_size;
+template<class URNG, std::size_t k>
+const std::size_t shuffle_order_engine<URNG, k>::buffer_size;
+#endif
+
+/**
+ * According to Harry Erwin (private e-mail), the specialization
+ * @c kreutzer1986 was suggested in:
+ *
+ * @blockquote
+ * "System Simulation: Programming Styles and Languages (International
+ * Computer Science Series)", Wolfgang Kreutzer, Addison-Wesley, December 1986.
+ * @endblockquote
+ */
+typedef shuffle_order_engine<
+ linear_congruential_engine<uint32_t, 1366, 150889, 714025>,
+ 97> kreutzer1986;
+
+/**
+ * The specialization @c knuth_b is specified by the C++ standard.
+ * It is described in
+ *
+ * @blockquote
+ * "The Art of Computer Programming, Second Edition, Volume 2,
+ * Seminumerical Algorithms", Donald Knuth, Addison-Wesley, 1981.
+ * @endblockquote
+ */
+typedef shuffle_order_engine<minstd_rand0, 256> knuth_b;
+
+} // namespace random
+
+using random::kreutzer1986;
+
+} // namespace boost
+
+#include <boost/random/detail/enable_warnings.hpp>
+
+#endif // BOOST_RANDOM_SHUFFLE_OUTPUT_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: shuffle_output.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: shuffle_output.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#ifndef BOOST_RANDOM_SHUFFLE_OUTPUT_HPP
#define BOOST_RANDOM_SHUFFLE_OUTPUT_HPP
-#include <iostream>
-#include <algorithm> // std::copy
-#include <cassert>
-#include <boost/config.hpp>
-#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/random/linear_congruential.hpp>
+#include <boost/random/shuffle_order.hpp>
namespace boost {
namespace random {
-/**
- * Instatiations of class template shuffle_output model a
- * \pseudo_random_number_generator. It mixes the output
- * of some (usually \linear_congruential) \uniform_random_number_generator
- * to get better statistical properties.
- * The algorithm is described in
- *
- * @blockquote
- * "Improving a poor random number generator", Carter Bays
- * and S.D. Durham, ACM Transactions on Mathematical Software,
- * Vol 2, No. 1, March 1976, pp. 59-64.
- * http://doi.acm.org/10.1145/355666.355670
- * @endblockquote
- *
- * The output of the base generator is buffered in an array of
- * length k. Every output X(n) has a second role: It gives an
- * index into the array where X(n+1) will be retrieved. Used
- * array elements are replaced with fresh output from the base
- * generator.
- *
- * Template parameters are the base generator and the array
- * length k, which should be around 100. The template parameter
- * val is the validation value checked by validation.
- */
-template<class UniformRandomNumberGenerator, int k,
-#ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
- typename UniformRandomNumberGenerator::result_type
-#else
- uint32_t
-#endif
- val = 0>
-class shuffle_output
+/// \cond
+
+template<typename URNG, int k,
+ typename URNG::result_type val = 0>
+class shuffle_output : public shuffle_order_engine<URNG, k>
{
+ typedef shuffle_order_engine<URNG, k> base_t;
+ typedef typename base_t::result_type result_type;
public:
- typedef UniformRandomNumberGenerator base_type;
- typedef typename base_type::result_type result_type;
-
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
- BOOST_STATIC_CONSTANT(int, buffer_size = k);
-
- /**
- * Constructs a @c shuffle_output generator by invoking the
- * default constructor of the base generator.
- *
- * Complexity: Exactly k+1 invocations of the base generator.
- */
- shuffle_output() : _rng() { init(); }
-#if defined(BOOST_MSVC) && _MSC_VER < 1300
- // MSVC does not implicitly generate the copy constructor here
- shuffle_output(const shuffle_output & x)
- : _rng(x._rng), y(x.y) { std::copy(x.v, x.v+k, v); }
-#endif
- /**
- * Constructs a shuffle_output generator by invoking the one-argument
- * constructor of the base generator with the parameter seed.
- *
- * Complexity: Exactly k+1 invocations of the base generator.
- */
- template<class T>
- explicit shuffle_output(T s) : _rng(s) { init(); }
- /**
- * Constructs a shuffle_output generator by using a copy
- * of the provided generator.
- *
- * Precondition: The template argument UniformRandomNumberGenerator
- * shall denote a CopyConstructible type.
- *
- * Complexity: Exactly k+1 invocations of the base generator.
- */
- explicit shuffle_output(const base_type & rng) : _rng(rng) { init(); }
- template<class It> shuffle_output(It& first, It last)
- : _rng(first, last) { init(); }
- void seed() { _rng.seed(); init(); }
- /**
- * Invokes the one-argument seed method of the base generator
- * with the parameter seed and re-initializes the internal buffer array.
- *
- * Complexity: Exactly k+1 invocations of the base generator.
- */
- template<class T>
- void seed(T s) { _rng.seed(s); init(); }
- template<class It> void seed(It& first, It last)
- {
- _rng.seed(first, last);
- init();
- }
-
- const base_type& base() const { return _rng; }
-
- result_type operator()() {
- // calculating the range every time may seem wasteful. However, this
- // makes the information locally available for the optimizer.
- result_type range = (max)()-(min)()+1;
- int j = k*(y-(min)())/range;
- // assert(0 <= j && j < k);
- y = v[j];
- v[j] = _rng();
- return y;
- }
-
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (_rng.min)(); }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (_rng.max)(); }
- static bool validation(result_type x) { return val == x; }
-
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const shuffle_output& s)
- {
- os << s._rng << " " << s.y << " ";
- for(int i = 0; i < s.buffer_size; ++i)
- os << s.v[i] << " ";
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, shuffle_output& s)
- {
- is >> s._rng >> std::ws >> s.y >> std::ws;
- for(int i = 0; i < s.buffer_size; ++i)
- is >> s.v[i] >> std::ws;
- return is;
- }
-#endif
-
- friend bool operator==(const shuffle_output& x, const shuffle_output& y)
- { return x._rng == y._rng && x.y == y.y && std::equal(x.v, x.v+k, y.v); }
- friend bool operator!=(const shuffle_output& x, const shuffle_output& y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(const shuffle_output& rhs) const
- { return _rng == rhs._rng && y == rhs.y && std::equal(v, v+k, rhs.v); }
- bool operator!=(const shuffle_output& rhs) const
- { return !(*this == rhs); }
-#endif
-private:
- void init()
- {
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(std::numeric_limits<result_type>::is_integer);
-#endif
- result_type range = (max)()-(min)();
- assert(range > 0); // otherwise there would be little choice
- if(static_cast<unsigned long>(k * range) <
- static_cast<unsigned long>(range)) // not a sufficient condition
- // likely overflow with bucket number computation
- assert(!"overflow will occur");
-
- // we cannot use std::generate, because it uses pass-by-value for _rng
- for(result_type * p = v; p != v+k; ++p)
- *p = _rng();
- y = _rng();
- }
-
- base_type _rng;
- result_type v[k];
- result_type y;
+ shuffle_output() {}
+ template<class T>
+ shuffle_output(T& arg) : base_t(arg) {}
+ template<class T>
+ shuffle_output(const T& arg) : base_t(arg) {}
+ template<class It>
+ shuffle_output(It& first, It last) : base_t(first, last) {}
+ result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return (this->base().min)(); }
+ result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return (this->base().max)(); }
};
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-// A definition is required even for integral static constants
-template<class UniformRandomNumberGenerator, int k,
-#ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
- typename UniformRandomNumberGenerator::result_type
-#else
- uint32_t
-#endif
- val>
-const bool shuffle_output<UniformRandomNumberGenerator, k, val>::has_fixed_range;
-
-template<class UniformRandomNumberGenerator, int k,
-#ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
- typename UniformRandomNumberGenerator::result_type
-#else
- uint32_t
-#endif
- val>
-const int shuffle_output<UniformRandomNumberGenerator, k, val>::buffer_size;
-#endif
-
-} // namespace random
-
-// validation by experiment from Harry Erwin's generator.h (private e-mail)
-/**
- * According to Harry Erwin (private e-mail), the specialization
- * @c kreutzer1986 was suggested in:
- *
- * @blockquote
- * "System Simulation: Programming Styles and Languages (International
- * Computer Science Series)", Wolfgang Kreutzer, Addison-Wesley, December 1986.
- * @endblockquote
- */
-typedef random::shuffle_output<
- random::linear_congruential<uint32_t, 1366, 150889, 714025, 0>,
- 97, 139726> kreutzer1986;
-
+/// \endcond
-} // namespace boost
+}
+}
#endif // BOOST_RANDOM_SHUFFLE_OUTPUT_HPP
--- /dev/null
+/* boost random/student_t_distribution.hpp header file
+ *
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: student_t_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ */
+
+#ifndef BOOST_RANDOM_STUDENT_T_DISTRIBUTION_HPP
+#define BOOST_RANDOM_STUDENT_T_DISTRIBUTION_HPP
+
+#include <boost/config/no_tr1/cmath.hpp>
+#include <iosfwd>
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/chi_squared_distribution.hpp>
+#include <boost/random/normal_distribution.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * The Student t distribution is a real valued distribution with one
+ * parameter n, the number of degrees of freedom.
+ *
+ * It has \f$\displaystyle p(x) =
+ * \frac{1}{\sqrt{n\pi}}
+ * \frac{\Gamma((n+1)/2)}{\Gamma(n/2)}
+ * \left(1+\frac{x^2}{n}\right)^{-(n+1)/2}
+ * \f$.
+ */
+template<class RealType = double>
+class student_t_distribution {
+public:
+ typedef RealType result_type;
+ typedef RealType input_type;
+
+ class param_type {
+ public:
+ typedef student_t_distribution distribution_type;
+
+ /**
+ * Constructs a @c param_type with "n" degrees of freedom.
+ *
+ * Requires: n > 0
+ */
+ explicit param_type(RealType n_arg = RealType(1.0))
+ : _n(n_arg)
+ {}
+
+ /** Returns the number of degrees of freedom of the distribution. */
+ RealType n() const { return _n; }
+
+ /** Writes a @c param_type to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ { os << parm._n; return os; }
+
+ /** Reads a @c param_type from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ { is >> parm._n; return is; }
+
+ /** Returns true if the two sets of parameters are the same. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._n == rhs._n; }
+
+ /** Returns true if the two sets of parameters are the different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ RealType _n;
+ };
+
+ /**
+ * Constructs an @c student_t_distribution with "n" degrees of freedom.
+ *
+ * Requires: n > 0
+ */
+ explicit student_t_distribution(RealType n_arg = RealType(1.0))
+ : _normal(), _chi_squared(n_arg)
+ {}
+ /** Constructs an @c student_t_distribution from its parameters. */
+ explicit student_t_distribution(const param_type& parm)
+ : _normal(), _chi_squared(parm.n())
+ {}
+
+ /**
+ * Returns a random variate distributed according to the
+ * Student t distribution.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng)
+ {
+ using std::sqrt;
+ return _normal(urng) / sqrt(_chi_squared(urng) / n());
+ }
+
+ /**
+ * Returns a random variate distributed accordint to the Student
+ * t distribution with parameters specified by @c param.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng, const param_type& parm) const
+ {
+ return student_t_distribution(parm)(urng);
+ }
+
+ /** Returns the number of degrees of freedom. */
+ RealType n() const { return _chi_squared.n(); }
+
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return -std::numeric_limits<RealType>::infinity(); }
+ /** Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return std::numeric_limits<RealType>::infinity(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(n()); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ typedef chi_squared_distribution<RealType> chi_squared_type;
+ typename chi_squared_type::param_type chi_squared_param(parm.n());
+ _chi_squared.param(chi_squared_param);
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset()
+ {
+ _normal.reset();
+ _chi_squared.reset();
+ }
+
+ /** Writes a @c student_t_distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, student_t_distribution, td)
+ {
+ os << td.param();
+ return os;
+ }
+
+ /** Reads a @c student_t_distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, student_t_distribution, td)
+ {
+ param_type parm;
+ if(is >> parm) {
+ td.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two instances of @c student_t_distribution will
+ * return identical sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(student_t_distribution, lhs, rhs)
+ { return lhs._normal == rhs._normal && lhs._chi_squared == rhs._chi_squared; }
+
+ /**
+ * Returns true if the two instances of @c student_t_distribution will
+ * return different sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(student_t_distribution)
+
+private:
+ normal_distribution<RealType> _normal;
+ chi_squared_distribution<RealType> _chi_squared;
+};
+
+} // namespace random
+} // namespace boost
+
+#endif // BOOST_RANDOM_STUDENT_T_DISTRIBUTION_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: subtract_with_carry.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: subtract_with_carry.hpp 85813 2013-09-21 20:17:00Z jewillco $
*
* Revision history
* 2002-03-02 created
#ifndef BOOST_RANDOM_SUBTRACT_WITH_CARRY_HPP
#define BOOST_RANDOM_SUBTRACT_WITH_CARRY_HPP
-#include <boost/config/no_tr1/cmath.hpp>
+#include <boost/config/no_tr1/cmath.hpp> // std::pow
#include <iostream>
#include <algorithm> // std::equal
#include <stdexcept>
-#include <boost/config/no_tr1/cmath.hpp> // std::pow
#include <boost/config.hpp>
#include <boost/limits.hpp>
#include <boost/cstdint.hpp>
#include <boost/static_assert.hpp>
+#include <boost/integer/static_log2.hpp>
+#include <boost/integer/integer_mask.hpp>
#include <boost/detail/workaround.hpp>
#include <boost/random/detail/config.hpp>
#include <boost/random/detail/seed.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/seed_impl.hpp>
+#include <boost/random/detail/generator_seed_seq.hpp>
#include <boost/random/linear_congruential.hpp>
namespace boost {
namespace random {
-#if BOOST_WORKAROUND(_MSC_FULL_VER, BOOST_TESTED_AT(13102292)) && BOOST_MSVC > 1300
-# define BOOST_RANDOM_EXTRACT_SWC_01
-#endif
-
-#if defined(__APPLE_CC__) && defined(__GNUC__) && (__GNUC__ == 3) && (__GNUC_MINOR__ <= 3)
-# define BOOST_RANDOM_EXTRACT_SWC_01
-#endif
-
-# ifdef BOOST_RANDOM_EXTRACT_SWC_01
-namespace detail
+namespace detail {
+
+struct subtract_with_carry_discard
{
- template <class IStream, class SubtractWithCarry, class RealType>
- void extract_subtract_with_carry_01(
- IStream& is
- , SubtractWithCarry& f
- , RealType& carry
- , RealType* x
- , RealType modulus)
- {
- RealType value;
- for(unsigned int j = 0; j < f.long_lag; ++j) {
- is >> value >> std::ws;
- x[j] = value / modulus;
+ template<class Engine>
+ static void apply(Engine& eng, boost::uintmax_t z)
+ {
+ typedef typename Engine::result_type IntType;
+ const std::size_t short_lag = Engine::short_lag;
+ const std::size_t long_lag = Engine::long_lag;
+ std::size_t k = eng.k;
+ IntType carry = eng.carry;
+ if(k != 0) {
+ // increment k until it becomes 0.
+ if(k < short_lag) {
+ std::size_t limit = (short_lag - k) < z?
+ short_lag : (k + static_cast<std::size_t>(z));
+ for(std::size_t j = k; j < limit; ++j) {
+ carry = eng.do_update(j, j + long_lag - short_lag, carry);
+ }
+ }
+ std::size_t limit = (long_lag - k) < z?
+ long_lag : (k + static_cast<std::size_t>(z));
+ std::size_t start = (k < short_lag ? short_lag : k);
+ for(std::size_t j = start; j < limit; ++j) {
+ carry = eng.do_update(j, j - short_lag, carry);
+ }
+ }
+
+ k = ((z % long_lag) + k) % long_lag;
+
+ if(k < z) {
+ // main loop: update full blocks from k = 0 to long_lag
+ for(std::size_t i = 0; i < (z - k) / long_lag; ++i) {
+ for(std::size_t j = 0; j < short_lag; ++j) {
+ carry = eng.do_update(j, j + long_lag - short_lag, carry);
+ }
+ for(std::size_t j = short_lag; j < long_lag; ++j) {
+ carry = eng.do_update(j, j - short_lag, carry);
+ }
+ }
+
+ // Update the last partial block
+ std::size_t limit = short_lag < k? short_lag : k;
+ for(std::size_t j = 0; j < limit; ++j) {
+ carry = eng.do_update(j, j + long_lag - short_lag, carry);
+ }
+ for(std::size_t j = short_lag; j < k; ++j) {
+ carry = eng.do_update(j, j - short_lag, carry);
+ }
+ }
+ eng.carry = carry;
+ eng.k = k;
}
- is >> value >> std::ws;
- carry = value / modulus;
- }
+};
+
}
-# endif
/**
- * Instantiations of @c subtract_with_carry model a
+ * Instantiations of @c subtract_with_carry_engine model a
* \pseudo_random_number_generator. The algorithm is
* described in
*
* Volume 1, Number 3 (1991), 462-480.
* @endblockquote
*/
-template<class IntType, IntType m, unsigned int s, unsigned int r,
- IntType val>
-class subtract_with_carry
+template<class IntType, std::size_t w, std::size_t s, std::size_t r>
+class subtract_with_carry_engine
{
public:
- typedef IntType result_type;
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = true);
- BOOST_STATIC_CONSTANT(result_type, min_value = 0);
- BOOST_STATIC_CONSTANT(result_type, max_value = m-1);
- BOOST_STATIC_CONSTANT(result_type, modulus = m);
- BOOST_STATIC_CONSTANT(unsigned int, long_lag = r);
- BOOST_STATIC_CONSTANT(unsigned int, short_lag = s);
-
- subtract_with_carry() {
- // MSVC fails BOOST_STATIC_ASSERT with std::numeric_limits at class scope
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(std::numeric_limits<result_type>::is_signed);
+ typedef IntType result_type;
+ BOOST_STATIC_CONSTANT(std::size_t, word_size = w);
+ BOOST_STATIC_CONSTANT(std::size_t, long_lag = r);
+ BOOST_STATIC_CONSTANT(std::size_t, short_lag = s);
+ BOOST_STATIC_CONSTANT(uint32_t, default_seed = 19780503u);
+
+ // Required by the old Boost.Random concepts
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ // Backwards compatibility
+ BOOST_STATIC_CONSTANT(result_type, modulus = (result_type(1) << w));
+
BOOST_STATIC_ASSERT(std::numeric_limits<result_type>::is_integer);
-#endif
- seed();
- }
- BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(subtract_with_carry, uint32_t, value)
- { seed(value); }
- BOOST_RANDOM_DETAIL_GENERATOR_CONSTRUCTOR(subtract_with_carry, Generator, gen)
- { seed(gen); }
- template<class It> subtract_with_carry(It& first, It last) { seed(first,last); }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- void seed() { seed(19780503u); }
- BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(subtract_with_carry, uint32_t, value)
- {
- random::linear_congruential<int32_t, 40014, 0, 2147483563, 0> intgen(value);
- seed(intgen);
- }
-
- // For GCC, moving this function out-of-line prevents inlining, which may
- // reduce overall object code size. However, MSVC does not grok
- // out-of-line template member functions.
- BOOST_RANDOM_DETAIL_GENERATOR_SEED(subtract_with_carry, Generator, gen)
- {
- // I could have used std::generate_n, but it takes "gen" by value
- for(unsigned int j = 0; j < long_lag; ++j)
- x[j] = gen() % modulus;
- carry = (x[long_lag-1] == 0);
- k = 0;
- }
-
- template<class It>
- void seed(It& first, It last)
- {
- unsigned int j;
- for(j = 0; j < long_lag && first != last; ++j, ++first)
- x[j] = *first % modulus;
- if(first == last && j < long_lag)
- throw std::invalid_argument("subtract_with_carry::seed");
- carry = (x[long_lag-1] == 0);
- k = 0;
- }
-
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return min_value; }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return max_value; }
-
- result_type operator()()
- {
- int short_index = k - short_lag;
- if(short_index < 0)
- short_index += long_lag;
- IntType delta;
- if (x[short_index] >= x[k] + carry) {
- // x(n) >= 0
- delta = x[short_index] - (x[k] + carry);
- carry = 0;
- } else {
- // x(n) < 0
- delta = modulus - x[k] - carry + x[short_index];
- carry = 1;
+
+ /**
+ * Constructs a new @c subtract_with_carry_engine and seeds
+ * it with the default seed.
+ */
+ subtract_with_carry_engine() { seed(); }
+ /**
+ * Constructs a new @c subtract_with_carry_engine and seeds
+ * it with @c value.
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(subtract_with_carry_engine,
+ IntType, value)
+ { seed(value); }
+ /**
+ * Constructs a new @c subtract_with_carry_engine and seeds
+ * it with values produced by @c seq.generate().
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(subtract_with_carry_engine,
+ SeedSeq, seq)
+ { seed(seq); }
+ /**
+ * Constructs a new @c subtract_with_carry_engine and seeds
+ * it with values from a range. first is updated to point
+ * one past the last value consumed. If there are not
+ * enough elements in the range to fill the entire state of
+ * the generator, throws @c std::invalid_argument.
+ */
+ template<class It> subtract_with_carry_engine(It& first, It last)
+ { seed(first,last); }
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Seeds the generator with the default seed. */
+ void seed() { seed(default_seed); }
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(subtract_with_carry_engine,
+ IntType, value)
+ {
+ typedef linear_congruential_engine<uint32_t,40014,0,2147483563> gen_t;
+ gen_t intgen(static_cast<boost::uint32_t>(value == 0 ? default_seed : value));
+ detail::generator_seed_seq<gen_t> gen(intgen);
+ seed(gen);
}
- x[k] = delta;
- ++k;
- if(k >= long_lag)
- k = 0;
- return delta;
- }
-public:
- static bool validation(result_type x) { return x == val; }
-
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os,
- const subtract_with_carry& f)
- {
- for(unsigned int j = 0; j < f.long_lag; ++j)
- os << f.compute(j) << " ";
- os << f.carry << " ";
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, subtract_with_carry& f)
- {
- for(unsigned int j = 0; j < f.long_lag; ++j)
- is >> f.x[j] >> std::ws;
- is >> f.carry >> std::ws;
- f.k = 0;
- return is;
- }
-#endif
+ /** Seeds the generator with values produced by @c seq.generate(). */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(subtract_with_carry, SeedSeq, seq)
+ {
+ detail::seed_array_int<w>(seq, x);
+ carry = (x[long_lag-1] == 0);
+ k = 0;
+ }
- friend bool operator==(const subtract_with_carry& x, const subtract_with_carry& y)
- {
- for(unsigned int j = 0; j < r; ++j)
- if(x.compute(j) != y.compute(j))
- return false;
- return true;
- }
-
- friend bool operator!=(const subtract_with_carry& x, const subtract_with_carry& y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(const subtract_with_carry& rhs) const
- {
- for(unsigned int j = 0; j < r; ++j)
- if(compute(j) != rhs.compute(j))
- return false;
- return true;
- }
-
- bool operator!=(const subtract_with_carry& rhs) const
- { return !(*this == rhs); }
-#endif
+ /**
+ * Seeds the generator with values from a range. Updates @c first to
+ * point one past the last consumed value. If the range does not
+ * contain enough elements to fill the entire state of the generator,
+ * throws @c std::invalid_argument.
+ */
+ template<class It>
+ void seed(It& first, It last)
+ {
+ detail::fill_array_int<w>(first, last, x);
+ carry = (x[long_lag-1] == 0);
+ k = 0;
+ }
+
+ /** Returns the smallest value that the generator can produce. */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return 0; }
+ /** Returns the largest value that the generator can produce. */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return boost::low_bits_mask_t<w>::sig_bits; }
+
+ /** Returns the next value of the generator. */
+ result_type operator()()
+ {
+ std::size_t short_index =
+ (k < short_lag)?
+ (k + long_lag - short_lag) :
+ (k - short_lag);
+ carry = do_update(k, short_index, carry);
+ IntType result = x[k];
+ ++k;
+ if(k >= long_lag)
+ k = 0;
+ return result;
+ }
+
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z)
+ {
+ detail::subtract_with_carry_discard::apply(*this, z);
+ }
+
+ /** Fills a range with random values. */
+ template<class It>
+ void generate(It first, It last)
+ { detail::generate_from_int(*this, first, last); }
+
+ /** Writes a @c subtract_with_carry_engine to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, subtract_with_carry_engine, f)
+ {
+ for(unsigned int j = 0; j < f.long_lag; ++j)
+ os << f.compute(j) << ' ';
+ os << f.carry;
+ return os;
+ }
+
+ /** Reads a @c subtract_with_carry_engine from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, subtract_with_carry_engine, f)
+ {
+ for(unsigned int j = 0; j < f.long_lag; ++j)
+ is >> f.x[j] >> std::ws;
+ is >> f.carry;
+ f.k = 0;
+ return is;
+ }
+
+ /**
+ * Returns true if the two generators will produce identical
+ * sequences of values.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(subtract_with_carry_engine, x, y)
+ {
+ for(unsigned int j = 0; j < r; ++j)
+ if(x.compute(j) != y.compute(j))
+ return false;
+ return true;
+ }
+
+ /**
+ * Returns true if the two generators will produce different
+ * sequences of values.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(subtract_with_carry_engine)
private:
- /// \cond hide_private_members
- // returns x(i-r+index), where index is in 0..r-1
- IntType compute(unsigned int index) const
- {
- return x[(k+index) % long_lag];
- }
- /// \endcond
-
- // state representation; next output (state) is x(i)
- // x[0] ... x[k] x[k+1] ... x[long_lag-1] represents
- // x(i-k) ... x(i) x(i+1) ... x(i-k+long_lag-1)
- // speed: base: 20-25 nsec
- // ranlux_4: 230 nsec, ranlux_7: 430 nsec, ranlux_14: 810 nsec
- // This state representation makes operator== and save/restore more
- // difficult, because we've already computed "too much" and thus
- // have to undo some steps to get at x(i-r) etc.
-
- // state representation: next output (state) is x(i)
- // x[0] ... x[k] x[k+1] ... x[long_lag-1] represents
- // x(i-k) ... x(i) x(i-long_lag+1) ... x(i-k-1)
- // speed: base 28 nsec
- // ranlux_4: 370 nsec, ranlux_7: 688 nsec, ranlux_14: 1343 nsec
- IntType x[long_lag];
- unsigned int k;
- int carry;
+ /// \cond show_private
+ // returns x(i-r+index), where index is in 0..r-1
+ IntType compute(unsigned int index) const
+ {
+ return x[(k+index) % long_lag];
+ }
+
+ friend struct detail::subtract_with_carry_discard;
+
+ IntType do_update(std::size_t current, std::size_t short_index, IntType carry)
+ {
+ IntType delta;
+ IntType temp = x[current] + carry;
+ if (x[short_index] >= temp) {
+ // x(n) >= 0
+ delta = x[short_index] - temp;
+ carry = 0;
+ } else {
+ // x(n) < 0
+ delta = modulus - temp + x[short_index];
+ carry = 1;
+ }
+ x[current] = delta;
+ return carry;
+ }
+ /// \endcond
+
+ // state representation; next output (state) is x(i)
+ // x[0] ... x[k] x[k+1] ... x[long_lag-1] represents
+ // x(i-k) ... x(i) x(i+1) ... x(i-k+long_lag-1)
+ // speed: base: 20-25 nsec
+ // ranlux_4: 230 nsec, ranlux_7: 430 nsec, ranlux_14: 810 nsec
+ // This state representation makes operator== and save/restore more
+ // difficult, because we've already computed "too much" and thus
+ // have to undo some steps to get at x(i-r) etc.
+
+ // state representation: next output (state) is x(i)
+ // x[0] ... x[k] x[k+1] ... x[long_lag-1] represents
+ // x(i-k) ... x(i) x(i-long_lag+1) ... x(i-k-1)
+ // speed: base 28 nsec
+ // ranlux_4: 370 nsec, ranlux_7: 688 nsec, ranlux_14: 1343 nsec
+ IntType x[long_lag];
+ std::size_t k;
+ IntType carry;
};
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
// A definition is required even for integral static constants
-template<class IntType, IntType m, unsigned int s, unsigned int r, IntType val>
-const bool subtract_with_carry<IntType, m, s, r, val>::has_fixed_range;
-template<class IntType, IntType m, unsigned int s, unsigned int r, IntType val>
-const IntType subtract_with_carry<IntType, m, s, r, val>::min_value;
-template<class IntType, IntType m, unsigned int s, unsigned int r, IntType val>
-const IntType subtract_with_carry<IntType, m, s, r, val>::max_value;
-template<class IntType, IntType m, unsigned int s, unsigned int r, IntType val>
-const IntType subtract_with_carry<IntType, m, s, r, val>::modulus;
-template<class IntType, IntType m, unsigned int s, unsigned int r, IntType val>
-const unsigned int subtract_with_carry<IntType, m, s, r, val>::long_lag;
-template<class IntType, IntType m, unsigned int s, unsigned int r, IntType val>
-const unsigned int subtract_with_carry<IntType, m, s, r, val>::short_lag;
+template<class IntType, std::size_t w, std::size_t s, std::size_t r>
+const bool subtract_with_carry_engine<IntType, w, s, r>::has_fixed_range;
+template<class IntType, std::size_t w, std::size_t s, std::size_t r>
+const IntType subtract_with_carry_engine<IntType, w, s, r>::modulus;
+template<class IntType, std::size_t w, std::size_t s, std::size_t r>
+const std::size_t subtract_with_carry_engine<IntType, w, s, r>::word_size;
+template<class IntType, std::size_t w, std::size_t s, std::size_t r>
+const std::size_t subtract_with_carry_engine<IntType, w, s, r>::long_lag;
+template<class IntType, std::size_t w, std::size_t s, std::size_t r>
+const std::size_t subtract_with_carry_engine<IntType, w, s, r>::short_lag;
+template<class IntType, std::size_t w, std::size_t s, std::size_t r>
+const uint32_t subtract_with_carry_engine<IntType, w, s, r>::default_seed;
#endif
// use a floating-point representation to produce values in [0..1)
-/** @copydoc boost::random::subtract_with_carry */
-template<class RealType, int w, unsigned int s, unsigned int r, int val=0>
-class subtract_with_carry_01
+/**
+ * Instantiations of \subtract_with_carry_01_engine model a
+ * \pseudo_random_number_generator. The algorithm is
+ * described in
+ *
+ * @blockquote
+ * "A New Class of Random Number Generators", George
+ * Marsaglia and Arif Zaman, Annals of Applied Probability,
+ * Volume 1, Number 3 (1991), 462-480.
+ * @endblockquote
+ */
+template<class RealType, std::size_t w, std::size_t s, std::size_t r>
+class subtract_with_carry_01_engine
{
public:
- typedef RealType result_type;
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
- BOOST_STATIC_CONSTANT(int, word_size = w);
- BOOST_STATIC_CONSTANT(unsigned int, long_lag = r);
- BOOST_STATIC_CONSTANT(unsigned int, short_lag = s);
-
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(!std::numeric_limits<result_type>::is_integer);
-#endif
-
- subtract_with_carry_01() { init_modulus(); seed(); }
- explicit subtract_with_carry_01(uint32_t value)
- { init_modulus(); seed(value); }
- template<class It> subtract_with_carry_01(It& first, It last)
- { init_modulus(); seed(first,last); }
+ typedef RealType result_type;
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ BOOST_STATIC_CONSTANT(std::size_t, word_size = w);
+ BOOST_STATIC_CONSTANT(std::size_t, long_lag = r);
+ BOOST_STATIC_CONSTANT(std::size_t, short_lag = s);
+ BOOST_STATIC_CONSTANT(boost::uint32_t, default_seed = 19780503u);
+
+ BOOST_STATIC_ASSERT(!std::numeric_limits<result_type>::is_integer);
+
+ /** Creates a new \subtract_with_carry_01_engine using the default seed. */
+ subtract_with_carry_01_engine() { init_modulus(); seed(); }
+ /** Creates a new subtract_with_carry_01_engine and seeds it with value. */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(subtract_with_carry_01_engine,
+ boost::uint32_t, value)
+ { init_modulus(); seed(value); }
+ /**
+ * Creates a new \subtract_with_carry_01_engine and seeds with values
+ * produced by seq.generate().
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(subtract_with_carry_01_engine,
+ SeedSeq, seq)
+ { init_modulus(); seed(seq); }
+ /**
+ * Creates a new \subtract_with_carry_01_engine and seeds it with values
+ * from a range. Advances first to point one past the last consumed
+ * value. If the range does not contain enough elements to fill the
+ * entire state, throws @c std::invalid_argument.
+ */
+ template<class It> subtract_with_carry_01_engine(It& first, It last)
+ { init_modulus(); seed(first,last); }
private:
- /// \cond hide_private_members
- void init_modulus()
- {
+ /// \cond show_private
+ void init_modulus()
+ {
#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::pow;
+ // allow for Koenig lookup
+ using std::pow;
#endif
- _modulus = pow(RealType(2), word_size);
- }
- /// \endcond hide_private_members
+ _modulus = pow(RealType(2), RealType(word_size));
+ }
+ /// \endcond
public:
- // compiler-generated copy ctor and assignment operator are fine
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Seeds the generator with the default seed. */
+ void seed() { seed(default_seed); }
+
+ /** Seeds the generator with @c value. */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(subtract_with_carry_01_engine,
+ boost::uint32_t, value)
+ {
+ typedef linear_congruential_engine<uint32_t, 40014, 0, 2147483563> gen_t;
+ gen_t intgen(value == 0 ? default_seed : value);
+ detail::generator_seed_seq<gen_t> gen(intgen);
+ seed(gen);
+ }
- void seed(uint32_t value = 19780503u)
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::fmod;
-#endif
- random::linear_congruential<int32_t, 40014, 0, 2147483563, 0> gen(value);
- unsigned long array[(w+31)/32 * long_lag];
- for(unsigned int j = 0; j < sizeof(array)/sizeof(unsigned long); ++j)
- array[j] = gen();
- unsigned long * start = array;
- seed(start, array + sizeof(array)/sizeof(unsigned long));
- }
-
- template<class It>
- void seed(It& first, It last)
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::fmod;
- using std::pow;
-#endif
- unsigned long mask = ~((~0u) << (w%32)); // now lowest (w%32) bits set
- RealType two32 = pow(RealType(2), 32);
- unsigned int j;
- for(j = 0; j < long_lag && first != last; ++j) {
- x[j] = RealType(0);
- for(int i = 0; i < w/32 && first != last; ++i, ++first)
- x[j] += *first / pow(two32,i+1);
- if(first != last && mask != 0) {
- x[j] += fmod((*first & mask) / _modulus, RealType(1));
- ++first;
- }
+ /** Seeds the generator with values produced by @c seq.generate(). */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(subtract_with_carry_01_engine,
+ SeedSeq, seq)
+ {
+ detail::seed_array_real<w>(seq, x);
+ carry = (x[long_lag-1] ? 0 : 1 / _modulus);
+ k = 0;
}
- if(first == last && j < long_lag)
- throw std::invalid_argument("subtract_with_carry_01::seed");
- carry = (x[long_lag-1] ? 0 : 1 / _modulus);
- k = 0;
- }
-
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return result_type(0); }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return result_type(1); }
-
- result_type operator()()
- {
- int short_index = k - short_lag;
- if(short_index < 0)
- short_index += long_lag;
- RealType delta = x[short_index] - x[k] - carry;
- if(delta < 0) {
- delta += RealType(1);
- carry = RealType(1)/_modulus;
- } else {
- carry = 0;
+
+ /**
+ * Seeds the generator with values from a range. Updates first to
+ * point one past the last consumed element. If there are not
+ * enough elements in the range to fill the entire state, throws
+ * @c std::invalid_argument.
+ */
+ template<class It>
+ void seed(It& first, It last)
+ {
+ detail::fill_array_real<w>(first, last, x);
+ carry = (x[long_lag-1] ? 0 : 1 / _modulus);
+ k = 0;
}
- x[k] = delta;
- ++k;
- if(k >= long_lag)
- k = 0;
- return delta;
- }
-
- static bool validation(result_type x)
- { return x == val/pow(RealType(2), word_size); }
-
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os,
- const subtract_with_carry_01& f)
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- // allow for Koenig lookup
- using std::pow;
-#endif
- std::ios_base::fmtflags oldflags = os.flags(os.dec | os.fixed | os.left);
- for(unsigned int j = 0; j < f.long_lag; ++j)
- os << (f.compute(j) * f._modulus) << " ";
- os << (f.carry * f._modulus);
- os.flags(oldflags);
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, subtract_with_carry_01& f)
- {
-# ifdef BOOST_RANDOM_EXTRACT_SWC_01
- detail::extract_subtract_with_carry_01(is, f, f.carry, f.x, f._modulus);
-# else
- // MSVC (up to 7.1) and Borland (up to 5.64) don't handle the template type
- // parameter "RealType" available from the class template scope, so use
- // the member typedef
- typename subtract_with_carry_01::result_type value;
- for(unsigned int j = 0; j < long_lag; ++j) {
- is >> value >> std::ws;
- f.x[j] = value / f._modulus;
+
+ /** Returns the smallest value that the generator can produce. */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return result_type(0); }
+ /** Returns the largest value that the generator can produce. */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ { return result_type(1); }
+
+ /** Returns the next value of the generator. */
+ result_type operator()()
+ {
+ std::size_t short_index =
+ (k < short_lag) ?
+ (k + long_lag - short_lag) :
+ (k - short_lag);
+ carry = do_update(k, short_index, carry);
+ RealType result = x[k];
+ ++k;
+ if(k >= long_lag)
+ k = 0;
+ return result;
}
- is >> value >> std::ws;
- f.carry = value / f._modulus;
-# endif
- f.k = 0;
- return is;
- }
-#endif
- friend bool operator==(const subtract_with_carry_01& x,
- const subtract_with_carry_01& y)
- {
- for(unsigned int j = 0; j < r; ++j)
- if(x.compute(j) != y.compute(j))
- return false;
- return true;
- }
-
- friend bool operator!=(const subtract_with_carry_01& x,
- const subtract_with_carry_01& y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(const subtract_with_carry_01& rhs) const
- {
- for(unsigned int j = 0; j < r; ++j)
- if(compute(j) != rhs.compute(j))
- return false;
- return true;
- }
-
- bool operator!=(const subtract_with_carry_01& rhs) const
- { return !(*this == rhs); }
-#endif
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z)
+ { detail::subtract_with_carry_discard::apply(*this, z); }
+
+ /** Fills a range with random values. */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { detail::generate_from_real(*this, first, last); }
+
+ /** Writes a \subtract_with_carry_01_engine to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, subtract_with_carry_01_engine, f)
+ {
+ std::ios_base::fmtflags oldflags =
+ os.flags(os.dec | os.fixed | os.left);
+ for(unsigned int j = 0; j < f.long_lag; ++j)
+ os << (f.compute(j) * f._modulus) << ' ';
+ os << (f.carry * f._modulus);
+ os.flags(oldflags);
+ return os;
+ }
+
+ /** Reads a \subtract_with_carry_01_engine from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, subtract_with_carry_01_engine, f)
+ {
+ RealType value;
+ for(unsigned int j = 0; j < long_lag; ++j) {
+ is >> value >> std::ws;
+ f.x[j] = value / f._modulus;
+ }
+ is >> value;
+ f.carry = value / f._modulus;
+ f.k = 0;
+ return is;
+ }
+
+ /** Returns true if the two generators will produce identical sequences. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(subtract_with_carry_01_engine, x, y)
+ {
+ for(unsigned int j = 0; j < r; ++j)
+ if(x.compute(j) != y.compute(j))
+ return false;
+ return true;
+ }
+
+ /** Returns true if the two generators will produce different sequences. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(subtract_with_carry_01_engine)
private:
- /// \cond hide_private_members
- RealType compute(unsigned int index) const;
- /// \endcond
- unsigned int k;
- RealType carry;
- RealType x[long_lag];
- RealType _modulus;
+ /// \cond show_private
+ RealType compute(unsigned int index) const
+ {
+ return x[(k+index) % long_lag];
+ }
+
+ friend struct detail::subtract_with_carry_discard;
+
+ RealType do_update(std::size_t current, std::size_t short_index, RealType carry)
+ {
+ RealType delta = x[short_index] - x[current] - carry;
+ if(delta < 0) {
+ delta += RealType(1);
+ carry = RealType(1)/_modulus;
+ } else {
+ carry = 0;
+ }
+ x[current] = delta;
+ return carry;
+ }
+ /// \endcond
+ std::size_t k;
+ RealType carry;
+ RealType x[long_lag];
+ RealType _modulus;
};
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
// A definition is required even for integral static constants
-template<class RealType, int w, unsigned int s, unsigned int r, int val>
-const bool subtract_with_carry_01<RealType, w, s, r, val>::has_fixed_range;
-template<class RealType, int w, unsigned int s, unsigned int r, int val>
-const int subtract_with_carry_01<RealType, w, s, r, val>::word_size;
-template<class RealType, int w, unsigned int s, unsigned int r, int val>
-const unsigned int subtract_with_carry_01<RealType, w, s, r, val>::long_lag;
-template<class RealType, int w, unsigned int s, unsigned int r, int val>
-const unsigned int subtract_with_carry_01<RealType, w, s, r, val>::short_lag;
+template<class RealType, std::size_t w, std::size_t s, std::size_t r>
+const bool subtract_with_carry_01_engine<RealType, w, s, r>::has_fixed_range;
+template<class RealType, std::size_t w, std::size_t s, std::size_t r>
+const std::size_t subtract_with_carry_01_engine<RealType, w, s, r>::word_size;
+template<class RealType, std::size_t w, std::size_t s, std::size_t r>
+const std::size_t subtract_with_carry_01_engine<RealType, w, s, r>::long_lag;
+template<class RealType, std::size_t w, std::size_t s, std::size_t r>
+const std::size_t subtract_with_carry_01_engine<RealType, w, s, r>::short_lag;
+template<class RealType, std::size_t w, std::size_t s, std::size_t r>
+const uint32_t subtract_with_carry_01_engine<RealType, w, s, r>::default_seed;
#endif
-/// \cond hide_private_members
-template<class RealType, int w, unsigned int s, unsigned int r, int val>
-RealType subtract_with_carry_01<RealType, w, s, r, val>::compute(unsigned int index) const
+
+/// \cond show_deprecated
+
+template<class IntType, IntType m, unsigned s, unsigned r, IntType v>
+class subtract_with_carry :
+ public subtract_with_carry_engine<IntType,
+ boost::static_log2<m>::value, s, r>
{
- return x[(k+index) % long_lag];
-}
+ typedef subtract_with_carry_engine<IntType,
+ boost::static_log2<m>::value, s, r> base_type;
+public:
+ subtract_with_carry() {}
+ BOOST_RANDOM_DETAIL_GENERATOR_CONSTRUCTOR(subtract_with_carry, Gen, gen)
+ { seed(gen); }
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(subtract_with_carry,
+ IntType, val)
+ { seed(val); }
+ template<class It>
+ subtract_with_carry(It& first, It last) : base_type(first, last) {}
+ void seed() { base_type::seed(); }
+ BOOST_RANDOM_DETAIL_GENERATOR_SEED(subtract_with_carry, Gen, gen)
+ {
+ detail::generator_seed_seq<Gen> seq(gen);
+ base_type::seed(seq);
+ }
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(subtract_with_carry, IntType, val)
+ { base_type::seed(val); }
+ template<class It>
+ void seed(It& first, It last) { base_type::seed(first, last); }
+};
+
+template<class RealType, int w, unsigned s, unsigned r, int v = 0>
+class subtract_with_carry_01 :
+ public subtract_with_carry_01_engine<RealType, w, s, r>
+{
+ typedef subtract_with_carry_01_engine<RealType, w, s, r> base_type;
+public:
+ subtract_with_carry_01() {}
+ BOOST_RANDOM_DETAIL_GENERATOR_CONSTRUCTOR(subtract_with_carry_01, Gen, gen)
+ { seed(gen); }
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(subtract_with_carry_01,
+ uint32_t, val)
+ { seed(val); }
+ template<class It>
+ subtract_with_carry_01(It& first, It last) : base_type(first, last) {}
+ void seed() { base_type::seed(); }
+ BOOST_RANDOM_DETAIL_GENERATOR_SEED(subtract_with_carry_01, Gen, gen)
+ {
+ detail::generator_seed_seq<Gen> seq(gen);
+ base_type::seed(seq);
+ }
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(subtract_with_carry_01, uint32_t, val)
+ { base_type::seed(val); }
+ template<class It>
+ void seed(It& first, It last) { base_type::seed(first, last); }
+};
+
/// \endcond
+namespace detail {
+
+template<class Engine>
+struct generator_bits;
+
+template<class RealType, std::size_t w, std::size_t s, std::size_t r>
+struct generator_bits<subtract_with_carry_01_engine<RealType, w, s, r> > {
+ static std::size_t value() { return w; }
+};
+
+template<class RealType, int w, unsigned s, unsigned r, int v>
+struct generator_bits<subtract_with_carry_01<RealType, w, s, r, v> > {
+ static std::size_t value() { return w; }
+};
+
+}
+
} // namespace random
} // namespace boost
--- /dev/null
+/* boost random/taus88.hpp header file
+ *
+ * Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org/libs/random for documentation.
+ *
+ * $Id: taus88.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ *
+ */
+
+#ifndef BOOST_RANDOM_TAUS88_HPP
+#define BOOST_RANDOM_TAUS88_HPP
+
+#include <boost/random/linear_feedback_shift.hpp>
+#include <boost/random/xor_combine.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * The specialization taus88 was suggested in
+ *
+ * @blockquote
+ * "Maximally Equidistributed Combined Tausworthe Generators",
+ * Pierre L'Ecuyer, Mathematics of Computation, Volume 65,
+ * Number 213, January 1996, Pages 203-213
+ * @endblockquote
+ */
+typedef xor_combine_engine<
+ xor_combine_engine<
+ linear_feedback_shift_engine<uint32_t, 32, 31, 13, 12>, 0,
+ linear_feedback_shift_engine<uint32_t, 32, 29, 2, 4>, 0>, 0,
+ linear_feedback_shift_engine<uint32_t, 32, 28, 3, 17>, 0> taus88;
+
+} // namespace random
+
+using random::taus88;
+
+} // namespace boost
+
+#endif // BOOST_RANDOM_TAUS88_HPP
/* boost random/triangle_distribution.hpp header file
*
* Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: triangle_distribution.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: triangle_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#define BOOST_RANDOM_TRIANGLE_DISTRIBUTION_HPP
#include <boost/config/no_tr1/cmath.hpp>
-#include <cassert>
+#include <iosfwd>
+#include <ios>
+#include <istream>
+#include <boost/assert.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
#include <boost/random/uniform_01.hpp>
namespace boost {
+namespace random {
/**
* Instantiations of @c triangle_distribution model a \random_distribution.
class triangle_distribution
{
public:
- typedef RealType input_type;
- typedef RealType result_type;
-
- /**
- * Constructs a @c triangle_distribution with the parameters
- * @c a, @c b, and @c c.
- *
- * Preconditions: a <= b <= c.
- */
- explicit triangle_distribution(result_type a_arg = result_type(0),
- result_type b_arg = result_type(0.5),
- result_type c_arg = result_type(1))
- : _a(a_arg), _b(b_arg), _c(c_arg)
- {
- assert(_a <= _b && _b <= _c);
- init();
- }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- /** Returns the @c a parameter of the distribution */
- result_type a() const { return _a; }
- /** Returns the @c b parameter of the distribution */
- result_type b() const { return _b; }
- /** Returns the @c c parameter of the distribution */
- result_type c() const { return _c; }
-
- void reset() { }
-
- template<class Engine>
- result_type operator()(Engine& eng)
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- using std::sqrt;
-#endif
- result_type u = eng();
- if( u <= q1 )
- return _a + p1*sqrt(u);
- else
- return _c - d3*sqrt(d2*u-d1);
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const triangle_distribution& td)
- {
- os << td._a << " " << td._b << " " << td._c;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, triangle_distribution& td)
- {
- is >> std::ws >> td._a >> std::ws >> td._b >> std::ws >> td._c;
- td.init();
- return is;
- }
-#endif
+ typedef RealType input_type;
+ typedef RealType result_type;
+
+ class param_type
+ {
+ public:
+
+ typedef triangle_distribution distribution_type;
+
+ /** Constructs the parameters of a @c triangle_distribution. */
+ explicit param_type(RealType a_arg = RealType(0.0),
+ RealType b_arg = RealType(0.5),
+ RealType c_arg = RealType(1.0))
+ : _a(a_arg), _b(b_arg), _c(c_arg)
+ {
+ BOOST_ASSERT(_a <= _b && _b <= _c);
+ }
+
+ /** Returns the minimum value of the distribution. */
+ RealType a() const { return _a; }
+ /** Returns the mode of the distribution. */
+ RealType b() const { return _b; }
+ /** Returns the maximum value of the distribution. */
+ RealType c() const { return _c; }
+
+ /** Writes the parameters to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ os << parm._a << " " << parm._b << " " << parm._c;
+ return os;
+ }
+
+ /** Reads the parameters from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ double a_in, b_in, c_in;
+ if(is >> a_in >> std::ws >> b_in >> std::ws >> c_in) {
+ if(a_in <= b_in && b_in <= c_in) {
+ parm._a = a_in;
+ parm._b = b_in;
+ parm._c = c_in;
+ } else {
+ is.setstate(std::ios_base::failbit);
+ }
+ }
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are equal. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._a == rhs._a && lhs._b == rhs._b && lhs._c == rhs._c; }
+
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ RealType _a;
+ RealType _b;
+ RealType _c;
+ };
+
+ /**
+ * Constructs a @c triangle_distribution with the parameters
+ * @c a, @c b, and @c c.
+ *
+ * Preconditions: a <= b <= c.
+ */
+ explicit triangle_distribution(RealType a_arg = RealType(0.0),
+ RealType b_arg = RealType(0.5),
+ RealType c_arg = RealType(1.0))
+ : _a(a_arg), _b(b_arg), _c(c_arg)
+ {
+ BOOST_ASSERT(_a <= _b && _b <= _c);
+ init();
+ }
+
+ /** Constructs a @c triangle_distribution from its parameters. */
+ explicit triangle_distribution(const param_type& parm)
+ : _a(parm.a()), _b(parm.b()), _c(parm.c())
+ {
+ init();
+ }
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Returns the @c a parameter of the distribution */
+ result_type a() const { return _a; }
+ /** Returns the @c b parameter of the distribution */
+ result_type b() const { return _b; }
+ /** Returns the @c c parameter of the distribution */
+ result_type c() const { return _c; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _a; }
+ /** Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _c; }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_a, _b, _c); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _a = parm.a();
+ _b = parm.b();
+ _c = parm.c();
+ init();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /**
+ * Returns a random variate distributed according to the
+ * triangle distribution.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng)
+ {
+ using std::sqrt;
+ result_type u = uniform_01<>()(eng);
+ if( u <= q1 )
+ return _a + p1*sqrt(u);
+ else
+ return _c - d3*sqrt(d2*u-d1);
+ }
+
+ /**
+ * Returns a random variate distributed according to the
+ * triangle distribution with parameters specified by param.
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng, const param_type& parm)
+ { return triangle_distribution(parm)(eng); }
+
+ /** Writes the distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, triangle_distribution, td)
+ {
+ os << td.param();
+ return os;
+ }
+
+ /** Reads the distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, triangle_distribution, td)
+ {
+ param_type parm;
+ if(is >> parm) {
+ td.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two distributions will produce identical
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(triangle_distribution, lhs, rhs)
+ { return lhs._a == rhs._a && lhs._b == rhs._b && lhs._c == rhs._c; }
+
+ /**
+ * Returns true if the two distributions may produce different
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(triangle_distribution)
private:
- /// \cond hide_private_members
- void init()
- {
-#ifndef BOOST_NO_STDC_NAMESPACE
- using std::sqrt;
-#endif
- d1 = _b - _a;
- d2 = _c - _a;
- d3 = sqrt(_c - _b);
- q1 = d1 / d2;
- p1 = sqrt(d1 * d2);
- }
- /// \endcond
-
- result_type _a, _b, _c;
- result_type d1, d2, d3, q1, p1;
+ /// \cond show_private
+ void init()
+ {
+ using std::sqrt;
+ d1 = _b - _a;
+ d2 = _c - _a;
+ d3 = sqrt(_c - _b);
+ q1 = d1 / d2;
+ p1 = sqrt(d1 * d2);
+ }
+ /// \endcond
+
+ RealType _a, _b, _c;
+ RealType d1, d2, d3, q1, p1;
};
+} // namespace random
+
+using random::triangle_distribution;
+
} // namespace boost
#endif // BOOST_RANDOM_TRIANGLE_DISTRIBUTION_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: uniform_01.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: uniform_01.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#include <boost/limits.hpp>
#include <boost/static_assert.hpp>
#include <boost/random/detail/config.hpp>
-#include <boost/random/detail/pass_through_engine.hpp>
+#include <boost/random/detail/ptr_helper.hpp>
#include <boost/random/detail/disable_warnings.hpp>
namespace boost {
+namespace random {
#ifdef BOOST_RANDOM_DOXYGEN
class backward_compatible_uniform_01
{
typedef boost::random::detail::ptr_helper<UniformRandomNumberGenerator> traits;
- typedef boost::random::detail::pass_through_engine<UniformRandomNumberGenerator> internal_engine_type;
public:
typedef UniformRandomNumberGenerator base_type;
typedef RealType result_type;
explicit backward_compatible_uniform_01(typename traits::rvalue_type rng)
: _rng(rng),
_factor(result_type(1) /
- (result_type((_rng.max)()-(_rng.min)()) +
+ (result_type((base().max)()-(base().min)()) +
result_type(std::numeric_limits<base_result>::is_integer ? 1 : 0)))
{
}
result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return result_type(0); }
result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return result_type(1); }
- typename traits::value_type& base() { return _rng.base(); }
- const typename traits::value_type& base() const { return _rng.base(); }
+ typename traits::value_type& base() { return traits::ref(_rng); }
+ const typename traits::value_type& base() const { return traits::ref(_rng); }
void reset() { }
result_type operator()() {
for (;;) {
- result_type result = result_type(_rng() - (_rng.min)()) * _factor;
+ result_type result = result_type(base()() - (base().min)()) * _factor;
if (result < result_type(1))
return result;
}
#endif
private:
- typedef typename internal_engine_type::result_type base_result;
- internal_engine_type _rng;
+ typedef typename traits::value_type::result_type base_result;
+ UniformRandomNumberGenerator _rng;
result_type _factor;
};
#endif
+} // namespace random
+
+using random::uniform_01;
+
} // namespace boost
#include <boost/random/detail/enable_warnings.hpp>
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: uniform_int.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: uniform_int.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-04-08 added min<max assertion (N. Becker)
#ifndef BOOST_RANDOM_UNIFORM_INT_HPP
#define BOOST_RANDOM_UNIFORM_INT_HPP
-#include <cassert>
-#include <iostream>
-#include <boost/config.hpp>
-#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/detail/workaround.hpp>
-#include <boost/random/detail/config.hpp>
-#include <boost/random/detail/signed_unsigned_tools.hpp>
-#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/assert.hpp>
+#include <boost/random/uniform_int_distribution.hpp>
namespace boost {
* distributed in the set of integer numbers {min, min+1, min+2, ..., max}.
*
* The template parameter IntType shall denote an integer-like value type.
+ *
+ * This class is deprecated. Please use @c uniform_int_distribution in
+ * new code.
*/
template<class IntType = int>
-class uniform_int
+class uniform_int : public random::uniform_int_distribution<IntType>
{
+ typedef random::uniform_int_distribution<IntType> base_type;
public:
- typedef IntType input_type;
- typedef IntType result_type;
-
- /// \cond hide_private_members
- typedef typename make_unsigned<result_type>::type range_type;
- /// \endcond
-
- /**
- * Constructs a uniform_int object. @c min and @c max are
- * the parameters of the distribution.
- *
- * Requires: min <= max
- */
- explicit uniform_int(IntType min_arg = 0, IntType max_arg = 9)
- : _min(min_arg), _max(max_arg)
- {
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- // MSVC fails BOOST_STATIC_ASSERT with std::numeric_limits at class scope
- BOOST_STATIC_ASSERT(std::numeric_limits<IntType>::is_integer);
-#endif
- assert(min_arg <= max_arg);
- init();
- }
-
- /**
- * Returns: The "min" parameter of the distribution
- */
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _min; }
- /**
- * Returns: The "max" parameter of the distribution
- */
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _max; }
- void reset() { }
-
- // can't have member function templates out-of-line due to MSVC bugs
- template<class Engine>
- result_type operator()(Engine& eng)
- {
- return generate(eng, _min, _max, _range);
- }
-
- template<class Engine>
- result_type operator()(Engine& eng, result_type n)
- {
- assert(n > 0);
-
- if (n == 1)
- {
- return 0;
- }
-
- return generate(eng, 0, n - 1, n - 1);
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const uniform_int& ud)
- {
- os << ud._min << " " << ud._max;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, uniform_int& ud)
- {
- is >> std::ws >> ud._min >> std::ws >> ud._max;
- ud.init();
- return is;
- }
-#endif
-
-private:
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-// disable division by zero warning, since we can't
-// actually divide by zero.
-#pragma warning(disable:4723)
-#endif
- /// \cond hide_private_members
- template<class Engine>
- static result_type generate(Engine& eng, result_type min_value, result_type /*max_value*/, range_type range)
- {
- typedef typename Engine::result_type base_result;
- // ranges are always unsigned
- typedef typename make_unsigned<base_result>::type base_unsigned;
- const base_result bmin = (eng.min)();
- const base_unsigned brange =
- random::detail::subtract<base_result>()((eng.max)(), (eng.min)());
-
- if(range == 0) {
- return min_value;
- } else if(brange == range) {
- // this will probably never happen in real life
- // basically nothing to do; just take care we don't overflow / underflow
- base_unsigned v = random::detail::subtract<base_result>()(eng(), bmin);
- return random::detail::add<base_unsigned, result_type>()(v, min_value);
- } else if(brange < range) {
- // use rejection method to handle things like 0..3 --> 0..4
- for(;;) {
- // concatenate several invocations of the base RNG
- // take extra care to avoid overflows
-
- // limit == floor((range+1)/(brange+1))
- // Therefore limit*(brange+1) <= range+1
- range_type limit;
- if(range == (std::numeric_limits<range_type>::max)()) {
- limit = range/(range_type(brange)+1);
- if(range % (range_type(brange)+1) == range_type(brange))
- ++limit;
- } else {
- limit = (range+1)/(range_type(brange)+1);
- }
-
- // We consider "result" as expressed to base (brange+1):
- // For every power of (brange+1), we determine a random factor
- range_type result = range_type(0);
- range_type mult = range_type(1);
-
- // loop invariants:
- // result < mult
- // mult <= range
- while(mult <= limit) {
- // Postcondition: result <= range, thus no overflow
- //
- // limit*(brange+1)<=range+1 def. of limit (1)
- // eng()-bmin<=brange eng() post. (2)
- // and mult<=limit. loop condition (3)
- // Therefore mult*(eng()-bmin+1)<=range+1 by (1),(2),(3) (4)
- // Therefore mult*(eng()-bmin)+mult<=range+1 rearranging (4) (5)
- // result<mult loop invariant (6)
- // Therefore result+mult*(eng()-bmin)<range+1 by (5), (6) (7)
- //
- // Postcondition: result < mult*(brange+1)
- //
- // result<mult loop invariant (1)
- // eng()-bmin<=brange eng() post. (2)
- // Therefore result+mult*(eng()-bmin) <
- // mult+mult*(eng()-bmin) by (1) (3)
- // Therefore result+(eng()-bmin)*mult <
- // mult+mult*brange by (2), (3) (4)
- // Therefore result+(eng()-bmin)*mult <
- // mult*(brange+1) by (4)
- result += static_cast<range_type>(random::detail::subtract<base_result>()(eng(), bmin) * mult);
-
- // equivalent to (mult * (brange+1)) == range+1, but avoids overflow.
- if(mult * range_type(brange) == range - mult + 1) {
- // The destination range is an integer power of
- // the generator's range.
- return(result);
- }
-
- // Postcondition: mult <= range
- //
- // limit*(brange+1)<=range+1 def. of limit (1)
- // mult<=limit loop condition (2)
- // Therefore mult*(brange+1)<=range+1 by (1), (2) (3)
- // mult*(brange+1)!=range+1 preceding if (4)
- // Therefore mult*(brange+1)<range+1 by (3), (4) (5)
- //
- // Postcondition: result < mult
- //
- // See the second postcondition on the change to result.
- mult *= range_type(brange)+range_type(1);
- }
- // loop postcondition: range/mult < brange+1
- //
- // mult > limit loop condition (1)
- // Suppose range/mult >= brange+1 Assumption (2)
- // range >= mult*(brange+1) by (2) (3)
- // range+1 > mult*(brange+1) by (3) (4)
- // range+1 > (limit+1)*(brange+1) by (1), (4) (5)
- // (range+1)/(brange+1) > limit+1 by (5) (6)
- // limit < floor((range+1)/(brange+1)) by (6) (7)
- // limit==floor((range+1)/(brange+1)) def. of limit (8)
- // not (2) reductio (9)
- //
- // loop postcondition: (range/mult)*mult+(mult-1) >= range
- //
- // (range/mult)*mult + range%mult == range identity (1)
- // range%mult < mult def. of % (2)
- // (range/mult)*mult+mult > range by (1), (2) (3)
- // (range/mult)*mult+(mult-1) >= range by (3) (4)
- //
- // Note that the maximum value of result at this point is (mult-1),
- // so after this final step, we generate numbers that can be
- // at least as large as range. We have to really careful to avoid
- // overflow in this final addition and in the rejection. Anything
- // that overflows is larger than range and can thus be rejected.
-
- // range/mult < brange+1 -> no endless loop
- range_type result_increment = uniform_int<range_type>(0, range/mult)(eng);
- if((std::numeric_limits<range_type>::max)() / mult < result_increment) {
- // The multiplcation would overflow. Reject immediately.
- continue;
- }
- result_increment *= mult;
- // unsigned integers are guaranteed to wrap on overflow.
- result += result_increment;
- if(result < result_increment) {
- // The addition overflowed. Reject.
- continue;
- }
- if(result > range) {
- // Too big. Reject.
- continue;
- }
- return random::detail::add<range_type, result_type>()(result, min_value);
- }
- } else { // brange > range
- base_unsigned bucket_size;
- // it's safe to add 1 to range, as long as we cast it first,
- // because we know that it is less than brange. However,
- // we do need to be careful not to cause overflow by adding 1
- // to brange.
- if(brange == (std::numeric_limits<base_unsigned>::max)()) {
- bucket_size = brange / (static_cast<base_unsigned>(range)+1);
- if(brange % (static_cast<base_unsigned>(range)+1) == static_cast<base_unsigned>(range)) {
- ++bucket_size;
- }
- } else {
- bucket_size = (brange+1) / (static_cast<base_unsigned>(range)+1);
- }
- for(;;) {
- base_unsigned result =
- random::detail::subtract<base_result>()(eng(), bmin);
- result /= bucket_size;
- // result and range are non-negative, and result is possibly larger
- // than range, so the cast is safe
- if(result <= static_cast<base_unsigned>(range))
- return random::detail::add<base_unsigned, result_type>()(result, min_value);
- }
+ class param_type : public base_type::param_type
+ {
+ public:
+ typedef uniform_int distribution_type;
+ /**
+ * Constructs the parameters of a uniform_int distribution.
+ *
+ * Requires: min <= max
+ */
+ explicit param_type(IntType min_arg = 0, IntType max_arg = 9)
+ : base_type::param_type(min_arg, max_arg)
+ {}
+ };
+
+ /**
+ * Constructs a uniform_int object. @c min and @c max are
+ * the parameters of the distribution.
+ *
+ * Requires: min <= max
+ */
+ explicit uniform_int(IntType min_arg = 0, IntType max_arg = 9)
+ : base_type(min_arg, max_arg)
+ {}
+
+ /** Constructs a uniform_int distribution from its parameters. */
+ explicit uniform_int(const param_type& parm)
+ : base_type(parm)
+ {}
+
+ /** Returns the parameters of the distribution */
+ param_type param() const { return param_type(this->a(), this->b()); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm) { this->base_type::param(parm); }
+
+ // Codergear seems to have trouble with a using declaration here
+
+ template<class Engine>
+ IntType operator()(Engine& eng) const
+ {
+ return static_cast<const base_type&>(*this)(eng);
}
- }
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
- void init()
- {
- _range = random::detail::subtract<result_type>()(_max, _min);
- }
- /// \endcond
+ template<class Engine>
+ IntType operator()(Engine& eng, const param_type& parm) const
+ {
+ return static_cast<const base_type&>(*this)(eng, parm);
+ }
- // The result_type may be signed or unsigned, but the _range is always
- // unsigned.
- result_type _min, _max;
- range_type _range;
+ template<class Engine>
+ IntType operator()(Engine& eng, IntType n) const
+ {
+ BOOST_ASSERT(n > 0);
+ return static_cast<const base_type&>(*this)(eng, param_type(0, n - 1));
+ }
};
} // namespace boost
--- /dev/null
+/* boost random/uniform_int_distribution.hpp header file
+ *
+ * Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: uniform_int_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ *
+ * Revision history
+ * 2001-04-08 added min<max assertion (N. Becker)
+ * 2001-02-18 moved to individual header files
+ */
+
+#ifndef BOOST_RANDOM_UNIFORM_INT_DISTRIBUTION_HPP
+#define BOOST_RANDOM_UNIFORM_INT_DISTRIBUTION_HPP
+
+#include <iosfwd>
+#include <ios>
+#include <istream>
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
+#include <boost/assert.hpp>
+#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/uniform_int_float.hpp>
+#include <boost/random/detail/signed_unsigned_tools.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/type_traits/is_integral.hpp>
+
+namespace boost {
+namespace random {
+namespace detail {
+
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+// disable division by zero warning, since we can't
+// actually divide by zero.
+#pragma warning(disable:4723)
+#endif
+
+template<class Engine, class T>
+T generate_uniform_int(
+ Engine& eng, T min_value, T max_value,
+ boost::mpl::true_ /** is_integral<Engine::result_type> */)
+{
+ typedef T result_type;
+ typedef typename make_unsigned<T>::type range_type;
+ typedef typename Engine::result_type base_result;
+ // ranges are always unsigned
+ typedef typename make_unsigned<base_result>::type base_unsigned;
+ const range_type range = random::detail::subtract<result_type>()(max_value, min_value);
+ const base_result bmin = (eng.min)();
+ const base_unsigned brange =
+ random::detail::subtract<base_result>()((eng.max)(), (eng.min)());
+
+ if(range == 0) {
+ return min_value;
+ } else if(brange == range) {
+ // this will probably never happen in real life
+ // basically nothing to do; just take care we don't overflow / underflow
+ base_unsigned v = random::detail::subtract<base_result>()(eng(), bmin);
+ return random::detail::add<base_unsigned, result_type>()(v, min_value);
+ } else if(brange < range) {
+ // use rejection method to handle things like 0..3 --> 0..4
+ for(;;) {
+ // concatenate several invocations of the base RNG
+ // take extra care to avoid overflows
+
+ // limit == floor((range+1)/(brange+1))
+ // Therefore limit*(brange+1) <= range+1
+ range_type limit;
+ if(range == (std::numeric_limits<range_type>::max)()) {
+ limit = range/(range_type(brange)+1);
+ if(range % (range_type(brange)+1) == range_type(brange))
+ ++limit;
+ } else {
+ limit = (range+1)/(range_type(brange)+1);
+ }
+
+ // We consider "result" as expressed to base (brange+1):
+ // For every power of (brange+1), we determine a random factor
+ range_type result = range_type(0);
+ range_type mult = range_type(1);
+
+ // loop invariants:
+ // result < mult
+ // mult <= range
+ while(mult <= limit) {
+ // Postcondition: result <= range, thus no overflow
+ //
+ // limit*(brange+1)<=range+1 def. of limit (1)
+ // eng()-bmin<=brange eng() post. (2)
+ // and mult<=limit. loop condition (3)
+ // Therefore mult*(eng()-bmin+1)<=range+1 by (1),(2),(3) (4)
+ // Therefore mult*(eng()-bmin)+mult<=range+1 rearranging (4) (5)
+ // result<mult loop invariant (6)
+ // Therefore result+mult*(eng()-bmin)<range+1 by (5), (6) (7)
+ //
+ // Postcondition: result < mult*(brange+1)
+ //
+ // result<mult loop invariant (1)
+ // eng()-bmin<=brange eng() post. (2)
+ // Therefore result+mult*(eng()-bmin) <
+ // mult+mult*(eng()-bmin) by (1) (3)
+ // Therefore result+(eng()-bmin)*mult <
+ // mult+mult*brange by (2), (3) (4)
+ // Therefore result+(eng()-bmin)*mult <
+ // mult*(brange+1) by (4)
+ result += static_cast<range_type>(random::detail::subtract<base_result>()(eng(), bmin) * mult);
+
+ // equivalent to (mult * (brange+1)) == range+1, but avoids overflow.
+ if(mult * range_type(brange) == range - mult + 1) {
+ // The destination range is an integer power of
+ // the generator's range.
+ return(result);
+ }
+
+ // Postcondition: mult <= range
+ //
+ // limit*(brange+1)<=range+1 def. of limit (1)
+ // mult<=limit loop condition (2)
+ // Therefore mult*(brange+1)<=range+1 by (1), (2) (3)
+ // mult*(brange+1)!=range+1 preceding if (4)
+ // Therefore mult*(brange+1)<range+1 by (3), (4) (5)
+ //
+ // Postcondition: result < mult
+ //
+ // See the second postcondition on the change to result.
+ mult *= range_type(brange)+range_type(1);
+ }
+ // loop postcondition: range/mult < brange+1
+ //
+ // mult > limit loop condition (1)
+ // Suppose range/mult >= brange+1 Assumption (2)
+ // range >= mult*(brange+1) by (2) (3)
+ // range+1 > mult*(brange+1) by (3) (4)
+ // range+1 > (limit+1)*(brange+1) by (1), (4) (5)
+ // (range+1)/(brange+1) > limit+1 by (5) (6)
+ // limit < floor((range+1)/(brange+1)) by (6) (7)
+ // limit==floor((range+1)/(brange+1)) def. of limit (8)
+ // not (2) reductio (9)
+ //
+ // loop postcondition: (range/mult)*mult+(mult-1) >= range
+ //
+ // (range/mult)*mult + range%mult == range identity (1)
+ // range%mult < mult def. of % (2)
+ // (range/mult)*mult+mult > range by (1), (2) (3)
+ // (range/mult)*mult+(mult-1) >= range by (3) (4)
+ //
+ // Note that the maximum value of result at this point is (mult-1),
+ // so after this final step, we generate numbers that can be
+ // at least as large as range. We have to really careful to avoid
+ // overflow in this final addition and in the rejection. Anything
+ // that overflows is larger than range and can thus be rejected.
+
+ // range/mult < brange+1 -> no endless loop
+ range_type result_increment =
+ generate_uniform_int(
+ eng,
+ static_cast<range_type>(0),
+ static_cast<range_type>(range/mult),
+ boost::mpl::true_());
+ if((std::numeric_limits<range_type>::max)() / mult < result_increment) {
+ // The multiplcation would overflow. Reject immediately.
+ continue;
+ }
+ result_increment *= mult;
+ // unsigned integers are guaranteed to wrap on overflow.
+ result += result_increment;
+ if(result < result_increment) {
+ // The addition overflowed. Reject.
+ continue;
+ }
+ if(result > range) {
+ // Too big. Reject.
+ continue;
+ }
+ return random::detail::add<range_type, result_type>()(result, min_value);
+ }
+ } else { // brange > range
+ base_unsigned bucket_size;
+ // it's safe to add 1 to range, as long as we cast it first,
+ // because we know that it is less than brange. However,
+ // we do need to be careful not to cause overflow by adding 1
+ // to brange.
+ if(brange == (std::numeric_limits<base_unsigned>::max)()) {
+ bucket_size = brange / (static_cast<base_unsigned>(range)+1);
+ if(brange % (static_cast<base_unsigned>(range)+1) == static_cast<base_unsigned>(range)) {
+ ++bucket_size;
+ }
+ } else {
+ bucket_size = (brange+1) / (static_cast<base_unsigned>(range)+1);
+ }
+ for(;;) {
+ base_unsigned result =
+ random::detail::subtract<base_result>()(eng(), bmin);
+ result /= bucket_size;
+ // result and range are non-negative, and result is possibly larger
+ // than range, so the cast is safe
+ if(result <= static_cast<base_unsigned>(range))
+ return random::detail::add<base_unsigned, result_type>()(result, min_value);
+ }
+ }
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+template<class Engine, class T>
+inline T generate_uniform_int(
+ Engine& eng, T min_value, T max_value,
+ boost::mpl::false_ /** is_integral<Engine::result_type> */)
+{
+ uniform_int_float<Engine> wrapper(eng);
+ return generate_uniform_int(wrapper, min_value, max_value, boost::mpl::true_());
+}
+
+template<class Engine, class T>
+inline T generate_uniform_int(Engine& eng, T min_value, T max_value)
+{
+ typedef typename Engine::result_type base_result;
+ return generate_uniform_int(eng, min_value, max_value,
+ boost::is_integral<base_result>());
+}
+
+}
+
+/**
+ * The class template uniform_int_distribution models a \random_distribution.
+ * On each invocation, it returns a random integer value uniformly
+ * distributed in the set of integers {min, min+1, min+2, ..., max}.
+ *
+ * The template parameter IntType shall denote an integer-like value type.
+ */
+template<class IntType = int>
+class uniform_int_distribution
+{
+public:
+ typedef IntType input_type;
+ typedef IntType result_type;
+
+ class param_type
+ {
+ public:
+
+ typedef uniform_int_distribution distribution_type;
+
+ /**
+ * Constructs the parameters of a uniform_int_distribution.
+ *
+ * Requires min <= max
+ */
+ explicit param_type(
+ IntType min_arg = 0,
+ IntType max_arg = (std::numeric_limits<IntType>::max)())
+ : _min(min_arg), _max(max_arg)
+ {
+ BOOST_ASSERT(_min <= _max);
+ }
+
+ /** Returns the minimum value of the distribution. */
+ IntType a() const { return _min; }
+ /** Returns the maximum value of the distribution. */
+ IntType b() const { return _max; }
+
+ /** Writes the parameters to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ os << parm._min << " " << parm._max;
+ return os;
+ }
+
+ /** Reads the parameters from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ IntType min_in, max_in;
+ if(is >> min_in >> std::ws >> max_in) {
+ if(min_in <= max_in) {
+ parm._min = min_in;
+ parm._max = max_in;
+ } else {
+ is.setstate(std::ios_base::failbit);
+ }
+ }
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are equal. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._min == rhs._min && lhs._max == rhs._max; }
+
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+
+ IntType _min;
+ IntType _max;
+ };
+
+ /**
+ * Constructs a uniform_int_distribution. @c min and @c max are
+ * the parameters of the distribution.
+ *
+ * Requires: min <= max
+ */
+ explicit uniform_int_distribution(
+ IntType min_arg = 0,
+ IntType max_arg = (std::numeric_limits<IntType>::max)())
+ : _min(min_arg), _max(max_arg)
+ {
+ BOOST_ASSERT(min_arg <= max_arg);
+ }
+ /** Constructs a uniform_int_distribution from its parameters. */
+ explicit uniform_int_distribution(const param_type& parm)
+ : _min(parm.a()), _max(parm.b()) {}
+
+ /** Returns the minimum value of the distribution */
+ IntType min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _min; }
+ /** Returns the maximum value of the distribution */
+ IntType max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _max; }
+
+ /** Returns the minimum value of the distribution */
+ IntType a() const { return _min; }
+ /** Returns the maximum value of the distribution */
+ IntType b() const { return _max; }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_min, _max); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _min = parm.a();
+ _max = parm.b();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /** Returns an integer uniformly distributed in the range [min, max]. */
+ template<class Engine>
+ result_type operator()(Engine& eng) const
+ { return detail::generate_uniform_int(eng, _min, _max); }
+
+ /**
+ * Returns an integer uniformly distributed in the range
+ * [param.a(), param.b()].
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng, const param_type& parm) const
+ { return detail::generate_uniform_int(eng, parm.a(), parm.b()); }
+
+ /** Writes the distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, uniform_int_distribution, ud)
+ {
+ os << ud.param();
+ return os;
+ }
+
+ /** Reads the distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, uniform_int_distribution, ud)
+ {
+ param_type parm;
+ if(is >> parm) {
+ ud.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two distributions will produce identical sequences
+ * of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(uniform_int_distribution, lhs, rhs)
+ { return lhs._min == rhs._min && lhs._max == rhs._max; }
+
+ /**
+ * Returns true if the two distributions may produce different sequences
+ * of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(uniform_int_distribution)
+
+private:
+ IntType _min;
+ IntType _max;
+};
+
+} // namespace random
+} // namespace boost
+
+#endif // BOOST_RANDOM_UNIFORM_INT_HPP
/* boost random/uniform_on_sphere.hpp header file
*
* Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: uniform_on_sphere.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: uniform_on_sphere.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-02-18 moved to individual header files
#include <vector>
#include <algorithm> // std::transform
#include <functional> // std::bind2nd, std::divides
+#include <boost/assert.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
#include <boost/random/normal_distribution.hpp>
namespace boost {
+namespace random {
/**
* Instantiations of class template uniform_on_sphere model a
* numbers uniformly distributed on the unit sphere of arbitrary
* dimension @c dim. The @c Cont template parameter must be a STL-like
* container type with begin and end operations returning non-const
- * ForwardIterators of type @c Cont::iterator. Each invocation of the
- * @c UniformRandomNumberGenerator shall result in a floating-point
- * value in the range [0,1).
+ * ForwardIterators of type @c Cont::iterator.
*/
template<class RealType = double, class Cont = std::vector<RealType> >
class uniform_on_sphere
{
public:
- typedef RealType input_type;
- typedef Cont result_type;
-
- /**
- * Constructs a @c uniform_on_sphere distribution.
- * @c dim is the dimension of the sphere.
- */
- explicit uniform_on_sphere(int dim = 2) : _container(dim), _dim(dim) { }
-
- // compiler-generated copy ctor and assignment operator are fine
-
- void reset() { _normal.reset(); }
-
- template<class Engine>
- const result_type & operator()(Engine& eng)
- {
- RealType sqsum = 0;
- for(typename Cont::iterator it = _container.begin();
- it != _container.end();
- ++it) {
- RealType val = _normal(eng);
- *it = val;
- sqsum += val * val;
+ typedef RealType input_type;
+ typedef Cont result_type;
+
+ class param_type
+ {
+ public:
+
+ typedef uniform_on_sphere distribution_type;
+
+ /**
+ * Constructs the parameters of a uniform_on_sphere
+ * distribution, given the dimension of the sphere.
+ */
+ explicit param_type(int dim_arg = 2) : _dim(dim_arg)
+ {
+ BOOST_ASSERT(_dim >= 0);
+ }
+
+ /** Returns the dimension of the sphere. */
+ int dim() const { return _dim; }
+
+ /** Writes the parameters to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ os << parm._dim;
+ return os;
+ }
+
+ /** Reads the parameters from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ is >> parm._dim;
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are equal. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._dim == rhs._dim; }
+
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ int _dim;
+ };
+
+ /**
+ * Constructs a @c uniform_on_sphere distribution.
+ * @c dim is the dimension of the sphere.
+ *
+ * Requires: dim >= 0
+ */
+ explicit uniform_on_sphere(int dim_arg = 2)
+ : _container(dim_arg), _dim(dim_arg) { }
+
+ /**
+ * Constructs a @c uniform_on_sphere distribution from its parameters.
+ */
+ explicit uniform_on_sphere(const param_type& parm)
+ : _container(parm.dim()), _dim(parm.dim()) { }
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /** Returns the dimension of the sphere. */
+ int dim() const { return _dim; }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_dim); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _dim = parm.dim();
+ _container.resize(_dim);
+ }
+
+ /**
+ * Returns the smallest value that the distribution can produce.
+ * Note that this is required to approximate the standard library's
+ * requirements. The behavior is defined according to lexicographical
+ * comparison so that for a container type of std::vector,
+ * dist.min() <= x <= dist.max() where x is any value produced
+ * by the distribution.
+ */
+ result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ {
+ result_type result(_dim);
+ if(_dim != 0) {
+ result.front() = RealType(-1.0);
+ }
+ return result;
+ }
+ /**
+ * Returns the largest value that the distribution can produce.
+ * Note that this is required to approximate the standard library's
+ * requirements. The behavior is defined according to lexicographical
+ * comparison so that for a container type of std::vector,
+ * dist.min() <= x <= dist.max() where x is any value produced
+ * by the distribution.
+ */
+ result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ {
+ result_type result(_dim);
+ if(_dim != 0) {
+ result.front() = RealType(1.0);
+ }
+ return result;
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { _normal.reset(); }
+
+ /**
+ * Returns a point uniformly distributed over the surface of
+ * a sphere of dimension dim().
+ */
+ template<class Engine>
+ const result_type & operator()(Engine& eng)
+ {
+ RealType sqsum = 0;
+ for(typename Cont::iterator it = _container.begin();
+ it != _container.end();
+ ++it) {
+ RealType val = _normal(eng);
+ *it = val;
+ sqsum += val * val;
+ }
+ using std::sqrt;
+ // for all i: result[i] /= sqrt(sqsum)
+ std::transform(_container.begin(), _container.end(), _container.begin(),
+ std::bind2nd(std::divides<RealType>(), sqrt(sqsum)));
+ return _container;
+ }
+
+ /**
+ * Returns a point uniformly distributed over the surface of
+ * a sphere of dimension param.dim().
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng, const param_type& parm) const
+ {
+ return uniform_on_sphere(parm)(eng);
}
-#ifndef BOOST_NO_STDC_NAMESPACE
- using std::sqrt;
-#endif
- // for all i: result[i] /= sqrt(sqsum)
- std::transform(_container.begin(), _container.end(), _container.begin(),
- std::bind2nd(std::divides<RealType>(), sqrt(sqsum)));
- return _container;
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const uniform_on_sphere& sd)
- {
- os << sd._dim;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, uniform_on_sphere& sd)
- {
- is >> std::ws >> sd._dim;
- sd._container.resize(sd._dim);
- return is;
- }
-#endif
+
+ /** Writes the distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, uniform_on_sphere, sd)
+ {
+ os << sd._dim;
+ return os;
+ }
+
+ /** Reads the distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, uniform_on_sphere, sd)
+ {
+ is >> sd._dim;
+ sd._container.resize(sd._dim);
+ return is;
+ }
+
+ /**
+ * Returns true if the two distributions will produce identical
+ * sequences of values, given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(uniform_on_sphere, lhs, rhs)
+ { return lhs._dim == rhs._dim && lhs._normal == rhs._normal; }
+
+ /**
+ * Returns true if the two distributions may produce different
+ * sequences of values, given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(uniform_on_sphere)
private:
- normal_distribution<RealType> _normal;
- result_type _container;
- int _dim;
+ normal_distribution<RealType> _normal;
+ result_type _container;
+ int _dim;
};
+} // namespace random
+
+using random::uniform_on_sphere;
+
} // namespace boost
#endif // BOOST_RANDOM_UNIFORM_ON_SPHERE_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: uniform_real.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: uniform_real.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-04-08 added min<max assertion (N. Becker)
#ifndef BOOST_RANDOM_UNIFORM_REAL_HPP
#define BOOST_RANDOM_UNIFORM_REAL_HPP
-#include <cassert>
-#include <iostream>
+#include <boost/assert.hpp>
#include <boost/config.hpp>
#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/random/detail/config.hpp>
+#include <boost/random/uniform_real_distribution.hpp>
namespace boost {
/**
* The distribution function uniform_real models a random distribution.
* On each invocation, it returns a random floating-point value uniformly
- * distributed in the range [min..max). The value is computed using
- * std::numeric_limits<RealType>::digits random binary digits, i.e.
- * the mantissa of the floating-point value is completely filled with
- * random bits.
+ * distributed in the range [min..max).
*
- * Note: The current implementation is buggy, because it may not fill
- * all of the mantissa with random bits.
+ * This class is deprecated. Please use @c uniform_real_distribution in
+ * new code.
*/
template<class RealType = double>
-class uniform_real
+class uniform_real : public random::uniform_real_distribution<RealType>
{
+ typedef random::uniform_real_distribution<RealType> base_type;
public:
- typedef RealType input_type;
- typedef RealType result_type;
- /**
- * Constructs a uniform_real object. @c min and @c max are the
- * parameters of the distribution.
- *
- * Requires: min <= max
- */
- explicit uniform_real(RealType min_arg = RealType(0),
- RealType max_arg = RealType(1))
- : _min(min_arg), _max(max_arg)
- {
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
-#endif
- assert(min_arg <= max_arg);
- }
+ class param_type : public base_type::param_type
+ {
+ public:
+ typedef uniform_real distribution_type;
+ /**
+ * Constructs the parameters of a uniform_real distribution.
+ *
+ * Requires: min <= max
+ */
+ explicit param_type(RealType min_arg = RealType(0.0),
+ RealType max_arg = RealType(1.0))
+ : base_type::param_type(min_arg, max_arg)
+ {}
+ };
- // compiler-generated copy ctor and assignment operator are fine
+ /**
+ * Constructs a uniform_real object. @c min and @c max are the
+ * parameters of the distribution.
+ *
+ * Requires: min <= max
+ */
+ explicit uniform_real(RealType min_arg = RealType(0.0),
+ RealType max_arg = RealType(1.0))
+ : base_type(min_arg, max_arg)
+ {
+ BOOST_ASSERT(min_arg <= max_arg);
+ }
- /**
- * Returns: The "min" parameter of the distribution
- */
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _min; }
- /**
- * Returns: The "max" parameter of the distribution
- */
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _max; }
- void reset() { }
+ /** Constructs a uniform_real distribution from its parameters. */
+ explicit uniform_real(const param_type& parm)
+ : base_type(parm)
+ {}
- template<class Engine>
- result_type operator()(Engine& eng) {
- result_type numerator = static_cast<result_type>(eng() - eng.min BOOST_PREVENT_MACRO_SUBSTITUTION());
- result_type divisor = static_cast<result_type>(eng.max BOOST_PREVENT_MACRO_SUBSTITUTION() - eng.min BOOST_PREVENT_MACRO_SUBSTITUTION());
- assert(divisor > 0);
- assert(numerator >= 0 && numerator <= divisor);
- return numerator / divisor * (_max - _min) + _min;
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const uniform_real& ud)
- {
- os << ud._min << " " << ud._max;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, uniform_real& ud)
- {
- is >> std::ws >> ud._min >> std::ws >> ud._max;
- return is;
- }
-#endif
-
-private:
- RealType _min, _max;
+ /** Returns the parameters of the distribution */
+ param_type param() const { return param_type(this->a(), this->b()); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm) { this->base_type::param(parm); }
};
} // namespace boost
--- /dev/null
+/* boost random/uniform_real_distribution.hpp header file
+ *
+ * Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: uniform_real_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ *
+ */
+
+#ifndef BOOST_RANDOM_UNIFORM_REAL_DISTRIBUTION_HPP
+#define BOOST_RANDOM_UNIFORM_REAL_DISTRIBUTION_HPP
+
+#include <iosfwd>
+#include <ios>
+#include <istream>
+#include <boost/assert.hpp>
+#include <boost/config.hpp>
+#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/signed_unsigned_tools.hpp>
+#include <boost/type_traits/is_integral.hpp>
+
+namespace boost {
+namespace random {
+namespace detail {
+
+template<class Engine, class T>
+T generate_uniform_real(
+ Engine& eng, T min_value, T max_value,
+ boost::mpl::false_ /** is_integral<Engine::result_type> */)
+{
+ for(;;) {
+ typedef T result_type;
+ typedef typename Engine::result_type base_result;
+ result_type numerator = static_cast<T>(eng() - (eng.min)());
+ result_type divisor = static_cast<T>((eng.max)() - (eng.min)());
+ BOOST_ASSERT(divisor > 0);
+ BOOST_ASSERT(numerator >= 0 && numerator <= divisor);
+ T result = numerator / divisor * (max_value - min_value) + min_value;
+ if(result < max_value) return result;
+ }
+}
+
+template<class Engine, class T>
+T generate_uniform_real(
+ Engine& eng, T min_value, T max_value,
+ boost::mpl::true_ /** is_integral<Engine::result_type> */)
+{
+ for(;;) {
+ typedef T result_type;
+ typedef typename Engine::result_type base_result;
+ result_type numerator = static_cast<T>(subtract<base_result>()(eng(), (eng.min)()));
+ result_type divisor = static_cast<T>(subtract<base_result>()((eng.max)(), (eng.min)())) + 1;
+ BOOST_ASSERT(divisor > 0);
+ BOOST_ASSERT(numerator >= 0 && numerator <= divisor);
+ T result = numerator / divisor * (max_value - min_value) + min_value;
+ if(result < max_value) return result;
+ }
+}
+
+template<class Engine, class T>
+inline T generate_uniform_real(Engine& eng, T min_value, T max_value)
+{
+ typedef typename Engine::result_type base_result;
+ return generate_uniform_real(eng, min_value, max_value,
+ boost::is_integral<base_result>());
+}
+
+}
+
+/**
+ * The class template uniform_real_distribution models a \random_distribution.
+ * On each invocation, it returns a random floating-point value uniformly
+ * distributed in the range [min..max).
+ */
+template<class RealType = double>
+class uniform_real_distribution
+{
+public:
+ typedef RealType input_type;
+ typedef RealType result_type;
+
+ class param_type
+ {
+ public:
+
+ typedef uniform_real_distribution distribution_type;
+
+ /**
+ * Constructs the parameters of a uniform_real_distribution.
+ *
+ * Requires min <= max
+ */
+ explicit param_type(RealType min_arg = RealType(0.0),
+ RealType max_arg = RealType(1.0))
+ : _min(min_arg), _max(max_arg)
+ {
+ BOOST_ASSERT(_min <= _max);
+ }
+
+ /** Returns the minimum value of the distribution. */
+ RealType a() const { return _min; }
+ /** Returns the maximum value of the distribution. */
+ RealType b() const { return _max; }
+
+ /** Writes the parameters to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ os << parm._min << " " << parm._max;
+ return os;
+ }
+
+ /** Reads the parameters from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ RealType min_in, max_in;
+ if(is >> min_in >> std::ws >> max_in) {
+ if(min_in <= max_in) {
+ parm._min = min_in;
+ parm._max = max_in;
+ } else {
+ is.setstate(std::ios_base::failbit);
+ }
+ }
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are equal. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._min == rhs._min && lhs._max == rhs._max; }
+
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+
+ RealType _min;
+ RealType _max;
+ };
+
+ /**
+ * Constructs a uniform_real_distribution. @c min and @c max are
+ * the parameters of the distribution.
+ *
+ * Requires: min <= max
+ */
+ explicit uniform_real_distribution(
+ RealType min_arg = RealType(0.0),
+ RealType max_arg = RealType(1.0))
+ : _min(min_arg), _max(max_arg)
+ {
+ BOOST_ASSERT(min_arg <= max_arg);
+ }
+ /** Constructs a uniform_real_distribution from its parameters. */
+ explicit uniform_real_distribution(const param_type& parm)
+ : _min(parm.a()), _max(parm.b()) {}
+
+ /** Returns the minimum value of the distribution */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _min; }
+ /** Returns the maximum value of the distribution */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _max; }
+
+ /** Returns the minimum value of the distribution */
+ RealType a() const { return _min; }
+ /** Returns the maximum value of the distribution */
+ RealType b() const { return _max; }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_min, _max); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _min = parm.a();
+ _max = parm.b();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /** Returns a value uniformly distributed in the range [min, max). */
+ template<class Engine>
+ result_type operator()(Engine& eng) const
+ { return detail::generate_uniform_real(eng, _min, _max); }
+
+ /**
+ * Returns a value uniformly distributed in the range
+ * [param.a(), param.b()).
+ */
+ template<class Engine>
+ result_type operator()(Engine& eng, const param_type& parm) const
+ { return detail::generate_uniform_real(eng, parm.a(), parm.b()); }
+
+ /** Writes the distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, uniform_real_distribution, ud)
+ {
+ os << ud.param();
+ return os;
+ }
+
+ /** Reads the distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, uniform_real_distribution, ud)
+ {
+ param_type parm;
+ if(is >> parm) {
+ ud.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two distributions will produce identical sequences
+ * of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(uniform_real_distribution, lhs, rhs)
+ { return lhs._min == rhs._min && lhs._max == rhs._max; }
+
+ /**
+ * Returns true if the two distributions may produce different sequences
+ * of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(uniform_real_distribution)
+
+private:
+ RealType _min;
+ RealType _max;
+};
+
+} // namespace random
+} // namespace boost
+
+#endif // BOOST_RANDOM_UNIFORM_INT_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: uniform_smallint.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: uniform_smallint.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
* Revision history
* 2001-04-08 added min<max assertion (N. Becker)
#ifndef BOOST_RANDOM_UNIFORM_SMALLINT_HPP
#define BOOST_RANDOM_UNIFORM_SMALLINT_HPP
-#include <cassert>
-#include <iostream>
+#include <istream>
+#include <iosfwd>
+#include <boost/assert.hpp>
#include <boost/config.hpp>
#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_integral.hpp>
#include <boost/random/detail/config.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/detail/signed_unsigned_tools.hpp>
#include <boost/random/uniform_01.hpp>
#include <boost/detail/workaround.hpp>
namespace boost {
+namespace random {
// uniform integer distribution on a small range [min, max]
* underlying source of random numbers and thus makes no attempt to limit
* quantization errors.
*
- * Let r<sub>out</sub>=(max-min+1) the desired range of integer numbers, and
- * let r<sub>base</sub> be the range of the underlying source of random
+ * Let \f$r_{\mathtt{out}} = (\mbox{max}-\mbox{min}+1)\f$ the desired range of
+ * integer numbers, and
+ * let \f$r_{\mathtt{base}}\f$ be the range of the underlying source of random
* numbers. Then, for the uniform distribution, the theoretical probability
- * for any number i in the range r<sub>out</sub> will be p<sub>out</sub>(i) =
- * 1/r<sub>out</sub>. Likewise, assume a uniform distribution on r<sub>base</sub> for
- * the underlying source of random numbers, i.e. p<sub>base</sub>(i) =
- * 1/r<sub>base</sub>. Let p<sub>out_s</sub>(i) denote the random
+ * for any number i in the range \f$r_{\mathtt{out}}\f$ will be
+ * \f$\displaystyle p_{\mathtt{out}}(i) = \frac{1}{r_{\mathtt{out}}}\f$.
+ * Likewise, assume a uniform distribution on \f$r_{\mathtt{base}}\f$ for
+ * the underlying source of random numbers, i.e.
+ * \f$\displaystyle p_{\mathtt{base}}(i) = \frac{1}{r_{\mathtt{base}}}\f$.
+ * Let \f$p_{\mathtt{out\_s}}(i)\f$ denote the random
* distribution generated by @c uniform_smallint. Then the sum over all
- * i in r<sub>out</sub> of (p<sub>out_s</sub>(i)/p<sub>out</sub>(i) - 1)<sup>2</sup>
- * shall not exceed r<sub>out</sub>/r<sub>base</sub><sup>2</sup>
- * (r<sub>base</sub> mod r<sub>out</sub>)(r<sub>out</sub> -
- * r<sub>base</sub> mod r<sub>out</sub>).
+ * i in \f$r_{\mathtt{out}}\f$ of
+ * \f$\displaystyle
+ * \left(\frac{p_{\mathtt{out\_s}}(i)}{p_{\mathtt{out}}(i)} - 1\right)^2\f$
+ * shall not exceed
+ * \f$\displaystyle \frac{r_{\mathtt{out}}}{r_{\mathtt{base}}^2}
+ * (r_{\mathtt{base}} \mbox{ mod } r_{\mathtt{out}})
+ * (r_{\mathtt{out}} - r_{\mathtt{base}} \mbox{ mod } r_{\mathtt{out}})\f$.
*
* The template parameter IntType shall denote an integer-like value type.
*
- * Note: The property above is the square sum of the relative differences
+ * @xmlnote
+ * The property above is the square sum of the relative differences
* in probabilities between the desired uniform distribution
- * p<sub>out</sub>(i) and the generated distribution p<sub>out_s</sub>(i).
+ * \f$p_{\mathtt{out}}(i)\f$ and the generated distribution
+ * \f$p_{\mathtt{out\_s}}(i)\f$.
* The property can be fulfilled with the calculation
- * (base_rng mod r<sub>out</sub>), as follows: Let r = r<sub>base</sub> mod
- * r<sub>out</sub>. The base distribution on r<sub>base</sub> is folded onto the
- * range r<sub>out</sub>. The numbers i < r have assigned (r<sub>base</sub>
- * div r<sub>out</sub>)+1 numbers of the base distribution, the rest has
- * only (r<sub>base</sub> div r<sub>out</sub>). Therefore,
- * p<sub>out_s</sub>(i) = ((r<sub>base</sub> div r<sub>out</sub>)+1) /
- * r<sub>base</sub> for i < r and p<sub>out_s</sub>(i) = (r<sub>base</sub>
- * div r<sub>out</sub>)/r<sub>base</sub> otherwise. Substituting this in the
+ * \f$(\mbox{base\_rng} \mbox{ mod } r_{\mathtt{out}})\f$, as follows:
+ * Let \f$r = r_{\mathtt{base}} \mbox{ mod } r_{\mathtt{out}}\f$.
+ * The base distribution on \f$r_{\mathtt{base}}\f$ is folded onto the
+ * range \f$r_{\mathtt{out}}\f$. The numbers i < r have assigned
+ * \f$\displaystyle
+ * \left\lfloor\frac{r_{\mathtt{base}}}{r_{\mathtt{out}}}\right\rfloor+1\f$
+ * numbers of the base distribution, the rest has only \f$\displaystyle
+ * \left\lfloor\frac{r_{\mathtt{base}}}{r_{\mathtt{out}}}\right\rfloor\f$.
+ * Therefore,
+ * \f$\displaystyle p_{\mathtt{out\_s}}(i) =
+ * \left(\left\lfloor\frac{r_{\mathtt{base}}}
+ * {r_{\mathtt{out}}}\right\rfloor+1\right) /
+ * r_{\mathtt{base}}\f$ for i < r and \f$\displaystyle p_{\mathtt{out\_s}}(i) =
+ * \left\lfloor\frac{r_{\mathtt{base}}}
+ * {r_{\mathtt{out}}}\right\rfloor/r_{\mathtt{base}}\f$ otherwise.
+ * Substituting this in the
* above sum formula leads to the desired result.
+ * @endxmlnote
*
- * Note: The upper bound for (r<sub>base</sub> mod r<sub>out</sub>)
- * (r<sub>out</sub> - r<sub>base</sub> mod r<sub>out</sub>) is
- * r<sub>out</sub><sup>2</sup>/4. Regarding the upper bound for the
- * square sum of the relative quantization error of
- * r<sub>out</sub><sup>3</sup>/(4*r<sub>base</sub><sup>2</sup>), it
- * seems wise to either choose r<sub>base</sub> so that r<sub>base</sub> >
- * 10*r<sub>out</sub><sup>2</sup> or ensure that r<sub>base</sub> is
- * divisible by r<sub>out</sub>.
+ * Note: The upper bound for
+ * \f$(r_{\mathtt{base}} \mbox{ mod } r_{\mathtt{out}})
+ * (r_{\mathtt{out}} - r_{\mathtt{base}} \mbox{ mod } r_{\mathtt{out}})\f$ is
+ * \f$\displaystyle \frac{r_{\mathtt{out}}^2}{4}\f$. Regarding the upper bound
+ * for the square sum of the relative quantization error of
+ * \f$\displaystyle \frac{r_\mathtt{out}^3}{4r_{\mathtt{base}}^2}\f$, it
+ * seems wise to either choose \f$r_{\mathtt{base}}\f$ so that
+ * \f$r_{\mathtt{base}} > 10r_{\mathtt{out}}^2\f$ or ensure that
+ * \f$r_{\mathtt{base}}\f$ is
+ * divisible by \f$r_{\mathtt{out}}\f$.
*/
template<class IntType = int>
class uniform_smallint
{
public:
- typedef IntType input_type;
- typedef IntType result_type;
-
- /**
- * Constructs a @c uniform_smallint. @c min and @c max are the
- * lower and upper bounds of the output range, respectively.
- */
- explicit uniform_smallint(IntType min_arg = 0, IntType max_arg = 9)
- : _min(min_arg), _max(max_arg)
- {
-#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
- // MSVC fails BOOST_STATIC_ASSERT with std::numeric_limits at class scope
- BOOST_STATIC_ASSERT(std::numeric_limits<IntType>::is_integer);
-#endif
- }
-
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _min; }
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _max; }
- void reset() { }
-
- template<class Engine>
- result_type operator()(Engine& eng)
- {
- typedef typename Engine::result_type base_result;
- base_result _range = static_cast<base_result>(_max-_min)+1;
- base_result _factor = 1;
+ typedef IntType input_type;
+ typedef IntType result_type;
+
+ class param_type
+ {
+ public:
+
+ typedef uniform_smallint distribution_type;
+
+ /** constructs the parameters of a @c uniform_smallint distribution. */
+ param_type(IntType min_arg = 0, IntType max_arg = 9)
+ : _min(min_arg), _max(max_arg)
+ {
+ BOOST_ASSERT(_min <= _max);
+ }
+
+ /** Returns the minimum value. */
+ IntType a() const { return _min; }
+ /** Returns the maximum value. */
+ IntType b() const { return _max; }
+
+
+ /** Writes the parameters to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ {
+ os << parm._min << " " << parm._max;
+ return os;
+ }
- // LCGs get bad when only taking the low bits.
- // (probably put this logic into a partial template specialization)
- // Check how many low bits we can ignore before we get too much
- // quantization error.
- base_result r_base = (eng.max)() - (eng.min)();
- if(r_base == (std::numeric_limits<base_result>::max)()) {
- _factor = 2;
- r_base /= 2;
+ /** Reads the parameters from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ {
+ is >> parm._min >> std::ws >> parm._max;
+ return is;
+ }
+
+ /** Returns true if the two sets of parameters are equal. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._min == rhs._min && lhs._max == rhs._max; }
+
+ /** Returns true if the two sets of parameters are different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ IntType _min;
+ IntType _max;
+ };
+
+ /**
+ * Constructs a @c uniform_smallint. @c min and @c max are the
+ * lower and upper bounds of the output range, respectively.
+ */
+ explicit uniform_smallint(IntType min_arg = 0, IntType max_arg = 9)
+ : _min(min_arg), _max(max_arg) {}
+
+ /**
+ * Constructs a @c uniform_smallint from its parameters.
+ */
+ explicit uniform_smallint(const param_type& parm)
+ : _min(parm.a()), _max(parm.b()) {}
+
+ /** Returns the minimum value of the distribution. */
+ result_type a() const { return _min; }
+ /** Returns the maximum value of the distribution. */
+ result_type b() const { return _max; }
+ /** Returns the minimum value of the distribution. */
+ result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _min; }
+ /** Returns the maximum value of the distribution. */
+ result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _max; }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_min, _max); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _min = parm.a();
+ _max = parm.b();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /** Returns a value uniformly distributed in the range [min(), max()]. */
+ template<class Engine>
+ result_type operator()(Engine& eng) const
+ {
+ typedef typename Engine::result_type base_result;
+ return generate(eng, boost::is_integral<base_result>());
}
- r_base += 1;
- if(r_base % _range == 0) {
- // No quantization effects, good
- _factor = r_base / _range;
- } else {
- // carefully avoid overflow; pessimizing here
- for( ; r_base/_range/32 >= _range; _factor *= 2)
- r_base /= 2;
+
+ /** Returns a value uniformly distributed in the range [param.a(), param.b()]. */
+ template<class Engine>
+ result_type operator()(Engine& eng, const param_type& parm) const
+ { return uniform_smallint(parm)(eng); }
+
+ /** Writes the distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, uniform_smallint, ud)
+ {
+ os << ud._min << " " << ud._max;
+ return os;
+ }
+
+ /** Reads the distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, uniform_smallint, ud)
+ {
+ is >> ud._min >> std::ws >> ud._max;
+ return is;
}
- return static_cast<result_type>(((eng() - (eng.min)()) / _factor) % _range + _min);
- }
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const uniform_smallint& ud)
- {
- os << ud._min << " " << ud._max;
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, uniform_smallint& ud)
- {
- is >> std::ws >> ud._min >> std::ws >> ud._max;
- return is;
- }
-#endif
+ /**
+ * Returns true if the two distributions will produce identical
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(uniform_smallint, lhs, rhs)
+ { return lhs._min == rhs._min && lhs._max == rhs._max; }
+
+ /**
+ * Returns true if the two distributions may produce different
+ * sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(uniform_smallint)
private:
+
+ // \cond show_private
+ template<class Engine>
+ result_type generate(Engine& eng, boost::mpl::true_) const
+ {
+ // equivalent to (eng() - eng.min()) % (_max - _min + 1) + _min,
+ // but guarantees no overflow.
+ typedef typename Engine::result_type base_result;
+ typedef typename boost::make_unsigned<base_result>::type base_unsigned;
+ typedef typename boost::make_unsigned<result_type>::type range_type;
+ range_type range = random::detail::subtract<result_type>()(_max, _min);
+ base_unsigned base_range =
+ random::detail::subtract<result_type>()((eng.max)(), (eng.min)());
+ base_unsigned val =
+ random::detail::subtract<base_result>()(eng(), (eng.min)());
+ if(range >= base_range) {
+ return boost::random::detail::add<range_type, result_type>()(
+ static_cast<range_type>(val), _min);
+ } else {
+ base_unsigned modulus = static_cast<base_unsigned>(range) + 1;
+ return boost::random::detail::add<range_type, result_type>()(
+ static_cast<range_type>(val % modulus), _min);
+ }
+ }
+
+ template<class Engine>
+ result_type generate(Engine& eng, boost::mpl::false_) const
+ {
+ typedef typename Engine::result_type base_result;
+ typedef typename boost::make_unsigned<result_type>::type range_type;
+ range_type range = random::detail::subtract<result_type>()(_max, _min);
+ base_result val = boost::uniform_01<base_result>()(eng);
+ // what is the worst that can possibly happen here?
+ // base_result may not be able to represent all the values in [0, range]
+ // exactly. If this happens, it will cause round off error and we
+ // won't be able to produce all the values in the range. We don't
+ // care about this because the user has already told us not to by
+ // using uniform_smallint. However, we do need to be careful
+ // to clamp the result, or floating point rounding can produce
+ // an out of range result.
+ range_type offset = static_cast<range_type>(val * (static_cast<base_result>(range) + 1));
+ if(offset > range) return _max;
+ return boost::random::detail::add<range_type, result_type>()(offset , _min);
+ }
+ // \endcond
- result_type _min;
- result_type _max;
+ result_type _min;
+ result_type _max;
};
+} // namespace random
+
+using random::uniform_smallint;
+
} // namespace boost
#endif // BOOST_RANDOM_UNIFORM_SMALLINT_HPP
/* boost random/variate_generator.hpp header file
*
* Copyright Jens Maurer 2002
+ * Copyright Steven Watanabe 2011
* 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)
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: variate_generator.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: variate_generator.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
*/
#ifndef BOOST_RANDOM_RANDOM_GENERATOR_HPP
#define BOOST_RANDOM_RANDOM_GENERATOR_HPP
-#include <boost/config.hpp>
-
-// implementation details
-#include <boost/detail/workaround.hpp>
-#include <boost/random/uniform_01.hpp>
-#include <boost/random/detail/pass_through_engine.hpp>
-#include <boost/random/detail/uniform_int_float.hpp>
#include <boost/random/detail/ptr_helper.hpp>
-// Borland C++ 5.6.0 has problems using its numeric_limits traits as
-// template parameters
-#if BOOST_WORKAROUND(__BORLANDC__, <= 0x564)
-#include <boost/type_traits/is_integral.hpp>
-#endif
-
#include <boost/random/detail/disable_warnings.hpp>
namespace boost {
/// \cond hide_private_members
namespace random {
-namespace detail {
-
-template<bool have_int, bool want_int>
-struct engine_helper;
-
-// for consistency, always have two levels of decorations
-template<>
-struct engine_helper<true, true>
-{
- template<class Engine, class DistInputType>
- struct impl
- {
- typedef pass_through_engine<Engine> type;
- };
-};
-
-template<>
-struct engine_helper<false, false>
-{
- template<class Engine, class DistInputType>
- struct impl
- {
- typedef uniform_01<Engine, DistInputType> type;
- };
-};
-
-template<>
-struct engine_helper<true, false>
-{
- template<class Engine, class DistInputType>
- struct impl
- {
- typedef uniform_01<Engine, DistInputType> type;
- };
-};
-
-template<>
-struct engine_helper<false, true>
-{
- template<class Engine, class DistInputType>
- struct impl
- {
- typedef uniform_int_float<Engine, unsigned long> type;
- };
-};
-
-} // namespace detail
-} // namespace random
///\endcond
* Boost.Random provides a vast choice of \generators as well
* as \distributions.
*
- * Instantations of class template @c variate_generator model
- * a \number_generator.
- *
* The argument for the template parameter Engine shall be of
* the form U, U&, or U*, where U models a
* \uniform_random_number_generator. Then, the member
class variate_generator
{
private:
- typedef random::detail::pass_through_engine<Engine> decorated_engine;
-
+ typedef boost::random::detail::ptr_helper<Engine> helper_type;
public:
- typedef typename decorated_engine::base_type engine_value_type;
- typedef Engine engine_type;
- typedef Distribution distribution_type;
- typedef typename Distribution::result_type result_type;
-
- /**
- * Constructs a @c variate_generator object with the associated
- * \uniform_random_number_generator eng and the associated
- * \random_distribution d.
- *
- * Throws: If and what the copy constructor of Engine or
- * Distribution throws.
- */
- variate_generator(Engine e, Distribution d)
- : _eng(decorated_engine(e)), _dist(d) { }
-
- /**
- * Returns: distribution()(e)
- *
- * Notes: The sequence of numbers produced by the
- * \uniform_random_number_generator e, s<sub>e</sub>, is
- * obtained from the sequence of numbers produced by the
- * associated \uniform_random_number_generator eng, s<sub>eng</sub>,
- * as follows: Consider the values of @c numeric_limits<T>::is_integer
- * for @c T both @c Distribution::input_type and
- * @c engine_value_type::result_type. If the values for both types are
- * true, then se is identical to s<sub>eng</sub>. Otherwise, if the
- * values for both types are false, then the numbers in s<sub>eng</sub>
- * are divided by engine().max()-engine().min() to obtain the numbers
- * in s<sub>e</sub>. Otherwise, if the value for
- * @c engine_value_type::result_type is true and the value for
- * @c Distribution::input_type is false, then the numbers in s<sub>eng</sub>
- * are divided by engine().max()-engine().min()+1 to obtain the numbers in
- * s<sub>e</sub>. Otherwise, the mapping from s<sub>eng</sub> to
- * s<sub>e</sub> is implementation-defined. In all cases, an
- * implicit conversion from @c engine_value_type::result_type to
- * @c Distribution::input_type is performed. If such a conversion does
- * not exist, the program is ill-formed.
- */
- result_type operator()() { return _dist(_eng); }
- /**
- * Returns: distribution()(e, value).
- * For the semantics of e, see the description of operator()().
- */
- template<class T>
- result_type operator()(T value) { return _dist(_eng, value); }
-
- /**
- * Returns: A reference to the associated uniform random number generator.
- */
- engine_value_type& engine() { return _eng.base().base(); }
- /**
- * Returns: A reference to the associated uniform random number generator.
- */
- const engine_value_type& engine() const { return _eng.base().base(); }
-
- /**
- * Returns: A reference to the associated random distribution.
- */
- distribution_type& distribution() { return _dist; }
- /**
- * Returns: A reference to the associated random distribution.
- */
- const distribution_type& distribution() const { return _dist; }
-
- /**
- * Precondition: distribution().min() is well-formed
- *
- * Returns: distribution().min()
- */
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (distribution().min)(); }
- /**
- * Precondition: distribution().max() is well-formed
- *
- * Returns: distribution().max()
- */
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (distribution().max)(); }
+ typedef typename helper_type::value_type engine_value_type;
+ typedef Engine engine_type;
+ typedef Distribution distribution_type;
+ typedef typename Distribution::result_type result_type;
+
+ /**
+ * Constructs a @c variate_generator object with the associated
+ * \uniform_random_number_generator eng and the associated
+ * \random_distribution d.
+ *
+ * Throws: If and what the copy constructor of Engine or
+ * Distribution throws.
+ */
+ variate_generator(Engine e, Distribution d)
+ : _eng(e), _dist(d) { }
+
+ /** Returns: distribution()(engine()) */
+ result_type operator()() { return _dist(engine()); }
+ /**
+ * Returns: distribution()(engine(), value).
+ */
+ template<class T>
+ result_type operator()(const T& value) { return _dist(engine(), value); }
+
+ /**
+ * Returns: A reference to the associated uniform random number generator.
+ */
+ engine_value_type& engine() { return helper_type::ref(_eng); }
+ /**
+ * Returns: A reference to the associated uniform random number generator.
+ */
+ const engine_value_type& engine() const { return helper_type::ref(_eng); }
+
+ /** Returns: A reference to the associated \random_distribution. */
+ distribution_type& distribution() { return _dist; }
+ /**
+ * Returns: A reference to the associated random distribution.
+ */
+ const distribution_type& distribution() const { return _dist; }
+
+ /**
+ * Precondition: distribution().min() is well-formed
+ *
+ * Returns: distribution().min()
+ */
+ result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (distribution().min)(); }
+ /**
+ * Precondition: distribution().max() is well-formed
+ *
+ * Returns: distribution().max()
+ */
+ result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (distribution().max)(); }
private:
-#if BOOST_WORKAROUND(__BORLANDC__, <= 0x564)
- typedef typename random::detail::engine_helper<
- ::boost::is_integral<typename decorated_engine::result_type>::value,
- ::boost::is_integral<typename Distribution::input_type>::value
- >::BOOST_NESTED_TEMPLATE impl<decorated_engine, typename Distribution::input_type>::type internal_engine_type;
-#else
- enum {
- have_int = std::numeric_limits<typename decorated_engine::result_type>::is_integer,
- want_int = std::numeric_limits<typename Distribution::input_type>::is_integer
- };
- typedef typename random::detail::engine_helper<have_int, want_int>::BOOST_NESTED_TEMPLATE impl<decorated_engine, typename Distribution::input_type>::type internal_engine_type;
-#endif
-
- internal_engine_type _eng;
- distribution_type _dist;
+ Engine _eng;
+ distribution_type _dist;
};
+} // namespace random
+
+using random::variate_generator;
+
} // namespace boost
-#include <boost/random/detail/disable_warnings.hpp>
+#include <boost/random/detail/enable_warnings.hpp>
#endif // BOOST_RANDOM_RANDOM_GENERATOR_HPP
--- /dev/null
+/* boost random/weibull_distribution.hpp header file
+ *
+ * Copyright Steven Watanabe 2010
+ * 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)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id: weibull_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
+ */
+
+#ifndef BOOST_RANDOM_WEIBULL_DISTRIBUTION_HPP
+#define BOOST_RANDOM_WEIBULL_DISTRIBUTION_HPP
+
+#include <boost/config/no_tr1/cmath.hpp>
+#include <iosfwd>
+#include <istream>
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
+#include <boost/random/detail/operators.hpp>
+#include <boost/random/uniform_01.hpp>
+
+namespace boost {
+namespace random {
+
+/**
+ * The Weibull distribution is a real valued distribution with two
+ * parameters a and b, producing values >= 0.
+ *
+ * It has \f$\displaystyle p(x) = \frac{a}{b}\left(\frac{x}{b}\right)^{a-1}e^{-\left(\frac{x}{b}\right)^a}\f$.
+ */
+template<class RealType = double>
+class weibull_distribution {
+public:
+ typedef RealType result_type;
+ typedef RealType input_type;
+
+ class param_type {
+ public:
+ typedef weibull_distribution distribution_type;
+
+ /**
+ * Constructs a @c param_type from the "a" and "b" parameters
+ * of the distribution.
+ *
+ * Requires: a > 0 && b > 0
+ */
+ explicit param_type(RealType a_arg = 1.0, RealType b_arg = 1.0)
+ : _a(a_arg), _b(b_arg)
+ {}
+
+ /** Returns the "a" parameter of the distribtuion. */
+ RealType a() const { return _a; }
+ /** Returns the "b" parameter of the distribution. */
+ RealType b() const { return _b; }
+
+ /** Writes a @c param_type to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, param_type, parm)
+ { os << parm._a << ' ' << parm._b; return os; }
+
+ /** Reads a @c param_type from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, param_type, parm)
+ { is >> parm._a >> std::ws >> parm._b; return is; }
+
+ /** Returns true if the two sets of parameters are the same. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(param_type, lhs, rhs)
+ { return lhs._a == rhs._a && lhs._b == rhs._b; }
+
+ /** Returns true if the two sets of parameters are the different. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(param_type)
+
+ private:
+ RealType _a;
+ RealType _b;
+ };
+
+ /**
+ * Constructs a @c weibull_distribution from its "a" and "b" parameters.
+ *
+ * Requires: a > 0 && b > 0
+ */
+ explicit weibull_distribution(RealType a_arg = 1.0, RealType b_arg = 1.0)
+ : _a(a_arg), _b(b_arg)
+ {}
+ /** Constructs a @c weibull_distribution from its parameters. */
+ explicit weibull_distribution(const param_type& parm)
+ : _a(parm.a()), _b(parm.b())
+ {}
+
+ /**
+ * Returns a random variate distributed according to the
+ * @c weibull_distribution.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng) const
+ {
+ using std::pow;
+ using std::log;
+ return _b*pow(-log(1 - uniform_01<RealType>()(urng)), 1/_a);
+ }
+
+ /**
+ * Returns a random variate distributed accordint to the Weibull
+ * distribution with parameters specified by @c param.
+ */
+ template<class URNG>
+ RealType operator()(URNG& urng, const param_type& parm) const
+ {
+ return weibull_distribution(parm)(urng);
+ }
+
+ /** Returns the "a" parameter of the distribution. */
+ RealType a() const { return _a; }
+ /** Returns the "b" parameter of the distribution. */
+ RealType b() const { return _b; }
+
+ /** Returns the smallest value that the distribution can produce. */
+ RealType min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return 0; }
+ /** Returns the largest value that the distribution can produce. */
+ RealType max BOOST_PREVENT_MACRO_SUBSTITUTION () const
+ { return std::numeric_limits<RealType>::infinity(); }
+
+ /** Returns the parameters of the distribution. */
+ param_type param() const { return param_type(_a, _b); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm)
+ {
+ _a = parm.a();
+ _b = parm.b();
+ }
+
+ /**
+ * Effects: Subsequent uses of the distribution do not depend
+ * on values produced by any engine prior to invoking reset.
+ */
+ void reset() { }
+
+ /** Writes a @c weibull_distribution to a @c std::ostream. */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, weibull_distribution, wd)
+ {
+ os << wd.param();
+ return os;
+ }
+
+ /** Reads a @c weibull_distribution from a @c std::istream. */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, weibull_distribution, wd)
+ {
+ param_type parm;
+ if(is >> parm) {
+ wd.param(parm);
+ }
+ return is;
+ }
+
+ /**
+ * Returns true if the two instances of @c weibull_distribution will
+ * return identical sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(weibull_distribution, lhs, rhs)
+ { return lhs._a == rhs._a && lhs._b == rhs._b; }
+
+ /**
+ * Returns true if the two instances of @c weibull_distribution will
+ * return different sequences of values given equal generators.
+ */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(weibull_distribution)
+
+private:
+ RealType _a;
+ RealType _b;
+};
+
+} // namespace random
+} // namespace boost
+
+#endif // BOOST_RANDOM_WEIBULL_DISTRIBUTION_HPP
*
* See http://www.boost.org for most recent version including documentation.
*
- * $Id: xor_combine.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ * $Id: xor_combine.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
*
*/
#ifndef BOOST_RANDOM_XOR_COMBINE_HPP
#define BOOST_RANDOM_XOR_COMBINE_HPP
-#include <iostream>
+#include <istream>
+#include <iosfwd>
#include <cassert>
#include <algorithm> // for std::min and std::max
#include <boost/config.hpp>
#include <boost/limits.hpp>
-#include <boost/static_assert.hpp>
#include <boost/cstdint.hpp> // uint32_t
#include <boost/random/detail/config.hpp>
-
+#include <boost/random/detail/seed.hpp>
+#include <boost/random/detail/seed_impl.hpp>
namespace boost {
namespace random {
-/// \cond hide_private_members
-#ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
- #define BOOST_RANDOM_VAL_TYPE typename URNG1::result_type
-#else
- #define BOOST_RANDOM_VAL_TYPE uint32_t
-#endif
-/// \endcond
-
/**
- * Instantiations of @c xor_combine model a \pseudo_random_number_generator.
- * To produce its output it invokes each of the base generators, shifts
- * their results and xors them together.
+ * Instantiations of @c xor_combine_engine model a
+ * \pseudo_random_number_generator. To produce its output it
+ * invokes each of the base generators, shifts their results
+ * and xors them together.
*/
-template<class URNG1, int s1, class URNG2, int s2
-#ifndef BOOST_RANDOM_DOXYGEN
-, BOOST_RANDOM_VAL_TYPE val = 0
-#endif
->
-class xor_combine
+template<class URNG1, int s1, class URNG2, int s2>
+class xor_combine_engine
{
public:
- typedef URNG1 base1_type;
- typedef URNG2 base2_type;
- typedef typename base1_type::result_type result_type;
-
- BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
- BOOST_STATIC_CONSTANT(int, shift1 = s1);
- BOOST_STATIC_CONSTANT(int, shift2 = s2);
-
- /**
- * Constructors a @c xor_combine by default constructing
- * both base generators.
- */
- xor_combine() : _rng1(), _rng2()
- { }
- /**
- * Constructs a @c xor_combine by copying two base generators.
- */
- xor_combine(const base1_type & rng1, const base2_type & rng2)
- : _rng1(rng1), _rng2(rng2) { }
- /**
- * Constructs a @c xor_combine, seeding both base generators
- * with @c v.
- */
- xor_combine(const result_type & v)
- : _rng1(v), _rng2(v) { }
- /**
- * Constructs a @c xor_combine, seeding both base generators
- * with values from the iterator range [first, last) and changes
- * first to point to the element after the last one used. If there
- * are not enough elements in the range to seed both generators,
- * throws @c std::invalid_argument.
- */
- template<class It> xor_combine(It& first, It last)
- : _rng1(first, last), _rng2( /* advanced by other call */ first, last) { }
- /**
- * Calls @c seed() for both base generators.
- */
- void seed() { _rng1.seed(); _rng2.seed(); }
- /**
- * @c seeds both base generators with @c v.
- */
- void seed(const result_type & v) { _rng1.seed(v); _rng2.seed(v); }
- /**
- * seeds both base generators with values from the iterator
- * range [first, last) and changes first to point to the element
- * after the last one used. If there are not enough elements in
- * the range to seed both generators, throws @c std::invalid_argument.
- */
- template<class It> void seed(It& first, It last)
- {
- _rng1.seed(first, last);
- _rng2.seed(first, last);
- }
-
- /** Returns the first base generator. */
- const base1_type& base1() { return _rng1; }
- /** Returns the second base generator. */
- const base2_type& base2() { return _rng2; }
-
- /** Returns the next value of the generator. */
- result_type operator()()
- {
- // MSVC fails BOOST_STATIC_ASSERT with std::numeric_limits at class scope
-#if !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) && !(defined(BOOST_MSVC) && BOOST_MSVC <= 1300)
- BOOST_STATIC_ASSERT(std::numeric_limits<typename base1_type::result_type>::is_integer);
- BOOST_STATIC_ASSERT(std::numeric_limits<typename base2_type::result_type>::is_integer);
- BOOST_STATIC_ASSERT(std::numeric_limits<typename base1_type::result_type>::digits >= std::numeric_limits<typename base2_type::result_type>::digits);
-#endif
- return (_rng1() << s1) ^ (_rng2() << s2);
- }
-
- /**
- * Returns the smallest value that the generator can produce.
- */
- result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return std::min BOOST_PREVENT_MACRO_SUBSTITUTION((_rng1.min)(), (_rng2.min)()); }
- /**
- * Returns the largest value that the generator can produce.
- */
- result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return std::max BOOST_PREVENT_MACRO_SUBSTITUTION((_rng1.min)(), (_rng2.max)()); }
- static bool validation(result_type x) { return val == x; }
-
-#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
-
-#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
- template<class CharT, class Traits>
- friend std::basic_ostream<CharT,Traits>&
- operator<<(std::basic_ostream<CharT,Traits>& os, const xor_combine& s)
- {
- os << s._rng1 << " " << s._rng2 << " ";
- return os;
- }
-
- template<class CharT, class Traits>
- friend std::basic_istream<CharT,Traits>&
- operator>>(std::basic_istream<CharT,Traits>& is, xor_combine& s)
- {
- is >> s._rng1 >> std::ws >> s._rng2 >> std::ws;
- return is;
- }
-#endif
-
- friend bool operator==(const xor_combine& x, const xor_combine& y)
- { return x._rng1 == y._rng1 && x._rng2 == y._rng2; }
- friend bool operator!=(const xor_combine& x, const xor_combine& y)
- { return !(x == y); }
-#else
- // Use a member function; Streamable concept not supported.
- bool operator==(const xor_combine& rhs) const
- { return _rng1 == rhs._rng1 && _rng2 == rhs._rng2; }
- bool operator!=(const xor_combine& rhs) const
- { return !(*this == rhs); }
-#endif
+ typedef URNG1 base1_type;
+ typedef URNG2 base2_type;
+ typedef typename base1_type::result_type result_type;
+
+ BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
+ BOOST_STATIC_CONSTANT(int, shift1 = s1);
+ BOOST_STATIC_CONSTANT(int, shift2 = s2);
+
+ /**
+ * Constructors a @c xor_combine_engine by default constructing
+ * both base generators.
+ */
+ xor_combine_engine() : _rng1(), _rng2() { }
+
+ /** Constructs a @c xor_combine by copying two base generators. */
+ xor_combine_engine(const base1_type & rng1, const base2_type & rng2)
+ : _rng1(rng1), _rng2(rng2) { }
+
+ /**
+ * Constructs a @c xor_combine_engine, seeding both base generators
+ * with @c v.
+ *
+ * @xmlwarning
+ * The exact algorithm used by this function may change in the future.
+ * @endxmlwarning
+ */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_CONSTRUCTOR(xor_combine_engine,
+ result_type, v)
+ { seed(v); }
+
+ /**
+ * Constructs a @c xor_combine_engine, seeding both base generators
+ * with values produced by @c seq.
+ */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_CONSTRUCTOR(xor_combine_engine,
+ SeedSeq, seq)
+ { seed(seq); }
+
+ /**
+ * Constructs a @c xor_combine_engine, seeding both base generators
+ * with values from the iterator range [first, last) and changes
+ * first to point to the element after the last one used. If there
+ * are not enough elements in the range to seed both generators,
+ * throws @c std::invalid_argument.
+ */
+ template<class It> xor_combine_engine(It& first, It last)
+ : _rng1(first, last), _rng2( /* advanced by other call */ first, last) { }
+
+ /** Calls @c seed() for both base generators. */
+ void seed() { _rng1.seed(); _rng2.seed(); }
+
+ /** @c seeds both base generators with @c v. */
+ BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(xor_combine_engine, result_type, v)
+ { _rng1.seed(v); _rng2.seed(v); }
+
+ /** @c seeds both base generators with values produced by @c seq. */
+ BOOST_RANDOM_DETAIL_SEED_SEQ_SEED(xor_combine_engine, SeedSeq, seq)
+ { _rng1.seed(seq); _rng2.seed(seq); }
+
+ /**
+ * seeds both base generators with values from the iterator
+ * range [first, last) and changes first to point to the element
+ * after the last one used. If there are not enough elements in
+ * the range to seed both generators, throws @c std::invalid_argument.
+ */
+ template<class It> void seed(It& first, It last)
+ {
+ _rng1.seed(first, last);
+ _rng2.seed(first, last);
+ }
+
+ /** Returns the first base generator. */
+ const base1_type& base1() const { return _rng1; }
+
+ /** Returns the second base generator. */
+ const base2_type& base2() const { return _rng2; }
+
+ /** Returns the next value of the generator. */
+ result_type operator()()
+ {
+ return (_rng1() << s1) ^ (_rng2() << s2);
+ }
+
+ /** Fills a range with random values */
+ template<class Iter>
+ void generate(Iter first, Iter last)
+ { detail::generate_from_int(*this, first, last); }
+
+ /** Advances the state of the generator by @c z. */
+ void discard(boost::uintmax_t z)
+ {
+ _rng1.discard(z);
+ _rng2.discard(z);
+ }
+
+ /** Returns the smallest value that the generator can produce. */
+ static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return (std::min)((URNG1::min)(), (URNG2::min)()); }
+ /** Returns the largest value that the generator can produce. */
+ static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () { return (std::max)((URNG1::min)(), (URNG2::max)()); }
+
+ /**
+ * Writes the textual representation of the generator to a @c std::ostream.
+ */
+ BOOST_RANDOM_DETAIL_OSTREAM_OPERATOR(os, xor_combine_engine, s)
+ {
+ os << s._rng1 << ' ' << s._rng2;
+ return os;
+ }
+
+ /**
+ * Reads the textual representation of the generator from a @c std::istream.
+ */
+ BOOST_RANDOM_DETAIL_ISTREAM_OPERATOR(is, xor_combine_engine, s)
+ {
+ is >> s._rng1 >> std::ws >> s._rng2;
+ return is;
+ }
+
+ /** Returns true if the two generators will produce identical sequences. */
+ BOOST_RANDOM_DETAIL_EQUALITY_OPERATOR(xor_combine_engine, x, y)
+ { return x._rng1 == y._rng1 && x._rng2 == y._rng2; }
+
+ /** Returns true if the two generators will produce different sequences. */
+ BOOST_RANDOM_DETAIL_INEQUALITY_OPERATOR(xor_combine_engine)
private:
- base1_type _rng1;
- base2_type _rng2;
+ base1_type _rng1;
+ base2_type _rng2;
};
#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
// A definition is required even for integral static constants
-template<class URNG1, int s1, class URNG2, int s2, BOOST_RANDOM_VAL_TYPE val>
-const bool xor_combine<URNG1, s1, URNG2, s2, val>::has_fixed_range;
-template<class URNG1, int s1, class URNG2, int s2, BOOST_RANDOM_VAL_TYPE val>
-const int xor_combine<URNG1, s1, URNG2, s2, val>::shift1;
-template<class URNG1, int s1, class URNG2, int s2, BOOST_RANDOM_VAL_TYPE val>
-const int xor_combine<URNG1, s1, URNG2, s2, val>::shift2;
+template<class URNG1, int s1, class URNG2, int s2>
+const bool xor_combine_engine<URNG1, s1, URNG2, s2>::has_fixed_range;
+template<class URNG1, int s1, class URNG2, int s2>
+const int xor_combine_engine<URNG1, s1, URNG2, s2>::shift1;
+template<class URNG1, int s1, class URNG2, int s2>
+const int xor_combine_engine<URNG1, s1, URNG2, s2>::shift2;
#endif
-#undef BOOST_RANDOM_VAL_TYPE
+/// \cond show_private
+
+/** Provided for backwards compatibility. */
+template<class URNG1, int s1, class URNG2, int s2,
+ typename URNG1::result_type v = 0>
+class xor_combine : public xor_combine_engine<URNG1, s1, URNG2, s2>
+{
+ typedef xor_combine_engine<URNG1, s1, URNG2, s2> base_type;
+public:
+ typedef typename base_type::result_type result_type;
+ xor_combine() {}
+ xor_combine(result_type val) : base_type(val) {}
+ template<class It>
+ xor_combine(It& first, It last) : base_type(first, last) {}
+ xor_combine(const URNG1 & rng1, const URNG2 & rng2)
+ : base_type(rng1, rng2) { }
+
+ result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (std::min)((this->base1().min)(), (this->base2().min)()); }
+ result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return (std::max)((this->base1().min)(), (this->base2().max)()); }
+};
+
+/// \endcond
} // namespace random
} // namespace boost
--- /dev/null
+// Boost.Range library
+//
+// Copyright Neil Groves 2009.
+// Use, modification and distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+#ifndef BOOST_RANGE_ALGORITHM_EQUAL_HPP_INCLUDED
+#define BOOST_RANGE_ALGORITHM_EQUAL_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/range/concepts.hpp>
+#include <iterator>
+
+namespace boost
+{
+ namespace range_detail
+ {
+ // An implementation of equality comparison that is optimized for iterator
+ // traversal categories less than RandomAccessTraversal.
+ template< class SinglePassTraversalReadableIterator1,
+ class SinglePassTraversalReadableIterator2,
+ class IteratorCategoryTag1,
+ class IteratorCategoryTag2 >
+ inline bool equal_impl( SinglePassTraversalReadableIterator1 first1,
+ SinglePassTraversalReadableIterator1 last1,
+ SinglePassTraversalReadableIterator2 first2,
+ SinglePassTraversalReadableIterator2 last2,
+ IteratorCategoryTag1,
+ IteratorCategoryTag2 )
+ {
+ while (true)
+ {
+ // If we have reached the end of the left range then this is
+ // the end of the loop. They are equal if and only if we have
+ // simultaneously reached the end of the right range.
+ if (first1 == last1)
+ return first2 == last2;
+
+ // If we have reached the end of the right range at this line
+ // it indicates that the right range is shorter than the left
+ // and hence the result is false.
+ if (first2 == last2)
+ return false;
+
+ // continue looping if and only if the values are equal
+ if (*first1 != *first2)
+ break;
+
+ ++first1;
+ ++first2;
+ }
+
+ // Reaching this line in the algorithm indicates that a value
+ // inequality has been detected.
+ return false;
+ }
+
+ template< class SinglePassTraversalReadableIterator1,
+ class SinglePassTraversalReadableIterator2,
+ class IteratorCategoryTag1,
+ class IteratorCategoryTag2,
+ class BinaryPredicate >
+ inline bool equal_impl( SinglePassTraversalReadableIterator1 first1,
+ SinglePassTraversalReadableIterator1 last1,
+ SinglePassTraversalReadableIterator2 first2,
+ SinglePassTraversalReadableIterator2 last2,
+ BinaryPredicate pred,
+ IteratorCategoryTag1,
+ IteratorCategoryTag2 )
+ {
+ while (true)
+ {
+ // If we have reached the end of the left range then this is
+ // the end of the loop. They are equal if and only if we have
+ // simultaneously reached the end of the right range.
+ if (first1 == last1)
+ return first2 == last2;
+
+ // If we have reached the end of the right range at this line
+ // it indicates that the right range is shorter than the left
+ // and hence the result is false.
+ if (first2 == last2)
+ return false;
+
+ // continue looping if and only if the values are equal
+ if (!pred(*first1, *first2))
+ break;
+
+ ++first1;
+ ++first2;
+ }
+
+ // Reaching this line in the algorithm indicates that a value
+ // inequality has been detected.
+ return false;
+ }
+
+ // An implementation of equality comparison that is optimized for
+ // random access iterators.
+ template< class RandomAccessTraversalReadableIterator1,
+ class RandomAccessTraversalReadableIterator2 >
+ inline bool equal_impl( RandomAccessTraversalReadableIterator1 first1,
+ RandomAccessTraversalReadableIterator1 last1,
+ RandomAccessTraversalReadableIterator2 first2,
+ RandomAccessTraversalReadableIterator2 last2,
+ std::random_access_iterator_tag,
+ std::random_access_iterator_tag )
+ {
+ return ((last1 - first1) == (last2 - first2))
+ && std::equal(first1, last1, first2);
+ }
+
+ template< class RandomAccessTraversalReadableIterator1,
+ class RandomAccessTraversalReadableIterator2,
+ class BinaryPredicate >
+ inline bool equal_impl( RandomAccessTraversalReadableIterator1 first1,
+ RandomAccessTraversalReadableIterator1 last1,
+ RandomAccessTraversalReadableIterator2 first2,
+ RandomAccessTraversalReadableIterator2 last2,
+ BinaryPredicate pred )
+ {
+ return ((last1 - first1) == (last2 - first2))
+ && std::equal(first1, last1, first2, pred);
+ }
+
+ template< class SinglePassTraversalReadableIterator1,
+ class SinglePassTraversalReadableIterator2 >
+ inline bool equal( SinglePassTraversalReadableIterator1 first1,
+ SinglePassTraversalReadableIterator1 last1,
+ SinglePassTraversalReadableIterator2 first2,
+ SinglePassTraversalReadableIterator2 last2 )
+ {
+ BOOST_DEDUCED_TYPENAME std::iterator_traits< SinglePassTraversalReadableIterator1 >::iterator_category tag1;
+ BOOST_DEDUCED_TYPENAME std::iterator_traits< SinglePassTraversalReadableIterator2 >::iterator_category tag2;
+
+ return equal_impl(first1, last1, first2, last2, tag1, tag2);
+ }
+
+ template< class SinglePassTraversalReadableIterator1,
+ class SinglePassTraversalReadableIterator2,
+ class BinaryPredicate >
+ inline bool equal( SinglePassTraversalReadableIterator1 first1,
+ SinglePassTraversalReadableIterator1 last1,
+ SinglePassTraversalReadableIterator2 first2,
+ SinglePassTraversalReadableIterator2 last2,
+ BinaryPredicate pred )
+ {
+ BOOST_DEDUCED_TYPENAME std::iterator_traits< SinglePassTraversalReadableIterator1 >::iterator_category tag1;
+ BOOST_DEDUCED_TYPENAME std::iterator_traits< SinglePassTraversalReadableIterator2 >::iterator_category tag2;
+
+ return equal_impl(first1, last1, first2, last2, pred, tag1, tag2);
+ }
+
+ } // namespace range_detail
+
+ namespace range
+ {
+
+ /// \brief template function equal
+ ///
+ /// range-based version of the equal std algorithm
+ ///
+ /// \pre SinglePassRange1 is a model of the SinglePassRangeConcept
+ /// \pre SinglePassRange2 is a model of the SinglePassRangeConcept
+ /// \pre BinaryPredicate is a model of the BinaryPredicateConcept
+ template< class SinglePassRange1, class SinglePassRange2 >
+ inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2 )
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+
+ return ::boost::range_detail::equal(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2) );
+ }
+
+ /// \overload
+ template< class SinglePassRange1, class SinglePassRange2, class BinaryPredicate >
+ inline bool equal( const SinglePassRange1& rng1, const SinglePassRange2& rng2,
+ BinaryPredicate pred )
+ {
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange1> ));
+ BOOST_RANGE_CONCEPT_ASSERT(( SinglePassRangeConcept<const SinglePassRange2> ));
+
+ return ::boost::range_detail::equal(
+ ::boost::begin(rng1), ::boost::end(rng1),
+ ::boost::begin(rng2), ::boost::end(rng2),
+ pred);
+ }
+
+ } // namespace range
+ using ::boost::range::equal;
+} // namespace boost
+
+#endif // include guard
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_BEGIN_HPP
+#define BOOST_RANGE_BEGIN_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+#include <boost/range/detail/begin.hpp>
+#else
+
+#include <boost/range/iterator.hpp>
+
+namespace boost
+{
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+namespace range_detail
+{
+#endif
+
+ //////////////////////////////////////////////////////////////////////
+ // primary template
+ //////////////////////////////////////////////////////////////////////
+
+ template< typename C >
+ inline BOOST_DEDUCED_TYPENAME range_iterator<C>::type
+ range_begin( C& c )
+ {
+ //
+ // If you get a compile-error here, it is most likely because
+ // you have not implemented range_begin() properly in
+ // the namespace of C
+ //
+ return c.begin();
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ inline Iterator range_begin( const std::pair<Iterator,Iterator>& p )
+ {
+ return p.first;
+ }
+
+ template< typename Iterator >
+ inline Iterator range_begin( std::pair<Iterator,Iterator>& p )
+ {
+ return p.first;
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////
+
+ //
+ // May this be discarded? Or is it needed for bad compilers?
+ //
+ template< typename T, std::size_t sz >
+ inline const T* range_begin( const T (&a)[sz] )
+ {
+ return a;
+ }
+
+ template< typename T, std::size_t sz >
+ inline T* range_begin( T (&a)[sz] )
+ {
+ return a;
+ }
+
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+} // namespace 'range_detail'
+#endif
+
+// Use a ADL namespace barrier to avoid ambiguity with other unqualified
+// calls. This is particularly important with C++0x encouraging
+// unqualified calls to begin/end.
+namespace range_adl_barrier
+{
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type begin( T& r )
+{
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+ using namespace range_detail;
+#endif
+ return range_begin( r );
+}
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( const T& r )
+{
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+ using namespace range_detail;
+#endif
+ return range_begin( r );
+}
+
+ } // namespace range_adl_barrier
+} // namespace boost
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+namespace boost
+{
+ namespace range_adl_barrier
+ {
+ template< class T >
+ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
+ const_begin( const T& r )
+ {
+ return boost::range_adl_barrier::begin( r );
+ }
+ } // namespace range_adl_barrier
+
+ using namespace range_adl_barrier;
+} // namespace boost
+
+#endif
+
--- /dev/null
+// Boost.Range library concept checks
+//
+// Copyright Neil Groves 2009. Use, modification and distribution
+// are subject to 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)
+//
+// Copyright Daniel Walker 2006. Use, modification and distribution
+// are subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_CONCEPTS_HPP
+#define BOOST_RANGE_CONCEPTS_HPP
+
+#include <boost/concept_check.hpp>
+#include <boost/iterator/iterator_concepts.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/value_type.hpp>
+#include <boost/range/detail/misc_concept.hpp>
+
+/*!
+ * \file
+ * \brief Concept checks for the Boost Range library.
+ *
+ * The structures in this file may be used in conjunction with the
+ * Boost Concept Check library to insure that the type of a function
+ * parameter is compatible with a range concept. If not, a meaningful
+ * compile time error is generated. Checks are provided for the range
+ * concepts related to iterator traversal categories. For example, the
+ * following line checks that the type T models the ForwardRange
+ * concept.
+ *
+ * \code
+ * BOOST_CONCEPT_ASSERT((ForwardRangeConcept<T>));
+ * \endcode
+ *
+ * A different concept check is required to ensure writeable value
+ * access. For example to check for a ForwardRange that can be written
+ * to, the following code is required.
+ *
+ * \code
+ * BOOST_CONCEPT_ASSERT((WriteableForwardRangeConcept<T>));
+ * \endcode
+ *
+ * \see http://www.boost.org/libs/range/doc/range.html for details
+ * about range concepts.
+ * \see http://www.boost.org/libs/iterator/doc/iterator_concepts.html
+ * for details about iterator concepts.
+ * \see http://www.boost.org/libs/concept_check/concept_check.htm for
+ * details about concept checks.
+ */
+
+namespace boost {
+
+ namespace range_detail {
+
+#ifndef BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+
+// List broken compiler versions here:
+ #ifdef __GNUC__
+ // GNUC 4.2 has strange issues correctly detecting compliance with the Concepts
+ // hence the least disruptive approach is to turn-off the concept checking for
+ // this version of the compiler.
+ #if __GNUC__ == 4 && __GNUC_MINOR__ == 2
+ #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0
+ #endif
+ #endif
+
+ #ifdef __BORLANDC__
+ #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0
+ #endif
+
+ #ifdef __PATHCC__
+ #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0
+ #endif
+
+// Default to using the concept asserts unless we have defined it off
+// during the search for black listed compilers.
+ #ifndef BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 1
+ #endif
+
+#endif
+
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x )
+#else
+ #define BOOST_RANGE_CONCEPT_ASSERT( x )
+#endif
+
+ // Rationale for the inclusion of redefined iterator concept
+ // classes:
+ //
+ // The Range algorithms often do not require that the iterators are
+ // Assignable or default constructable, but the correct standard
+ // conformant iterators do require the iterators to be a model of the
+ // Assignable concept.
+ // Iterators that contains a functor that is not assignable therefore
+ // are not correct models of the standard iterator concepts,
+ // despite being adequate for most algorithms. An example of this
+ // use case is the combination of the boost::adaptors::filtered
+ // class with a boost::lambda::bind generated functor.
+ // Ultimately modeling the range concepts using composition
+ // with the Boost.Iterator concepts would render the library
+ // incompatible with many common Boost.Lambda expressions.
+ template<class Iterator>
+ struct IncrementableIteratorConcept : CopyConstructible<Iterator>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ typedef BOOST_DEDUCED_TYPENAME iterator_traversal<Iterator>::type traversal_category;
+
+ BOOST_RANGE_CONCEPT_ASSERT((
+ Convertible<
+ traversal_category,
+ incrementable_traversal_tag
+ >));
+
+ BOOST_CONCEPT_USAGE(IncrementableIteratorConcept)
+ {
+ ++i;
+ (void)i++;
+ }
+ private:
+ Iterator i;
+#endif
+ };
+
+ template<class Iterator>
+ struct SinglePassIteratorConcept
+ : IncrementableIteratorConcept<Iterator>
+ , EqualityComparable<Iterator>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((
+ Convertible<
+ BOOST_DEDUCED_TYPENAME SinglePassIteratorConcept::traversal_category,
+ single_pass_traversal_tag
+ >));
+
+ BOOST_CONCEPT_USAGE(SinglePassIteratorConcept)
+ {
+ Iterator i2(++i);
+ boost::ignore_unused_variable_warning(i2);
+
+ // deliberately we are loose with the postfix version for the single pass
+ // iterator due to the commonly poor adherence to the specification means that
+ // many algorithms would be unusable, whereas actually without the check they
+ // work
+ (void)(i++);
+
+ BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r1(*i);
+ boost::ignore_unused_variable_warning(r1);
+
+ BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r2(*(++i));
+ boost::ignore_unused_variable_warning(r2);
+ }
+ private:
+ Iterator i;
+#endif
+ };
+
+ template<class Iterator>
+ struct ForwardIteratorConcept
+ : SinglePassIteratorConcept<Iterator>
+ , DefaultConstructible<Iterator>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ typedef BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::difference_type difference_type;
+
+ BOOST_MPL_ASSERT((is_integral<difference_type>));
+ BOOST_MPL_ASSERT_RELATION(std::numeric_limits<difference_type>::is_signed, ==, true);
+
+ BOOST_RANGE_CONCEPT_ASSERT((
+ Convertible<
+ BOOST_DEDUCED_TYPENAME ForwardIteratorConcept::traversal_category,
+ forward_traversal_tag
+ >));
+
+ BOOST_CONCEPT_USAGE(ForwardIteratorConcept)
+ {
+ // See the above note in the SinglePassIteratorConcept about the handling of the
+ // postfix increment. Since with forward and better iterators there is no need
+ // for a proxy, we can sensibly require that the dereference result
+ // is convertible to reference.
+ Iterator i2(i++);
+ boost::ignore_unused_variable_warning(i2);
+ BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r(*(i++));
+ boost::ignore_unused_variable_warning(r);
+ }
+ private:
+ Iterator i;
+#endif
+ };
+
+ template<class Iterator>
+ struct BidirectionalIteratorConcept
+ : ForwardIteratorConcept<Iterator>
+ {
+ #if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((
+ Convertible<
+ BOOST_DEDUCED_TYPENAME BidirectionalIteratorConcept::traversal_category,
+ bidirectional_traversal_tag
+ >));
+
+ BOOST_CONCEPT_USAGE(BidirectionalIteratorConcept)
+ {
+ --i;
+ (void)i--;
+ }
+ private:
+ Iterator i;
+ #endif
+ };
+
+ template<class Iterator>
+ struct RandomAccessIteratorConcept
+ : BidirectionalIteratorConcept<Iterator>
+ {
+ #if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((
+ Convertible<
+ BOOST_DEDUCED_TYPENAME RandomAccessIteratorConcept::traversal_category,
+ random_access_traversal_tag
+ >));
+
+ BOOST_CONCEPT_USAGE(RandomAccessIteratorConcept)
+ {
+ i += n;
+ i = i + n;
+ i = n + i;
+ i -= n;
+ i = i - n;
+ n = i - j;
+ }
+ private:
+ BOOST_DEDUCED_TYPENAME RandomAccessIteratorConcept::difference_type n;
+ Iterator i;
+ Iterator j;
+ #endif
+ };
+
+ } // namespace range_detail
+
+ //! Check if a type T models the SinglePassRange range concept.
+ template<class T>
+ struct SinglePassRangeConcept
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ typedef BOOST_DEDUCED_TYPENAME range_iterator<T const>::type const_iterator;
+ typedef BOOST_DEDUCED_TYPENAME range_iterator<T>::type iterator;
+
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::SinglePassIteratorConcept<iterator>));
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::SinglePassIteratorConcept<const_iterator>));
+
+ BOOST_CONCEPT_USAGE(SinglePassRangeConcept)
+ {
+ // This has been modified from assigning to this->i
+ // (where i was a member variable) to improve
+ // compatibility with Boost.Lambda
+ iterator i1 = boost::begin(*m_range);
+ iterator i2 = boost::end(*m_range);
+
+ ignore_unused_variable_warning(i1);
+ ignore_unused_variable_warning(i2);
+
+ const_constraints(*m_range);
+ }
+
+ private:
+ void const_constraints(const T& const_range)
+ {
+ const_iterator ci1 = boost::begin(const_range);
+ const_iterator ci2 = boost::end(const_range);
+
+ ignore_unused_variable_warning(ci1);
+ ignore_unused_variable_warning(ci2);
+ }
+
+ // Rationale:
+ // The type of m_range is T* rather than T because it allows
+ // T to be an abstract class. The other obvious alternative of
+ // T& produces a warning on some compilers.
+ T* m_range;
+#endif
+ };
+
+ //! Check if a type T models the ForwardRange range concept.
+ template<class T>
+ struct ForwardRangeConcept : SinglePassRangeConcept<T>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::ForwardIteratorConcept<BOOST_DEDUCED_TYPENAME ForwardRangeConcept::iterator>));
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::ForwardIteratorConcept<BOOST_DEDUCED_TYPENAME ForwardRangeConcept::const_iterator>));
+#endif
+ };
+
+ template<class Range>
+ struct WriteableRangeConcept
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ typedef BOOST_DEDUCED_TYPENAME range_iterator<Range>::type iterator;
+
+ BOOST_CONCEPT_USAGE(WriteableRangeConcept)
+ {
+ *i = v;
+ }
+ private:
+ iterator i;
+ BOOST_DEDUCED_TYPENAME range_value<Range>::type v;
+#endif
+ };
+
+ //! Check if a type T models the WriteableForwardRange range concept.
+ template<class T>
+ struct WriteableForwardRangeConcept
+ : ForwardRangeConcept<T>
+ , WriteableRangeConcept<T>
+ {
+ };
+
+ //! Check if a type T models the BidirectionalRange range concept.
+ template<class T>
+ struct BidirectionalRangeConcept : ForwardRangeConcept<T>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::BidirectionalIteratorConcept<BOOST_DEDUCED_TYPENAME BidirectionalRangeConcept::iterator>));
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::BidirectionalIteratorConcept<BOOST_DEDUCED_TYPENAME BidirectionalRangeConcept::const_iterator>));
+#endif
+ };
+
+ //! Check if a type T models the WriteableBidirectionalRange range concept.
+ template<class T>
+ struct WriteableBidirectionalRangeConcept
+ : BidirectionalRangeConcept<T>
+ , WriteableRangeConcept<T>
+ {
+ };
+
+ //! Check if a type T models the RandomAccessRange range concept.
+ template<class T>
+ struct RandomAccessRangeConcept : BidirectionalRangeConcept<T>
+ {
+#if BOOST_RANGE_ENABLE_CONCEPT_ASSERT
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::RandomAccessIteratorConcept<BOOST_DEDUCED_TYPENAME RandomAccessRangeConcept::iterator>));
+ BOOST_RANGE_CONCEPT_ASSERT((range_detail::RandomAccessIteratorConcept<BOOST_DEDUCED_TYPENAME RandomAccessRangeConcept::const_iterator>));
+#endif
+ };
+
+ //! Check if a type T models the WriteableRandomAccessRange range concept.
+ template<class T>
+ struct WriteableRandomAccessRangeConcept
+ : RandomAccessRangeConcept<T>
+ , WriteableRangeConcept<T>
+ {
+ };
+
+} // namespace boost
+
+#endif // BOOST_RANGE_CONCEPTS_HPP
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_CONFIG_HPP
+#define BOOST_RANGE_CONFIG_HPP
+
+#include <boost/detail/workaround.hpp>
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_RANGE_DEDUCED_TYPENAME
+#error "macro already defined!"
+#endif
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+# define BOOST_RANGE_DEDUCED_TYPENAME typename
+#else
+# if BOOST_WORKAROUND(BOOST_MSVC, == 1300) && !defined(_MSC_EXTENSIONS)
+# define BOOST_RANGE_DEDUCED_TYPENAME typename
+# else
+# define BOOST_RANGE_DEDUCED_TYPENAME BOOST_DEDUCED_TYPENAME
+# endif
+#endif
+
+#ifdef BOOST_RANGE_NO_ARRAY_SUPPORT
+#error "macro already defined!"
+#endif
+
+#if BOOST_WORKAROUND( BOOST_MSVC, < 1300 ) || BOOST_WORKAROUND( __MWERKS__, <= 0x3003 )
+#define BOOST_RANGE_NO_ARRAY_SUPPORT 1
+#endif
+
+#ifdef BOOST_RANGE_NO_ARRAY_SUPPORT
+#define BOOST_RANGE_ARRAY_REF() (boost_range_array)
+#define BOOST_RANGE_NO_STATIC_ASSERT
+#else
+#define BOOST_RANGE_ARRAY_REF() (&boost_range_array)
+#endif
+
+
+
+#endif
+
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_CONST_ITERATOR_HPP
+#define BOOST_RANGE_CONST_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/range/detail/const_iterator.hpp>
+#else
+
+#include <boost/range/detail/extract_optional_type.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <cstddef>
+#include <utility>
+
+namespace boost
+{
+ //////////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////////
+
+ namespace range_detail {
+ BOOST_RANGE_EXTRACT_OPTIONAL_TYPE( const_iterator )
+ }
+
+ template< typename C >
+ struct range_const_iterator : range_detail::extract_const_iterator<C>
+ {};
+
+ //////////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ struct range_const_iterator< std::pair<Iterator,Iterator> >
+ {
+ typedef Iterator type;
+ };
+
+ //////////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename T, std::size_t sz >
+ struct range_const_iterator< T[sz] >
+ {
+ typedef const T* type;
+ };
+
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_BEGIN_HPP
+#define BOOST_RANGE_DETAIL_BEGIN_HPP
+
+#include <boost/config.hpp> // BOOST_MSVC
+#include <boost/detail/workaround.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/detail/common.hpp>
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+# include <boost/range/value_type.hpp>
+#endif
+
+namespace boost
+{
+
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_begin;
+
+ //////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_begin<std_container_>
+ {
+ template< typename C >
+ static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type fun( C& c )
+ {
+ return c.begin();
+ };
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_begin<std_pair_>
+ {
+ template< typename P >
+ static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type fun( const P& p )
+ {
+ return p.first;
+ }
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_begin<array_>
+ {
+ #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+ template< typename T, std::size_t sz >
+ static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ return boost_range_array;
+ }
+ #else
+ template<typename T>
+ static BOOST_RANGE_DEDUCED_TYPENAME range_value<T>::type* fun(T& t)
+ {
+ return t;
+ }
+ #endif
+ };
+
+ } // namespace 'range_detail'
+
+ namespace range_adl_barrier
+ {
+ template< typename C >
+ inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ begin( C& c )
+ {
+ return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
+ }
+ }
+} // namespace 'boost'
+
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_COMMON_HPP
+#define BOOST_RANGE_DETAIL_COMMON_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/detail/sfinae.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/int.hpp>
+#include <cstddef>
+
+//////////////////////////////////////////////////////////////////////////////
+// missing partial specialization workaround.
+//////////////////////////////////////////////////////////////////////////////
+
+namespace boost
+{
+ namespace range_detail
+ {
+ // 1 = std containers
+ // 2 = std::pair
+ // 3 = const std::pair
+ // 4 = array
+ // 5 = const array
+ // 6 = char array
+ // 7 = wchar_t array
+ // 8 = char*
+ // 9 = const char*
+ // 10 = whar_t*
+ // 11 = const wchar_t*
+ // 12 = string
+
+ typedef mpl::int_<1>::type std_container_;
+ typedef mpl::int_<2>::type std_pair_;
+ typedef mpl::int_<3>::type const_std_pair_;
+ typedef mpl::int_<4>::type array_;
+ typedef mpl::int_<5>::type const_array_;
+ typedef mpl::int_<6>::type char_array_;
+ typedef mpl::int_<7>::type wchar_t_array_;
+ typedef mpl::int_<8>::type char_ptr_;
+ typedef mpl::int_<9>::type const_char_ptr_;
+ typedef mpl::int_<10>::type wchar_t_ptr_;
+ typedef mpl::int_<11>::type const_wchar_t_ptr_;
+ typedef mpl::int_<12>::type string_;
+
+ template< typename C >
+ struct range_helper
+ {
+ static C* c;
+ static C ptr;
+
+ BOOST_STATIC_CONSTANT( bool, is_pair_ = sizeof( boost::range_detail::is_pair_impl( c ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_char_ptr_ = sizeof( boost::range_detail::is_char_ptr_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_const_char_ptr_ = sizeof( boost::range_detail::is_const_char_ptr_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_wchar_t_ptr_ = sizeof( boost::range_detail::is_wchar_t_ptr_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_const_wchar_t_ptr_ = sizeof( boost::range_detail::is_const_wchar_t_ptr_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_char_array_ = sizeof( boost::range_detail::is_char_array_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_wchar_t_array_ = sizeof( boost::range_detail::is_wchar_t_array_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_string_ = (boost::type_traits::ice_or<is_const_char_ptr_, is_const_wchar_t_ptr_>::value ));
+ BOOST_STATIC_CONSTANT( bool, is_array_ = boost::is_array<C>::value );
+
+ };
+
+ template< typename C >
+ class range
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_pair_,
+ boost::range_detail::std_pair_,
+ void >::type pair_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_array_,
+ boost::range_detail::array_,
+ pair_t >::type array_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_string_,
+ boost::range_detail::string_,
+ array_t >::type string_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_const_char_ptr_,
+ boost::range_detail::const_char_ptr_,
+ string_t >::type const_char_ptr_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_char_ptr_,
+ boost::range_detail::char_ptr_,
+ const_char_ptr_t >::type char_ptr_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_const_wchar_t_ptr_,
+ boost::range_detail::const_wchar_t_ptr_,
+ char_ptr_t >::type const_wchar_ptr_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_wchar_t_ptr_,
+ boost::range_detail::wchar_t_ptr_,
+ const_wchar_ptr_t >::type wchar_ptr_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_wchar_t_array_,
+ boost::range_detail::wchar_t_array_,
+ wchar_ptr_t >::type wchar_array_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_char_array_,
+ boost::range_detail::char_array_,
+ wchar_array_t >::type char_array_t;
+ public:
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::is_void<char_array_t>::value,
+ boost::range_detail::std_container_,
+ char_array_t >::type type;
+ }; // class 'range'
+ }
+}
+
+#endif
+
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_CONST_ITERATOR_HPP
+#define BOOST_RANGE_DETAIL_CONST_ITERATOR_HPP
+
+#include <boost/range/detail/common.hpp>
+#include <boost/range/detail/remove_extent.hpp>
+
+//////////////////////////////////////////////////////////////////////////////
+// missing partial specialization workaround.
+//////////////////////////////////////////////////////////////////////////////
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_const_iterator_;
+
+ template<>
+ struct range_const_iterator_<std_container_>
+ {
+ template< typename C >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME C::const_iterator type;
+ };
+ };
+
+ template<>
+ struct range_const_iterator_<std_pair_>
+ {
+ template< typename P >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME P::first_type type;
+ };
+ };
+
+
+ template<>
+ struct range_const_iterator_<array_>
+ {
+ template< typename T >
+ struct pts
+ {
+ typedef const BOOST_RANGE_DEDUCED_TYPENAME
+ remove_extent<T>::type* type;
+ };
+ };
+ }
+
+ template< typename C >
+ class range_const_iterator
+ {
+ typedef BOOST_DEDUCED_TYPENAME range_detail::range<C>::type c_type;
+ public:
+ typedef BOOST_DEDUCED_TYPENAME range_detail::range_const_iterator_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;
+ };
+
+}
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_END_HPP
+#define BOOST_RANGE_DETAIL_END_HPP
+
+#include <boost/config.hpp> // BOOST_MSVC
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+# include <boost/range/detail/vc6/end.hpp>
+#else
+# include <boost/range/detail/implementation_help.hpp>
+# include <boost/range/iterator.hpp>
+# include <boost/range/detail/common.hpp>
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+# include <boost/range/detail/remove_extent.hpp>
+# endif
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_end;
+
+ //////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<std_container_>
+ {
+ template< typename C >
+ static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ fun( C& c )
+ {
+ return c.end();
+ };
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<std_pair_>
+ {
+ template< typename P >
+ static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type
+ fun( const P& p )
+ {
+ return p.second;
+ }
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<array_>
+ {
+ #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+ template< typename T, std::size_t sz >
+ static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ return boost::range_detail::array_end( boost_range_array );
+ }
+ #else
+ template<typename T>
+ static BOOST_RANGE_DEDUCED_TYPENAME remove_extent<T>::type* fun(T& t)
+ {
+ return t + remove_extent<T>::size;
+ }
+ #endif
+ };
+
+ } // namespace 'range_detail'
+
+ namespace range_adl_barrier
+ {
+ template< typename C >
+ inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ end( C& c )
+ {
+ return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
+ }
+ } // namespace range_adl_barrier
+
+} // namespace 'boost'
+
+# endif // VC6
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Arno Schoedl & Neil Groves 2009.
+// Use, modification and distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+#ifndef BOOST_RANGE_DETAIL_EXTRACT_OPTIONAL_TYPE_HPP_INCLUDED
+#define BOOST_RANGE_DETAIL_EXTRACT_OPTIONAL_TYPE_HPP_INCLUDED
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+
+#define BOOST_RANGE_EXTRACT_OPTIONAL_TYPE( a_typedef ) \
+ template< typename C > \
+ struct extract_ ## a_typedef \
+ { \
+ typedef BOOST_DEDUCED_TYPENAME C::a_typedef type; \
+ };
+
+#else
+
+namespace boost {
+ namespace range_detail {
+ template< typename T > struct exists { typedef void type; };
+ }
+}
+
+// Defines extract_some_typedef<T> which exposes T::some_typedef as
+// extract_some_typedef<T>::type if T::some_typedef exists. Otherwise
+// extract_some_typedef<T> is empty.
+#define BOOST_RANGE_EXTRACT_OPTIONAL_TYPE( a_typedef ) \
+ template< typename C, typename Enable=void > \
+ struct extract_ ## a_typedef \
+ {}; \
+ template< typename C > \
+ struct extract_ ## a_typedef< C \
+ , BOOST_DEDUCED_TYPENAME boost::range_detail::exists< BOOST_DEDUCED_TYPENAME C::a_typedef >::type \
+ > { \
+ typedef BOOST_DEDUCED_TYPENAME C::a_typedef type; \
+ };
+
+#endif
+
+#endif // include guard
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_IMPLEMENTATION_HELP_HPP
+#define BOOST_RANGE_DETAIL_IMPLEMENTATION_HELP_HPP
+
+#include <boost/range/config.hpp>
+#include <boost/range/detail/common.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <cstddef>
+#include <string.h>
+
+#ifndef BOOST_NO_CWCHAR
+#include <wchar.h>
+#endif
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template <typename T>
+ inline void boost_range_silence_warning( const T& ) { }
+
+ /////////////////////////////////////////////////////////////////////
+ // end() help
+ /////////////////////////////////////////////////////////////////////
+
+ inline const char* str_end( const char* s, const char* )
+ {
+ return s + strlen( s );
+ }
+
+#ifndef BOOST_NO_CWCHAR
+ inline const wchar_t* str_end( const wchar_t* s, const wchar_t* )
+ {
+ return s + wcslen( s );
+ }
+#else
+ inline const wchar_t* str_end( const wchar_t* s, const wchar_t* )
+ {
+ if( s == 0 || s[0] == 0 )
+ return s;
+ while( *++s != 0 )
+ ;
+ return s;
+ }
+#endif
+
+ template< class Char >
+ inline Char* str_end( Char* s )
+ {
+ return const_cast<Char*>( str_end( s, s ) );
+ }
+
+ template< class T, std::size_t sz >
+ inline T* array_end( T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ return boost_range_array + sz;
+ }
+
+ template< class T, std::size_t sz >
+ inline const T* array_end( const T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ return boost_range_array + sz;
+ }
+
+ /////////////////////////////////////////////////////////////////////
+ // size() help
+ /////////////////////////////////////////////////////////////////////
+
+ template< class Char >
+ inline std::size_t str_size( const Char* const& s )
+ {
+ return str_end( s ) - s;
+ }
+
+ template< class T, std::size_t sz >
+ inline std::size_t array_size( T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ boost_range_silence_warning( boost_range_array );
+ return sz;
+ }
+
+ template< class T, std::size_t sz >
+ inline std::size_t array_size( const T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ boost_range_silence_warning( boost_range_array );
+ return sz;
+ }
+
+ } // namespace 'range_detail'
+
+} // namespace 'boost'
+
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_ITERATOR_HPP
+#define BOOST_RANGE_DETAIL_ITERATOR_HPP
+
+#include <boost/range/detail/common.hpp>
+#include <boost/range/detail/remove_extent.hpp>
+
+#include <boost/static_assert.hpp>
+
+//////////////////////////////////////////////////////////////////////////////
+// missing partial specialization workaround.
+//////////////////////////////////////////////////////////////////////////////
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_iterator_ {
+ template< typename C >
+ struct pts
+ {
+ typedef int type;
+ };
+ };
+
+ template<>
+ struct range_iterator_<std_container_>
+ {
+ template< typename C >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME C::iterator type;
+ };
+ };
+
+ template<>
+ struct range_iterator_<std_pair_>
+ {
+ template< typename P >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME P::first_type type;
+ };
+ };
+
+ template<>
+ struct range_iterator_<array_>
+ {
+ template< typename T >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ remove_extent<T>::type* type;
+ };
+ };
+
+ }
+
+ template< typename C >
+ class range_mutable_iterator
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type c_type;
+ public:
+ typedef typename range_detail::range_iterator_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;
+ };
+}
+
+#endif
--- /dev/null
+// Boost.Range library concept checks
+//
+// Copyright Neil Groves 2009. Use, modification and distribution
+// are subject to 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)
+//
+#ifndef BOOST_RANGE_DETAIL_MISC_CONCEPT_HPP_INCLUDED
+#define BOOST_RANGE_DETAIL_MISC_CONCEPT_HPP_INCLUDED
+
+#include <boost/concept_check.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template<typename T1, typename T2>
+ class SameTypeConcept
+ {
+ public:
+ BOOST_CONCEPT_USAGE(SameTypeConcept)
+ {
+ same_type(a,b);
+ }
+ private:
+ template<typename T> void same_type(T,T) {}
+ T1 a;
+ T2 b;
+ };
+ }
+}
+
+#endif // include guard
--- /dev/null
+// Boost.Range library
+//
+// Copyright Jonathan Turkanis 2005. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+
+#ifndef BOOST_RANGE_DETAIL_REMOVE_BOUNDS_HPP
+#define BOOST_RANGE_DETAIL_REMOVE_BOUNDS_HPP
+
+#include <boost/config.hpp> // MSVC, NO_INTRINSIC_WCHAR_T, put size_t in std.
+#include <cstddef>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+
+ template< typename Case1 = mpl::true_,
+ typename Type1 = mpl::void_,
+ typename Case2 = mpl::true_,
+ typename Type2 = mpl::void_,
+ typename Case3 = mpl::true_,
+ typename Type3 = mpl::void_,
+ typename Case4 = mpl::true_,
+ typename Type4 = mpl::void_,
+ typename Case5 = mpl::true_,
+ typename Type5 = mpl::void_,
+ typename Case6 = mpl::true_,
+ typename Type6 = mpl::void_,
+ typename Case7 = mpl::true_,
+ typename Type7 = mpl::void_,
+ typename Case8 = mpl::true_,
+ typename Type8 = mpl::void_,
+ typename Case9 = mpl::true_,
+ typename Type9 = mpl::void_,
+ typename Case10 = mpl::true_,
+ typename Type10 = mpl::void_,
+ typename Case11 = mpl::true_,
+ typename Type11 = mpl::void_,
+ typename Case12 = mpl::true_,
+ typename Type12 = mpl::void_,
+ typename Case13 = mpl::true_,
+ typename Type13 = mpl::void_,
+ typename Case14 = mpl::true_,
+ typename Type14 = mpl::void_,
+ typename Case15 = mpl::true_,
+ typename Type15 = mpl::void_,
+ typename Case16 = mpl::true_,
+ typename Type16 = mpl::void_,
+ typename Case17 = mpl::true_,
+ typename Type17 = mpl::void_,
+ typename Case18 = mpl::true_,
+ typename Type18 = mpl::void_,
+ typename Case19 = mpl::true_,
+ typename Type19 = mpl::void_,
+ typename Case20 = mpl::true_,
+ typename Type20 = mpl::void_>
+ struct select {
+ typedef typename
+ mpl::eval_if<
+ Case1, mpl::identity<Type1>, mpl::eval_if<
+ Case2, mpl::identity<Type2>, mpl::eval_if<
+ Case3, mpl::identity<Type3>, mpl::eval_if<
+ Case4, mpl::identity<Type4>, mpl::eval_if<
+ Case5, mpl::identity<Type5>, mpl::eval_if<
+ Case6, mpl::identity<Type6>, mpl::eval_if<
+ Case7, mpl::identity<Type7>, mpl::eval_if<
+ Case8, mpl::identity<Type8>, mpl::eval_if<
+ Case9, mpl::identity<Type9>, mpl::if_<
+ Case10, Type10, mpl::void_ > > > > > > > > >
+ >::type result1;
+ typedef typename
+ mpl::eval_if<
+ Case11, mpl::identity<Type11>, mpl::eval_if<
+ Case12, mpl::identity<Type12>, mpl::eval_if<
+ Case13, mpl::identity<Type13>, mpl::eval_if<
+ Case14, mpl::identity<Type14>, mpl::eval_if<
+ Case15, mpl::identity<Type15>, mpl::eval_if<
+ Case16, mpl::identity<Type16>, mpl::eval_if<
+ Case17, mpl::identity<Type17>, mpl::eval_if<
+ Case18, mpl::identity<Type18>, mpl::eval_if<
+ Case19, mpl::identity<Type19>, mpl::if_<
+ Case20, Type20, mpl::void_ > > > > > > > > >
+ > result2;
+ typedef typename
+ mpl::eval_if<
+ is_same<result1, mpl::void_>,
+ result2,
+ mpl::identity<result1>
+ >::type type;
+ };
+
+ template<typename T>
+ struct remove_extent {
+ static T* ar;
+ BOOST_STATIC_CONSTANT(std::size_t, size = sizeof(*ar) / sizeof((*ar)[0]));
+
+ typedef typename
+ select<
+ is_same<T, bool[size]>, bool,
+ is_same<T, char[size]>, char,
+ is_same<T, signed char[size]>, signed char,
+ is_same<T, unsigned char[size]>, unsigned char,
+ #ifndef BOOST_NO_INTRINSIC_WCHAR_T
+ is_same<T, wchar_t[size]>, wchar_t,
+ #endif
+ is_same<T, short[size]>, short,
+ is_same<T, unsigned short[size]>, unsigned short,
+ is_same<T, int[size]>, int,
+ is_same<T, unsigned int[size]>, unsigned int,
+ is_same<T, long[size]>, long,
+ is_same<T, unsigned long[size]>, unsigned long,
+ is_same<T, float[size]>, float,
+ is_same<T, double[size]>, double,
+ is_same<T, long double[size]>, long double
+ >::type result1;
+ typedef typename
+ select<
+ is_same<T, const bool[size]>, const bool,
+ is_same<T, const char[size]>, const char,
+ is_same<T, const signed char[size]>, const signed char,
+ is_same<T, const unsigned char[size]>, const unsigned char,
+ #ifndef BOOST_NO_INTRINSIC_WCHAR_T
+ is_same<T, const wchar_t[size]>, const wchar_t,
+ #endif
+ is_same<T, const short[size]>, const short,
+ is_same<T, const unsigned short[size]>, const unsigned short,
+ is_same<T, const int[size]>, const int,
+ is_same<T, const unsigned int[size]>, const unsigned int,
+ is_same<T, const long[size]>, const long,
+ is_same<T, const unsigned long[size]>, const unsigned long,
+ is_same<T, const float[size]>, const float,
+ is_same<T, const double[size]>, const double,
+ is_same<T, const long double[size]>, const long double
+ > result2;
+ typedef typename
+ mpl::eval_if<
+ is_same<result1, mpl::void_>,
+ result2,
+ mpl::identity<result1>
+ >::type type;
+ };
+
+ } // namespace 'range_detail'
+
+} // namespace 'boost'
+
+
+#endif
--- /dev/null
+// This header intentionally has no include guards.
+//
+// Copyright (c) 2010 Neil Groves
+// 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
+//
+// This code utilises the experience gained during the evolution of
+// <boost/smart_ptr/operator_bool.hpp>
+#ifndef BOOST_RANGE_SAFE_BOOL_INCLUDED_HPP
+#define BOOST_RANGE_SAFE_BOOL_INCLUDED_HPP
+
+#include <boost/config.hpp>
+#include <boost/range/config.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+
+template<class DataMemberPtr>
+class safe_bool
+{
+public:
+ typedef safe_bool this_type;
+
+#if (defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, < 0x570)) || defined(__CINT_)
+ typedef bool unspecified_bool_type;
+ static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr)
+ {
+ return x;
+ }
+#elif defined(_MANAGED)
+ static void unspecified_bool(this_type***)
+ {
+ }
+ typedef void(*unspecified_bool_type)(this_type***);
+ static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr)
+ {
+ return x ? unspecified_bool : 0;
+ }
+#elif \
+ ( defined(__MWERKS__) && BOOST_WORKAROUND(__MWERKS__, < 0x3200) ) || \
+ ( defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 304) ) || \
+ ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) )
+
+ typedef bool (this_type::*unspecified_bool_type)() const;
+
+ static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr)
+ {
+ return x ? &this_type::detail_safe_bool_member_fn : 0;
+ }
+private:
+ bool detail_safe_bool_member_fn() const { return false; }
+#else
+ typedef DataMemberPtr unspecified_bool_type;
+ static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr p)
+ {
+ return x ? p : 0;
+ }
+#endif
+private:
+ safe_bool();
+ safe_bool(const safe_bool&);
+ void operator=(const safe_bool&);
+ ~safe_bool();
+};
+
+ } // namespace range_detail
+} // namespace boost
+
+#endif // include guard
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_SFINAE_HPP
+#define BOOST_RANGE_DETAIL_SFINAE_HPP
+
+#include <boost/range/config.hpp>
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <utility>
+
+
+namespace boost
+{
+ namespace range_detail
+ {
+ using type_traits::yes_type;
+ using type_traits::no_type;
+
+ //////////////////////////////////////////////////////////////////////
+ // string
+ //////////////////////////////////////////////////////////////////////
+
+ yes_type is_string_impl( const char* const );
+ yes_type is_string_impl( const wchar_t* const );
+ no_type is_string_impl( ... );
+
+ template< std::size_t sz >
+ yes_type is_char_array_impl( char BOOST_RANGE_ARRAY_REF()[sz] );
+ template< std::size_t sz >
+ yes_type is_char_array_impl( const char BOOST_RANGE_ARRAY_REF()[sz] );
+ no_type is_char_array_impl( ... );
+
+ template< std::size_t sz >
+ yes_type is_wchar_t_array_impl( wchar_t BOOST_RANGE_ARRAY_REF()[sz] );
+ template< std::size_t sz >
+ yes_type is_wchar_t_array_impl( const wchar_t BOOST_RANGE_ARRAY_REF()[sz] );
+ no_type is_wchar_t_array_impl( ... );
+
+ yes_type is_char_ptr_impl( char* const );
+ no_type is_char_ptr_impl( ... );
+
+ yes_type is_const_char_ptr_impl( const char* const );
+ no_type is_const_char_ptr_impl( ... );
+
+ yes_type is_wchar_t_ptr_impl( wchar_t* const );
+ no_type is_wchar_t_ptr_impl( ... );
+
+ yes_type is_const_wchar_t_ptr_impl( const wchar_t* const );
+ no_type is_const_wchar_t_ptr_impl( ... );
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ yes_type is_pair_impl( const std::pair<Iterator,Iterator>* );
+ no_type is_pair_impl( ... );
+
+ //////////////////////////////////////////////////////////////////////
+ // tags
+ //////////////////////////////////////////////////////////////////////
+
+ struct char_or_wchar_t_array_tag {};
+
+ } // namespace 'range_detail'
+
+} // namespace 'boost'
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_SIZE_TYPE_HPP
+#define BOOST_RANGE_DETAIL_SIZE_TYPE_HPP
+
+#include <boost/range/detail/common.hpp>
+
+//////////////////////////////////////////////////////////////////////////////
+// missing partial specialization workaround.
+//////////////////////////////////////////////////////////////////////////////
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_size_type_
+ {
+ template< typename C >
+ struct pts
+ {
+ typedef std::size_t type;
+ };
+ };
+
+ template<>
+ struct range_size_type_<std_container_>
+ {
+ template< typename C >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME C::size_type type;
+ };
+ };
+ }
+
+ template< typename C >
+ class range_size
+ {
+ typedef typename range_detail::range<C>::type c_type;
+ public:
+ typedef typename range_detail::range_size_type_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;
+ };
+}
+
+#endif
+
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_VC6_END_HPP
+#define BOOST_RANGE_DETAIL_VC6_END_HPP
+
+#include <boost/range/detail/implementation_help.hpp>
+#include <boost/range/detail/implementation_help.hpp>
+#include <boost/range/result_iterator.hpp>
+#include <boost/range/detail/common.hpp>
+#include <boost/range/detail/remove_extent.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_end;
+
+ //////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<std_container_>
+ {
+ template< typename C >
+ struct inner {
+ static BOOST_RANGE_DEDUCED_TYPENAME range_result_iterator<C>::type
+ fun( C& c )
+ {
+ return c.end();
+ };
+ };
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<std_pair_>
+ {
+ template< typename P >
+ struct inner {
+ static BOOST_RANGE_DEDUCED_TYPENAME range_result_iterator<P>::type
+ fun( const P& p )
+ {
+ return p.second;
+ }
+ };
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<array_>
+ {
+ template< typename T >
+ struct inner {
+ static BOOST_DEDUCED_TYPENAME remove_extent<T>::type*
+ fun(T& t)
+ {
+ return t + remove_extent<T>::size;
+ }
+ };
+ };
+
+
+ template<>
+ struct range_end<char_array_>
+ {
+ template< typename T >
+ struct inner {
+ static BOOST_DEDUCED_TYPENAME remove_extent<T>::type*
+ fun(T& t)
+ {
+ return t + remove_extent<T>::size;
+ }
+ };
+ };
+
+ template<>
+ struct range_end<wchar_t_array_>
+ {
+ template< typename T >
+ struct inner {
+ static BOOST_DEDUCED_TYPENAME remove_extent<T>::type*
+ fun(T& t)
+ {
+ return t + remove_extent<T>::size;
+ }
+ };
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // string
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<char_ptr_>
+ {
+ template< typename T >
+ struct inner {
+ static char* fun( char* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+ };
+
+ template<>
+ struct range_end<const_char_ptr_>
+ {
+ template< typename T >
+ struct inner {
+ static const char* fun( const char* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+ };
+
+ template<>
+ struct range_end<wchar_t_ptr_>
+ {
+ template< typename T >
+ struct inner {
+ static wchar_t* fun( wchar_t* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+ };
+
+
+ template<>
+ struct range_end<const_wchar_t_ptr_>
+ {
+ template< typename T >
+ struct inner {
+ static const wchar_t* fun( const wchar_t* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+ };
+
+ } // namespace 'range_detail'
+
+ template< typename C >
+ inline BOOST_DEDUCED_TYPENAME range_result_iterator<C>::type
+ end( C& c )
+ {
+ return range_detail::range_end<range_detail::range<C>::type>::inner<C>::fun( c );
+ }
+
+} // namespace 'boost'
+
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DIFFERENCE_TYPE_HPP
+#define BOOST_RANGE_DIFFERENCE_TYPE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+
+namespace boost
+{
+ template< class T >
+ struct range_difference : iterator_difference< typename range_iterator<T>::type >
+ { };
+}
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2006. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DISTANCE_HPP
+#define BOOST_RANGE_DISTANCE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/difference_type.hpp>
+
+namespace boost
+{
+
+ template< class T >
+ inline BOOST_DEDUCED_TYPENAME range_difference<T>::type
+ distance( const T& r )
+ {
+ return std::distance( boost::begin( r ), boost::end( r ) );
+ }
+
+} // namespace 'boost'
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_EMPTY_HPP
+#define BOOST_RANGE_EMPTY_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+
+namespace boost
+{
+
+ template< class T >
+ inline bool empty( const T& r )
+ {
+ return boost::begin( r ) == boost::end( r );
+ }
+
+} // namespace 'boost'
+
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_END_HPP
+#define BOOST_RANGE_END_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+#include <boost/range/detail/end.hpp>
+#else
+
+#include <boost/range/detail/implementation_help.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/const_iterator.hpp>
+
+namespace boost
+{
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+namespace range_detail
+{
+#endif
+
+ //////////////////////////////////////////////////////////////////////
+ // primary template
+ //////////////////////////////////////////////////////////////////////
+ template< typename C >
+ inline BOOST_DEDUCED_TYPENAME range_iterator<C>::type
+ range_end( C& c )
+ {
+ //
+ // If you get a compile-error here, it is most likely because
+ // you have not implemented range_begin() properly in
+ // the namespace of C
+ //
+ return c.end();
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ inline Iterator range_end( const std::pair<Iterator,Iterator>& p )
+ {
+ return p.second;
+ }
+
+ template< typename Iterator >
+ inline Iterator range_end( std::pair<Iterator,Iterator>& p )
+ {
+ return p.second;
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////
+
+ template< typename T, std::size_t sz >
+ inline const T* range_end( const T (&a)[sz] )
+ {
+ return range_detail::array_end<T,sz>( a );
+ }
+
+ template< typename T, std::size_t sz >
+ inline T* range_end( T (&a)[sz] )
+ {
+ return range_detail::array_end<T,sz>( a );
+ }
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+} // namespace 'range_detail'
+#endif
+
+namespace range_adl_barrier
+{
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type end( T& r )
+{
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+ using namespace range_detail;
+#endif
+ return range_end( r );
+}
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r )
+{
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+ using namespace range_detail;
+#endif
+ return range_end( r );
+}
+
+ } // namespace range_adl_barrier
+} // namespace 'boost'
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+namespace boost
+{
+ namespace range_adl_barrier
+ {
+ template< class T >
+ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
+ const_end( const T& r )
+ {
+ return boost::range_adl_barrier::end( r );
+ }
+ } // namespace range_adl_barrier
+ using namespace range_adl_barrier;
+} // namespace boost
+
+#endif
+
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2006. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_FUNCTIONS_HPP
+#define BOOST_RANGE_FUNCTIONS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/size.hpp>
+#include <boost/range/distance.hpp>
+#include <boost/range/empty.hpp>
+#include <boost/range/rbegin.hpp>
+#include <boost/range/rend.hpp>
+
+#endif
+
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_ITERATOR_HPP
+#define BOOST_RANGE_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/mutable_iterator.hpp>
+#include <boost/range/const_iterator.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/mpl/eval_if.hpp>
+
+namespace boost
+{
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+
+ namespace range_detail_vc7_1
+ {
+ template< typename C, typename Sig = void(C) >
+ struct range_iterator
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ mpl::eval_if_c< is_const<C>::value,
+ range_const_iterator< typename remove_const<C>::type >,
+ range_mutable_iterator<C> >::type type;
+ };
+
+ template< typename C, typename T >
+ struct range_iterator< C, void(T[]) >
+ {
+ typedef T* type;
+ };
+ }
+
+#endif
+
+ template< typename C >
+ struct range_iterator
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ range_detail_vc7_1::range_iterator<C>::type type;
+
+#else
+
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ mpl::eval_if_c< is_const<C>::value,
+ range_const_iterator< typename remove_const<C>::type >,
+ range_mutable_iterator<C> >::type type;
+
+#endif
+ };
+
+} // namespace boost
+
+//#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Neil Groves & Thorsten Ottosen & Pavol Droba 2003-2004.
+// Use, modification and distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+#ifndef BOOST_RANGE_ITERATOR_RANGE_CORE_HPP_INCLUDED
+#define BOOST_RANGE_ITERATOR_RANGE_CORE_HPP_INCLUDED
+
+#include <boost/config.hpp> // Define __STL_CONFIG_H, if appropriate.
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
+ #pragma warning( push )
+ #pragma warning( disable : 4996 )
+#endif
+
+#include <boost/assert.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/iterator/iterator_facade.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/type_traits/is_abstract.hpp>
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/range/functions.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/difference_type.hpp>
+#include <boost/range/algorithm/equal.hpp>
+#include <boost/range/detail/safe_bool.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <iterator>
+#include <algorithm>
+#include <cstddef>
+
+/*! \file
+ Defines the \c iterator_class and related functions.
+ \c iterator_range is a simple wrapper of iterator pair idiom. It provides
+ a rich subset of Container interface.
+*/
+
+
+namespace boost
+{
+ namespace iterator_range_detail
+ {
+ //
+ // The functions adl_begin and adl_end are implemented in a separate
+ // class for gcc-2.9x
+ //
+ template<class IteratorT>
+ struct iterator_range_impl {
+ template< class ForwardRange >
+ static IteratorT adl_begin( ForwardRange& r )
+ {
+ return static_cast<IteratorT>( boost::begin( r ) );
+ }
+
+ template< class ForwardRange >
+ static IteratorT adl_end( ForwardRange& r )
+ {
+ return static_cast<IteratorT>( boost::end( r ) );
+ }
+ };
+
+ template< class Left, class Right >
+ inline bool less_than( const Left& l, const Right& r )
+ {
+ return std::lexicographical_compare( boost::begin(l),
+ boost::end(l),
+ boost::begin(r),
+ boost::end(r) );
+ }
+
+ template< class Left, class Right >
+ inline bool greater_than( const Left& l, const Right& r )
+ {
+ return less_than(r,l);
+ }
+
+ template< class Left, class Right >
+ inline bool less_or_equal_than( const Left& l, const Right& r )
+ {
+ return !iterator_range_detail::less_than(r,l);
+ }
+
+ template< class Left, class Right >
+ inline bool greater_or_equal_than( const Left& l, const Right& r )
+ {
+ return !iterator_range_detail::less_than(l,r);
+ }
+
+ // This version is maintained since it is used in other boost libraries
+ // such as Boost.Assign
+ template< class Left, class Right >
+ inline bool equal(const Left& l, const Right& r)
+ {
+ return boost::equal(l, r);
+ }
+
+ struct range_tag { };
+ struct const_range_tag { };
+ }
+
+// iterator range template class -----------------------------------------//
+
+ //! iterator_range class
+ /*!
+ An \c iterator_range delimits a range in a sequence by beginning and ending iterators.
+ An iterator_range can be passed to an algorithm which requires a sequence as an input.
+ For example, the \c toupper() function may be used most frequently on strings,
+ but can also be used on iterator_ranges:
+
+ \code
+ boost::tolower( find( s, "UPPERCASE STRING" ) );
+ \endcode
+
+ Many algorithms working with sequences take a pair of iterators,
+ delimiting a working range, as an arguments. The \c iterator_range class is an
+ encapsulation of a range identified by a pair of iterators.
+ It provides a collection interface,
+ so it is possible to pass an instance to an algorithm requiring a collection as an input.
+ */
+ template<class IteratorT>
+ class iterator_range
+ {
+ typedef range_detail::safe_bool< IteratorT iterator_range<IteratorT>::* > safe_bool_t;
+ protected: // Used by sub_range
+ //! implementation class
+ typedef iterator_range_detail::iterator_range_impl<IteratorT> impl;
+ public:
+ //! this type
+ typedef iterator_range<IteratorT> type;
+ typedef BOOST_DEDUCED_TYPENAME safe_bool_t::unspecified_bool_type unspecified_bool_type;
+ //BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(value_type);
+
+ //! Encapsulated value type
+ typedef BOOST_DEDUCED_TYPENAME
+ iterator_value<IteratorT>::type value_type;
+
+ //! Difference type
+ typedef BOOST_DEDUCED_TYPENAME
+ iterator_difference<IteratorT>::type difference_type;
+
+ //! Size type
+ typedef std::size_t size_type; // note: must be unsigned
+
+ //! This type
+ typedef iterator_range<IteratorT> this_type;
+
+ //! Reference type
+ //
+ // Needed because value-type is the same for
+ // const and non-const iterators
+ //
+ typedef BOOST_DEDUCED_TYPENAME
+ iterator_reference<IteratorT>::type reference;
+
+ //! const_iterator type
+ /*!
+ There is no distinction between const_iterator and iterator.
+ These typedefs are provides to fulfill container interface
+ */
+ typedef IteratorT const_iterator;
+ //! iterator type
+ typedef IteratorT iterator;
+
+ private: // for return value of operator()()
+ typedef BOOST_DEDUCED_TYPENAME
+ boost::mpl::if_< boost::mpl::or_< boost::is_abstract< value_type >,
+ boost::is_array< value_type > >,
+ reference, value_type >::type abstract_value_type;
+
+ public:
+ iterator_range() : m_Begin( iterator() ), m_End( iterator() )
+ { }
+
+ //! Constructor from a pair of iterators
+ template< class Iterator >
+ iterator_range( Iterator Begin, Iterator End ) :
+ m_Begin(Begin), m_End(End)
+ {}
+
+ //! Constructor from a Range
+ template< class Range >
+ iterator_range( const Range& r ) :
+ m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
+ {}
+
+ //! Constructor from a Range
+ template< class Range >
+ iterator_range( Range& r ) :
+ m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
+ {}
+
+ //! Constructor from a Range
+ template< class Range >
+ iterator_range( const Range& r, iterator_range_detail::const_range_tag ) :
+ m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
+ {}
+
+ //! Constructor from a Range
+ template< class Range >
+ iterator_range( Range& r, iterator_range_detail::range_tag ) :
+ m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
+ {}
+
+ #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ this_type& operator=( const this_type& r )
+ {
+ m_Begin = r.begin();
+ m_End = r.end();
+ return *this;
+ }
+ #endif
+
+ template< class Iterator >
+ iterator_range& operator=( const iterator_range<Iterator>& r )
+ {
+ m_Begin = r.begin();
+ m_End = r.end();
+ return *this;
+ }
+
+ template< class ForwardRange >
+ iterator_range& operator=( ForwardRange& r )
+ {
+ m_Begin = impl::adl_begin( r );
+ m_End = impl::adl_end( r );
+ return *this;
+ }
+
+ template< class ForwardRange >
+ iterator_range& operator=( const ForwardRange& r )
+ {
+ m_Begin = impl::adl_begin( r );
+ m_End = impl::adl_end( r );
+ return *this;
+ }
+
+ IteratorT begin() const
+ {
+ return m_Begin;
+ }
+
+ IteratorT end() const
+ {
+ return m_End;
+ }
+
+ difference_type size() const
+ {
+ return m_End - m_Begin;
+ }
+
+ bool empty() const
+ {
+ return m_Begin == m_End;
+ }
+
+ operator unspecified_bool_type() const
+ {
+ return safe_bool_t::to_unspecified_bool(m_Begin != m_End, &iterator_range::m_Begin);
+ }
+
+ bool operator!() const
+ {
+ return empty();
+ }
+
+ bool equal( const iterator_range& r ) const
+ {
+ return m_Begin == r.m_Begin && m_End == r.m_End;
+ }
+
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+ bool operator==( const iterator_range& r ) const
+ {
+ return boost::equal( *this, r );
+ }
+
+ bool operator!=( const iterator_range& r ) const
+ {
+ return !operator==(r);
+ }
+
+ bool operator<( const iterator_range& r ) const
+ {
+ return iterator_range_detail::less_than( *this, r );
+ }
+
+ bool operator>( const iterator_range& r ) const
+ {
+ return iterator_range_detail::greater_than( *this, r );
+ }
+
+ bool operator<=( const iterator_range& r ) const
+ {
+ return iterator_range_detail::less_or_equal_than( *this, r );
+ }
+
+ bool operator>=( const iterator_range& r ) const
+ {
+ return iterator_range_detail::greater_or_equal_than( *this, r );
+ }
+
+#endif
+
+ public: // convenience
+ reference front() const
+ {
+ BOOST_ASSERT( !empty() );
+ return *m_Begin;
+ }
+
+ reference back() const
+ {
+ BOOST_ASSERT( !empty() );
+ IteratorT last( m_End );
+ return *--last;
+ }
+
+ // pop_front() - added to model the SinglePassRangePrimitiveConcept
+ void pop_front()
+ {
+ BOOST_ASSERT( !empty() );
+ ++m_Begin;
+ }
+
+ // pop_back() - added to model the BidirectionalRangePrimitiveConcept
+ void pop_back()
+ {
+ BOOST_ASSERT( !empty() );
+ --m_End;
+ }
+
+ reference operator[]( difference_type at ) const
+ {
+ BOOST_ASSERT( at >= 0 && at < size() );
+ return m_Begin[at];
+ }
+
+ //
+ // When storing transform iterators, operator[]()
+ // fails because it returns by reference. Therefore
+ // operator()() is provided for these cases.
+ //
+ abstract_value_type operator()( difference_type at ) const
+ {
+ BOOST_ASSERT( at >= 0 && at < size() );
+ return m_Begin[at];
+ }
+
+ iterator_range& advance_begin( difference_type n )
+ {
+ std::advance( m_Begin, n );
+ return *this;
+ }
+
+ iterator_range& advance_end( difference_type n )
+ {
+ std::advance( m_End, n );
+ return *this;
+ }
+
+ private:
+ // begin and end iterators
+ IteratorT m_Begin;
+ IteratorT m_End;
+
+ protected:
+ //
+ // Allow subclasses an easy way to access the
+ // base type
+ //
+ typedef iterator_range iterator_range_;
+ };
+
+// iterator range free-standing operators ---------------------------//
+
+ /////////////////////////////////////////////////////////////////////
+ // comparison operators
+ /////////////////////////////////////////////////////////////////////
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator==( const ForwardRange& l,
+ const iterator_range<IteratorT>& r )
+ {
+ return boost::equal( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator!=( const ForwardRange& l,
+ const iterator_range<IteratorT>& r )
+ {
+ return !boost::equal( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator<( const ForwardRange& l,
+ const iterator_range<IteratorT>& r )
+ {
+ return iterator_range_detail::less_than( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator<=( const ForwardRange& l,
+ const iterator_range<IteratorT>& r )
+ {
+ return iterator_range_detail::less_or_equal_than( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator>( const ForwardRange& l,
+ const iterator_range<IteratorT>& r )
+ {
+ return iterator_range_detail::greater_than( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator>=( const ForwardRange& l,
+ const iterator_range<IteratorT>& r )
+ {
+ return iterator_range_detail::greater_or_equal_than( l, r );
+ }
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+#else
+ template< class Iterator1T, class Iterator2T >
+ inline bool operator==( const iterator_range<Iterator1T>& l,
+ const iterator_range<Iterator2T>& r )
+ {
+ return boost::equal( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator==( const iterator_range<IteratorT>& l,
+ const ForwardRange& r )
+ {
+ return boost::equal( l, r );
+ }
+
+
+ template< class Iterator1T, class Iterator2T >
+ inline bool operator!=( const iterator_range<Iterator1T>& l,
+ const iterator_range<Iterator2T>& r )
+ {
+ return !boost::equal( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator!=( const iterator_range<IteratorT>& l,
+ const ForwardRange& r )
+ {
+ return !boost::equal( l, r );
+ }
+
+
+ template< class Iterator1T, class Iterator2T >
+ inline bool operator<( const iterator_range<Iterator1T>& l,
+ const iterator_range<Iterator2T>& r )
+ {
+ return iterator_range_detail::less_than( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator<( const iterator_range<IteratorT>& l,
+ const ForwardRange& r )
+ {
+ return iterator_range_detail::less_than( l, r );
+ }
+
+ template< class Iterator1T, class Iterator2T >
+ inline bool operator<=( const iterator_range<Iterator1T>& l,
+ const iterator_range<Iterator2T>& r )
+ {
+ return iterator_range_detail::less_or_equal_than( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator<=( const iterator_range<IteratorT>& l,
+ const ForwardRange& r )
+ {
+ return iterator_range_detail::less_or_equal_than( l, r );
+ }
+
+ template< class Iterator1T, class Iterator2T >
+ inline bool operator>( const iterator_range<Iterator1T>& l,
+ const iterator_range<Iterator2T>& r )
+ {
+ return iterator_range_detail::greater_than( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator>( const iterator_range<IteratorT>& l,
+ const ForwardRange& r )
+ {
+ return iterator_range_detail::greater_than( l, r );
+ }
+
+ template< class Iterator1T, class Iterator2T >
+ inline bool operator>=( const iterator_range<Iterator1T>& l,
+ const iterator_range<Iterator2T>& r )
+ {
+ return iterator_range_detail::greater_or_equal_than( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator>=( const iterator_range<IteratorT>& l,
+ const ForwardRange& r )
+ {
+ return iterator_range_detail::greater_or_equal_than( l, r );
+ }
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+// iterator range utilities -----------------------------------------//
+
+ //! iterator_range construct helper
+ /*!
+ Construct an \c iterator_range from a pair of iterators
+
+ \param Begin A begin iterator
+ \param End An end iterator
+ \return iterator_range object
+ */
+ template< typename IteratorT >
+ inline iterator_range< IteratorT >
+ make_iterator_range( IteratorT Begin, IteratorT End )
+ {
+ return iterator_range<IteratorT>( Begin, End );
+ }
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+ template< typename Range >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
+ make_iterator_range( Range& r )
+ {
+ return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
+ ( boost::begin( r ), boost::end( r ) );
+ }
+
+#else
+ //! iterator_range construct helper
+ /*!
+ Construct an \c iterator_range from a \c Range containing the begin
+ and end iterators.
+ */
+ template< class ForwardRange >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
+ make_iterator_range( ForwardRange& r )
+ {
+ return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
+ ( r, iterator_range_detail::range_tag() );
+ }
+
+ template< class ForwardRange >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type >
+ make_iterator_range( const ForwardRange& r )
+ {
+ return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type >
+ ( r, iterator_range_detail::const_range_tag() );
+ }
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+ namespace iterator_range_detail
+ {
+ template< class Range >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
+ make_range_impl( Range& r,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
+ {
+ //
+ // Not worth the effort
+ //
+ //if( advance_begin == 0 && advance_end == 0 )
+ // return make_iterator_range( r );
+ //
+
+ BOOST_DEDUCED_TYPENAME range_iterator<Range>::type
+ new_begin = boost::begin( r ),
+ new_end = boost::end( r );
+ std::advance( new_begin, advance_begin );
+ std::advance( new_end, advance_end );
+ return make_iterator_range( new_begin, new_end );
+ }
+ }
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+ template< class Range >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
+ make_iterator_range( Range& r,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
+ {
+ //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
+ return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
+ }
+
+#else
+
+ template< class Range >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
+ make_iterator_range( Range& r,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
+ {
+ //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
+ return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
+ }
+
+ template< class Range >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type >
+ make_iterator_range( const Range& r,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
+ {
+ //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
+ return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
+ }
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+ //! copy a range into a sequence
+ /*!
+ Construct a new sequence of the specified type from the elements
+ in the given range
+
+ \param Range An input range
+ \return New sequence
+ */
+ template< typename SeqT, typename Range >
+ inline SeqT copy_range( const Range& r )
+ {
+ return SeqT( boost::begin( r ), boost::end( r ) );
+ }
+
+} // namespace 'boost'
+
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
+ #pragma warning( pop )
+#endif
+
+#endif
+
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_MUTABLE_ITERATOR_HPP
+#define BOOST_RANGE_MUTABLE_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/range/detail/iterator.hpp>
+#else
+
+#include <boost/range/detail/extract_optional_type.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <cstddef>
+#include <utility>
+
+namespace boost
+{
+ //////////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////////
+
+ namespace range_detail {
+ BOOST_RANGE_EXTRACT_OPTIONAL_TYPE( iterator )
+ }
+
+ template< typename C >
+ struct range_mutable_iterator : range_detail::extract_iterator<C>
+ {};
+
+ //////////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ struct range_mutable_iterator< std::pair<Iterator,Iterator> >
+ {
+ typedef Iterator type;
+ };
+
+ //////////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename T, std::size_t sz >
+ struct range_mutable_iterator< T[sz] >
+ {
+ typedef T* type;
+ };
+
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_RBEGIN_HPP
+#define BOOST_RANGE_RBEGIN_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/end.hpp>
+#include <boost/range/reverse_iterator.hpp>
+
+namespace boost
+{
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+rbegin( C& c )
+{
+ return BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type( boost::end( c ) );
+}
+
+#else
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+rbegin( C& c )
+{
+ typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+ iter_type;
+ return iter_type( boost::end( c ) );
+}
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const C>::type
+rbegin( const C& c )
+{
+ typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator<const C>::type
+ iter_type;
+ return iter_type( boost::end( c ) );
+}
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const T>::type
+const_rbegin( const T& r )
+{
+ return boost::rbegin( r );
+}
+
+} // namespace 'boost'
+
+#endif
+
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_REND_HPP
+#define BOOST_RANGE_REND_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/begin.hpp>
+#include <boost/range/reverse_iterator.hpp>
+
+namespace boost
+{
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+rend( C& c )
+{
+ return BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type( boost::begin( c ) );
+}
+
+#else
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+rend( C& c )
+{
+ typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+ iter_type;
+ return iter_type( boost::begin( c ) );
+}
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const C>::type
+rend( const C& c )
+{
+ typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator<const C>::type
+ iter_type;
+ return iter_type( boost::begin( c ) );
+}
+
+#endif
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const T>::type
+const_rend( const T& r )
+{
+ return boost::rend( r );
+}
+
+} // namespace 'boost'
+
+#endif
+
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_RESULT_ITERATOR_HPP
+#define BOOST_RANGE_RESULT_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <boost/range/iterator.hpp>
+
+namespace boost
+{
+ //
+ // This interface is deprecated, use range_iterator<T>
+ //
+
+ template< typename C >
+ struct range_result_iterator : range_iterator<C>
+ { };
+
+} // namespace boost
+
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_REVERSE_ITERATOR_HPP
+#define BOOST_RANGE_REVERSE_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/iterator/reverse_iterator.hpp>
+
+
+namespace boost
+{
+ //////////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename C >
+ struct range_reverse_iterator
+ {
+ typedef reverse_iterator<
+ BOOST_DEDUCED_TYPENAME range_iterator<C>::type > type;
+ };
+
+
+} // namespace boost
+
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_SIZE_HPP
+#define BOOST_RANGE_SIZE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/size_type.hpp>
+#include <boost/assert.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME range_size<const SinglePassRange>::type
+ range_calculate_size(const SinglePassRange& rng)
+ {
+ BOOST_ASSERT( (boost::end(rng) - boost::begin(rng)) >= 0 &&
+ "reachability invariant broken!" );
+ return boost::end(rng) - boost::begin(rng);
+ }
+ }
+
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME range_size<const SinglePassRange>::type
+ size(const SinglePassRange& rng)
+ {
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+ using namespace range_detail;
+#endif
+ return range_calculate_size(rng);
+ }
+
+} // namespace 'boost'
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_SIZE_TYPE_HPP
+#define BOOST_RANGE_SIZE_TYPE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/difference_type.hpp>
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/range/detail/size_type.hpp>
+#else
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <cstddef>
+#include <utility>
+
+namespace boost
+{
+ namespace detail
+ {
+
+ //////////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////////
+
+ template<typename T>
+ class has_size_type
+ {
+ typedef char no_type;
+ struct yes_type { char dummy[2]; };
+
+ template<typename C>
+ static yes_type test(BOOST_DEDUCED_TYPENAME C::size_type x);
+
+ template<typename C, typename Arg>
+ static no_type test(Arg x);
+
+ public:
+ static const bool value = sizeof(test<T>(0)) == sizeof(yes_type);
+ };
+
+ template<typename C, typename Enabler=void>
+ struct range_size
+ {
+ typedef BOOST_DEDUCED_TYPENAME make_unsigned<
+ BOOST_DEDUCED_TYPENAME range_difference<C>::type
+ >::type type;
+ };
+
+ template<typename C>
+ struct range_size<
+ C,
+ BOOST_DEDUCED_TYPENAME enable_if<has_size_type<C>, void>::type
+ >
+ {
+ typedef BOOST_DEDUCED_TYPENAME C::size_type type;
+ };
+
+ }
+
+ template< class T >
+ struct range_size :
+ detail::range_size<T>
+ { };
+
+ template< class T >
+ struct range_size<const T >
+ : detail::range_size<T>
+ { };
+
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+
+#endif
--- /dev/null
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_VALUE_TYPE_HPP
+#define BOOST_RANGE_VALUE_TYPE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/iterator.hpp>
+
+//#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//#include <boost/range/detail/value_type.hpp>
+//#else
+
+#include <boost/iterator/iterator_traits.hpp>
+
+namespace boost
+{
+ template< class T >
+ struct range_value : iterator_value< typename range_iterator<T>::type >
+ { };
+}
+
+#endif
// This header intentionally has no include guards.
//
-// Copyright (c) 2001-2009 Peter Dimov
+// Copyright (c) 2001-2009, 2012 Peter Dimov
//
// 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
-#if ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, < 0x570) ) || defined(__CINT__)
+#if !defined( BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS ) && !defined( BOOST_NO_CXX11_NULLPTR )
- operator bool () const
+ explicit operator bool () const BOOST_NOEXCEPT
+ {
+ return px != 0;
+ }
+
+#elif ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, < 0x570) ) || defined(__CINT__)
+
+ operator bool () const BOOST_NOEXCEPT
{
return px != 0;
}
typedef void (*unspecified_bool_type)( this_type*** );
- operator unspecified_bool_type() const // never throws
+ operator unspecified_bool_type() const BOOST_NOEXCEPT
{
return px == 0? 0: unspecified_bool;
}
( defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 304) ) || \
( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) )
- typedef T * (this_type::*unspecified_bool_type)() const;
+ typedef element_type * (this_type::*unspecified_bool_type)() const;
- operator unspecified_bool_type() const // never throws
+ operator unspecified_bool_type() const BOOST_NOEXCEPT
{
return px == 0? 0: &this_type::get;
}
#else
- typedef T * this_type::*unspecified_bool_type;
+ typedef element_type * this_type::*unspecified_bool_type;
- operator unspecified_bool_type() const // never throws
+ operator unspecified_bool_type() const BOOST_NOEXCEPT
{
return px == 0? 0: &this_type::px;
}
#endif
// operator! is redundant, but some compilers need it
- bool operator! () const // never throws
+ bool operator! () const BOOST_NOEXCEPT
{
return px == 0;
}
// rather than including <memory> directly:
#include <boost/config/no_tr1/memory.hpp> // std::auto_ptr
#include <functional> // std::less
-#include <new> // std::bad_alloc
+
+#ifdef BOOST_NO_EXCEPTIONS
+# include <new> // std::bad_alloc
+#endif
+
+#if !defined( BOOST_NO_CXX11_SMART_PTR )
+# include <boost/utility/addressof.hpp>
+#endif
namespace boost
{
struct sp_nothrow_tag {};
+template< class D > struct sp_inplace_tag
+{
+};
+
+#if !defined( BOOST_NO_CXX11_SMART_PTR )
+
+template< class T > class sp_reference_wrapper
+{
+public:
+
+ explicit sp_reference_wrapper( T & t): t_( boost::addressof( t ) )
+ {
+ }
+
+ template< class Y > void operator()( Y * p ) const
+ {
+ (*t_)( p );
+ }
+
+private:
+
+ T * t_;
+};
+
+template< class D > struct sp_convert_reference
+{
+ typedef D type;
+};
+
+template< class D > struct sp_convert_reference< D& >
+{
+ typedef sp_reference_wrapper< D > type;
+};
+
+#endif
+
class weak_count;
class shared_count
#endif
}
+#if !defined( BOOST_NO_FUNCTION_TEMPLATE_ORDERING )
+
+ template< class P, class D > shared_count( P p, sp_inplace_tag<D> ): pi_( 0 )
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+ {
+#ifndef BOOST_NO_EXCEPTIONS
+
+ try
+ {
+ pi_ = new sp_counted_impl_pd< P, D >( p );
+ }
+ catch( ... )
+ {
+ D::operator_fn( p ); // delete p
+ throw;
+ }
+
+#else
+
+ pi_ = new sp_counted_impl_pd< P, D >( p );
+
+ if( pi_ == 0 )
+ {
+ D::operator_fn( p ); // delete p
+ boost::throw_exception( std::bad_alloc() );
+ }
+
+#endif // #ifndef BOOST_NO_EXCEPTIONS
+ }
+
+#endif // !defined( BOOST_NO_FUNCTION_TEMPLATE_ORDERING )
+
template<class P, class D, class A> shared_count( P p, D d, A a ): pi_( 0 )
#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
, id_(shared_count_id)
#endif
}
+#if !defined( BOOST_NO_FUNCTION_TEMPLATE_ORDERING )
+
+ template< class P, class D, class A > shared_count( P p, sp_inplace_tag< D >, A a ): pi_( 0 )
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+ {
+ typedef sp_counted_impl_pda< P, D, A > impl_type;
+ typedef typename A::template rebind< impl_type >::other A2;
+
+ A2 a2( a );
+
+#ifndef BOOST_NO_EXCEPTIONS
+
+ try
+ {
+ pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
+ new( static_cast< void* >( pi_ ) ) impl_type( p, a );
+ }
+ catch(...)
+ {
+ D::operator_fn( p );
+
+ if( pi_ != 0 )
+ {
+ a2.deallocate( static_cast< impl_type* >( pi_ ), 1 );
+ }
+
+ throw;
+ }
+
+#else
+
+ pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
+
+ if( pi_ != 0 )
+ {
+ new( static_cast< void* >( pi_ ) ) impl_type( p, a );
+ }
+ else
+ {
+ D::operator_fn( p );
+ boost::throw_exception( std::bad_alloc() );
+ }
+
+#endif // #ifndef BOOST_NO_EXCEPTIONS
+ }
+
+#endif // !defined( BOOST_NO_FUNCTION_TEMPLATE_ORDERING )
+
#ifndef BOOST_NO_AUTO_PTR
// auto_ptr<Y> is special cased to provide the strong guarantee
#endif
+#if !defined( BOOST_NO_CXX11_SMART_PTR )
+
+ template<class Y, class D>
+ explicit shared_count( std::unique_ptr<Y, D> & r ): pi_( 0 )
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+ {
+ typedef typename sp_convert_reference<D>::type D2;
+
+ D2 d2( r.get_deleter() );
+ pi_ = new sp_counted_impl_pd< typename std::unique_ptr<Y, D>::pointer, D2 >( r.get(), d2 );
+
+#ifdef BOOST_NO_EXCEPTIONS
+
+ if( pi_ == 0 )
+ {
+ boost::throw_exception( std::bad_alloc() );
+ }
+
+#endif
+
+ r.release();
+ }
+
+#endif
+
~shared_count() // nothrow
{
if( pi_ != 0 ) pi_->release();
if( pi_ != 0 ) pi_->add_ref_copy();
}
-#if defined( BOOST_HAS_RVALUE_REFS )
+#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
shared_count(shared_count && r): pi_(r.pi_) // nothrow
#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
{
return pi_? pi_->get_deleter( ti ): 0;
}
+
+ void * get_untyped_deleter() const
+ {
+ return pi_? pi_->get_untyped_deleter(): 0;
+ }
};
// Move support
-#if defined( BOOST_HAS_RVALUE_REFS )
+#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
weak_count(weak_count && r): pi_(r.pi_) // nothrow
#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
enum _vt { value = sizeof( (f)( static_cast<Y*>(0) ) ) == sizeof(yes) };
};
+template< class Y, class T > struct sp_convertible< Y, T[] >
+{
+ enum _vt { value = false };
+};
+
+template< class Y, class T > struct sp_convertible< Y[], T[] >
+{
+ enum _vt { value = sp_convertible< Y[1], T[1] >::value };
+};
+
+template< class Y, std::size_t N, class T > struct sp_convertible< Y[N], T[] >
+{
+ enum _vt { value = sp_convertible< Y[1], T[1] >::value };
+};
+
struct sp_empty
{
};
#elif defined( BOOST_DISABLE_THREADS ) && !defined( BOOST_SP_ENABLE_THREADS ) && !defined( BOOST_DISABLE_WIN32 )
# include <boost/smart_ptr/detail/sp_counted_base_nt.hpp>
-#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) )
-# include <boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp>
+#elif defined( __SNC__ )
+# include <boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp>
-#elif defined( __GNUC__ ) && defined( __ia64__ ) && !defined( __INTEL_COMPILER )
-# include <boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp>
+#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) ) && !defined(__PATHSCALE__)
+# include <boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp>
#elif defined(__HP_aCC) && defined(__ia64)
# include <boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp>
+#elif defined( __GNUC__ ) && defined( __ia64__ ) && !defined( __INTEL_COMPILER ) && !defined(__PATHSCALE__)
+# include <boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp>
+
+#elif defined( __IBMCPP__ ) && defined( __powerpc )
+# include <boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp>
+
#elif defined( __MWERKS__ ) && defined( __POWERPC__ )
# include <boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp>
-#elif defined( __GNUC__ ) && ( defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc ) )
+#elif defined( __GNUC__ ) && ( defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc ) ) && !defined(__PATHSCALE__) && !defined( _AIX )
# include <boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp>
-#elif defined( __GNUC__ ) && ( defined( __mips__ ) || defined( _mips ) )
+#elif defined( __GNUC__ ) && ( defined( __mips__ ) || defined( _mips ) ) && !defined(__PATHSCALE__)
# include <boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp>
#elif defined( BOOST_SP_HAS_SYNC )
#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined(__CYGWIN__)
# include <boost/smart_ptr/detail/sp_counted_base_w32.hpp>
+#elif defined( _AIX )
+# include <boost/smart_ptr/detail/sp_counted_base_aix.hpp>
+
#elif !defined( BOOST_HAS_THREADS )
# include <boost/smart_ptr/detail/sp_counted_base_nt.hpp>
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
--- /dev/null
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_AIX_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_AIX_HPP_INCLUDED
+
+//
+// detail/sp_counted_base_aix.hpp
+// based on: detail/sp_counted_base_w32.hpp
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+// Copyright 2006 Michael van der Westhuizen
+//
+// 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)
+//
+//
+// Lock-free algorithm by Alexander Terekhov
+//
+// Thanks to Ben Hitchings for the #weak + (#shared != 0)
+// formulation
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+#include <builtins.h>
+#include <sys/atomic_op.h>
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline void atomic_increment( int32_t* pw )
+{
+ // ++*pw;
+
+ fetch_and_add( pw, 1 );
+}
+
+inline int32_t atomic_decrement( int32_t * pw )
+{
+ // return --*pw;
+
+ int32_t originalValue;
+
+ __lwsync();
+ originalValue = fetch_and_add( pw, -1 );
+ __isync();
+
+ return (originalValue - 1);
+}
+
+inline int32_t atomic_conditional_increment( int32_t * pw )
+{
+ // if( *pw != 0 ) ++*pw;
+ // return *pw;
+
+ int32_t tmp = fetch_and_add( pw, 0 );
+ for( ;; )
+ {
+ if( tmp == 0 ) return 0;
+ if( compare_and_swap( pw, &tmp, tmp + 1 ) ) return (tmp + 1);
+ }
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ int32_t use_count_; // #shared
+ int32_t weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_decrement( &use_count_ ) == 0 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_decrement( &weak_count_ ) == 0 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return fetch_and_add( const_cast<int32_t*>(&use_count_), 0 );
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_AIX_HPP_INCLUDED
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
__asm__ __volatile__
(
"0:\n\t"
+ ".set push\n\t"
+ ".set mips2\n\t"
"ll %0, %1\n\t"
"addiu %0, 1\n\t"
"sc %0, %1\n\t"
+ ".set pop\n\t"
"beqz %0, 0b":
"=&r"( tmp ), "=m"( *pw ):
"m"( *pw )
__asm__ __volatile__
(
"0:\n\t"
+ ".set push\n\t"
+ ".set mips2\n\t"
"ll %1, %2\n\t"
"addiu %0, %1, -1\n\t"
"sc %0, %2\n\t"
+ ".set pop\n\t"
"beqz %0, 0b\n\t"
"addiu %0, %1, -1":
"=&r"( rv ), "=&r"( tmp ), "=m"( *pw ):
__asm__ __volatile__
(
"0:\n\t"
+ ".set push\n\t"
+ ".set mips2\n\t"
"ll %0, %2\n\t"
"beqz %0, 1f\n\t"
"addiu %1, %0, 1\n\t"
"sc %1, %2\n\t"
+ ".set pop\n\t"
"beqz %1, 0b\n\t"
"addiu %0, %0, 1\n\t"
"1:":
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
--- /dev/null
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SNC_PS3_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SNC_PS3_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+// detail/sp_counted_base_gcc_sparc.hpp - g++ on Sparc V8+
+//
+// Copyright (c) 2006 Piotr Wyderski
+// Copyright (c) 2006 Tomas Puverle
+// Copyright (c) 2006 Peter Dimov
+// Copyright (c) 2011 Emil Dotchevski
+//
+// 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
+//
+// Thanks to Michael van der Westhuizen
+
+#include <boost/detail/sp_typeinfo.hpp>
+#include <inttypes.h> // uint32_t
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline uint32_t compare_and_swap( uint32_t * dest_, uint32_t compare_, uint32_t swap_ )
+{
+ return __builtin_cellAtomicCompareAndSwap32(dest_,compare_,swap_);
+}
+
+inline uint32_t atomic_fetch_and_add( uint32_t * pw, uint32_t dv )
+{
+ // long r = *pw;
+ // *pw += dv;
+ // return r;
+
+ for( ;; )
+ {
+ uint32_t r = *pw;
+
+ if( __builtin_expect((compare_and_swap(pw, r, r + dv) == r), 1) )
+ {
+ return r;
+ }
+ }
+}
+
+inline void atomic_increment( uint32_t * pw )
+{
+ (void) __builtin_cellAtomicIncr32( pw );
+}
+
+inline uint32_t atomic_decrement( uint32_t * pw )
+{
+ return __builtin_cellAtomicDecr32( pw );
+}
+
+inline uint32_t atomic_conditional_increment( uint32_t * pw )
+{
+ // long r = *pw;
+ // if( r != 0 ) ++*pw;
+ // return r;
+
+ for( ;; )
+ {
+ uint32_t r = *pw;
+
+ if( r == 0 )
+ {
+ return r;
+ }
+
+ if( __builtin_expect( ( compare_and_swap( pw, r, r + 1 ) == r ), 1 ) )
+ {
+ return r;
+ }
+ }
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ uint32_t use_count_; // #shared
+ uint32_t weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_decrement( &use_count_ ) == 1 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_decrement( &weak_count_ ) == 1 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return const_cast< uint32_t const volatile & >( use_count_ );
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SNC_PS3_HPP_INCLUDED
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
--- /dev/null
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_VACPP_PPC_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_VACPP_PPC_HPP_INCLUDED
+
+//
+// detail/sp_counted_base_vacpp_ppc.hpp - xlC(vacpp) on POWER
+// based on: detail/sp_counted_base_w32.hpp
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+// Copyright 2006 Michael van der Westhuizen
+// Copyright 2012 IBM Corp.
+//
+// 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)
+//
+//
+// Lock-free algorithm by Alexander Terekhov
+//
+// Thanks to Ben Hitchings for the #weak + (#shared != 0)
+// formulation
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+
+extern "builtin" void __lwsync(void);
+extern "builtin" void __isync(void);
+extern "builtin" int __fetch_and_add(volatile int* addr, int val);
+extern "builtin" int __compare_and_swap(volatile int*, int*, int);
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline void atomic_increment( int *pw )
+{
+ // ++*pw;
+ __lwsync();
+ __fetch_and_add(pw, 1);
+ __isync();
+}
+
+inline int atomic_decrement( int *pw )
+{
+ // return --*pw;
+ __lwsync();
+ int originalValue = __fetch_and_add(pw, -1);
+ __isync();
+
+ return (originalValue - 1);
+}
+
+inline int atomic_conditional_increment( int *pw )
+{
+ // if( *pw != 0 ) ++*pw;
+ // return *pw;
+
+ __lwsync();
+ int v = *const_cast<volatile int*>(pw);
+ for (;;)
+ // loop until state is known
+ {
+ if (v == 0) return 0;
+ if (__compare_and_swap(pw, &v, v + 1))
+ {
+ __isync(); return (v + 1);
+ }
+ }
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ int use_count_; // #shared
+ int weak_count_; // #weak + (#shared != 0)
+ char pad[64] __attribute__((__aligned__(64)));
+ // pad to prevent false sharing
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_decrement( &use_count_ ) == 0 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_decrement( &weak_count_ ) == 0 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return *const_cast<volatile int*>(&use_count_);
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_VACPP_PPC_HPP_INCLUDED
}
virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+ virtual void * get_untyped_deleter() = 0;
void add_ref_copy()
{
return 0;
}
+ virtual void * get_untyped_deleter()
+ {
+ return 0;
+ }
+
#if defined(BOOST_SP_USE_STD_ALLOCATOR)
void * operator new( std::size_t )
// pre: d(p) must not throw
- sp_counted_impl_pd( P p, D d ): ptr(p), del(d)
+ sp_counted_impl_pd( P p, D & d ): ptr( p ), del( d )
+ {
+ }
+
+ sp_counted_impl_pd( P p ): ptr( p ), del()
{
}
return ti == BOOST_SP_TYPEID(D)? &reinterpret_cast<char&>( del ): 0;
}
+ virtual void * get_untyped_deleter()
+ {
+ return &reinterpret_cast<char&>( del );
+ }
+
#if defined(BOOST_SP_USE_STD_ALLOCATOR)
void * operator new( std::size_t )
// pre: d( p ) must not throw
- sp_counted_impl_pda( P p, D d, A a ): p_( p ), d_( d ), a_( a )
+ sp_counted_impl_pda( P p, D & d, A a ): p_( p ), d_( d ), a_( a )
+ {
+ }
+
+ sp_counted_impl_pda( P p, A a ): p_( p ), d_(), a_( a )
{
}
{
return ti == BOOST_SP_TYPEID( D )? &reinterpret_cast<char&>( d_ ): 0;
}
+
+ virtual void * get_untyped_deleter()
+ {
+ return &reinterpret_cast<char&>( d_ );
+ }
};
#ifdef __CODEGUARD__
// are available.
//
-#if defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )
+#ifndef BOOST_SP_NO_SYNC
+
+#if defined( __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 )
+
+# define BOOST_SP_HAS_SYNC
+
+#elif defined( __IBMCPP__ ) && ( __IBMCPP__ >= 1210 )
+
+# define BOOST_SP_HAS_SYNC
+
+#elif defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )
#define BOOST_SP_HAS_SYNC
#undef BOOST_SP_HAS_SYNC
#endif
+#if defined( __sh__ )
+#undef BOOST_SP_HAS_SYNC
+#endif
+
#if defined( __sparc__ )
#undef BOOST_SP_HAS_SYNC
#endif
-#if defined( __INTEL_COMPILER ) && !defined( __ia64__ ) && ( __INTEL_COMPILER < 1100 )
+#if defined( __INTEL_COMPILER ) && !defined( __ia64__ ) && ( __INTEL_COMPILER < 1110 )
+#undef BOOST_SP_HAS_SYNC
+#endif
+
+#if defined(__PATHSCALE__) && ((__PATHCC__ == 4) && (__PATHCC_MINOR__ < 9))
#undef BOOST_SP_HAS_SYNC
#endif
-#endif // __GNUC__ * 100 + __GNUC_MINOR__ >= 401
+#endif
+
+#endif // #ifndef BOOST_SP_NO_SYNC
#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED
--- /dev/null
+#ifndef BOOST_SMART_PTR_DETAIL_SP_NULLPTR_T_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_NULLPTR_T_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+// detail/sp_nullptr_t.hpp
+//
+// Copyright 2013 Peter Dimov
+//
+// 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
+
+#include <boost/config.hpp>
+#include <cstddef>
+
+#if !defined( BOOST_NO_CXX11_NULLPTR )
+
+namespace boost
+{
+
+namespace detail
+{
+
+#if defined( __clang__ ) && !defined( _LIBCPP_VERSION ) && !defined( BOOST_NO_CXX11_DECLTYPE )
+
+ typedef decltype(nullptr) sp_nullptr_t;
+
+#else
+
+ typedef std::nullptr_t sp_nullptr_t;
+
+#endif
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // !defined( BOOST_NO_CXX11_NULLPTR )
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_NULLPTR_T_HPP_INCLUDED
#include <boost/config.hpp>
#include <boost/smart_ptr/detail/sp_has_sync.hpp>
-#if defined(__GNUC__) && defined( __arm__ ) && !defined( __thumb__ )
+#if defined( BOOST_SP_USE_PTHREADS )
+# include <boost/smart_ptr/detail/spinlock_pt.hpp>
+
+#elif defined(__GNUC__) && defined( __arm__ ) && !defined( __thumb__ )
# include <boost/smart_ptr/detail/spinlock_gcc_arm.hpp>
#elif defined( BOOST_SP_HAS_SYNC )
#define BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ARM_HPP_INCLUDED
//
-// Copyright (c) 2008 Peter Dimov
+// Copyright (c) 2008, 2011 Peter Dimov
//
// Distributed under the Boost Software License, Version 1.0.
// See accompanying file LICENSE_1_0.txt or copy at
#include <boost/smart_ptr/detail/yield_k.hpp>
+#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7S__)
+
+# define BOOST_SP_ARM_BARRIER "dmb"
+# define BOOST_SP_ARM_HAS_LDREX
+
+#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__)
+
+# define BOOST_SP_ARM_BARRIER "mcr p15, 0, r0, c7, c10, 5"
+# define BOOST_SP_ARM_HAS_LDREX
+
+#else
+
+# define BOOST_SP_ARM_BARRIER ""
+
+#endif
+
namespace boost
{
{
int r;
+#ifdef BOOST_SP_ARM_HAS_LDREX
+
__asm__ __volatile__(
- "swp %0, %1, [%2]":
+ "ldrex %0, [%2]; \n"
+ "cmp %0, %1; \n"
+ "strexne %0, %1, [%2]; \n"
+ BOOST_SP_ARM_BARRIER :
"=&r"( r ): // outputs
"r"( 1 ), "r"( &v_ ): // inputs
"memory", "cc" );
+#else
+
+ __asm__ __volatile__(
+ "swp %0, %1, [%2];\n"
+ BOOST_SP_ARM_BARRIER :
+ "=&r"( r ): // outputs
+ "r"( 1 ), "r"( &v_ ): // inputs
+ "memory", "cc" );
+
+#endif
+
return r == 0;
}
void unlock()
{
- __asm__ __volatile__( "" ::: "memory" );
+ __asm__ __volatile__( BOOST_SP_ARM_BARRIER ::: "memory" );
*const_cast< int volatile* >( &v_ ) = 0;
}
#define BOOST_DETAIL_SPINLOCK_INIT {0}
+#undef BOOST_SP_ARM_BARRIER
+#undef BOOST_SP_ARM_HAS_LDREX
+
#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ARM_HPP_INCLUDED
static spinlock & spinlock_for( void const * pv )
{
+#if defined(__VMS) && __INITIAL_POINTER_SIZE == 64
+ std::size_t i = reinterpret_cast< unsigned long long >( pv ) % 41;
+#else
std::size_t i = reinterpret_cast< std::size_t >( pv ) % 41;
+#endif
return pool_[ i ];
}
#if defined(_MSC_VER) && _MSC_VER >= 1310 && ( defined(_M_IX86) || defined(_M_X64) )
extern "C" void _mm_pause();
-#pragma intrinsic( _mm_pause )
#define BOOST_SMT_PAUSE _mm_pause();
#include <boost/smart_ptr/detail/shared_count.hpp>
#include <boost/detail/workaround.hpp>
#include <boost/smart_ptr/detail/sp_convertible.hpp>
+#include <boost/smart_ptr/detail/sp_nullptr_t.hpp>
#if !defined(BOOST_SP_NO_ATOMIC_ACCESS)
#include <boost/smart_ptr/detail/spinlock_pool.hpp>
#include <algorithm> // for std::swap
#include <functional> // for std::less
#include <typeinfo> // for std::bad_cast
+#include <cstddef> // for std::size_t
#if !defined(BOOST_NO_IOSTREAM)
#if !defined(BOOST_NO_IOSFWD)
#endif
#endif
-#ifdef BOOST_MSVC // moved here to work around VC++ compiler crash
-# pragma warning(push)
-# pragma warning(disable:4284) // odd return type for operator->
-#endif
-
namespace boost
{
template<class T> class shared_ptr;
template<class T> class weak_ptr;
template<class T> class enable_shared_from_this;
-template<class T> class enable_shared_from_this2;
+class enable_shared_from_raw;
namespace detail
{
-struct static_cast_tag {};
-struct const_cast_tag {};
-struct dynamic_cast_tag {};
-struct polymorphic_cast_tag {};
+// sp_element, element_type
+
+template< class T > struct sp_element
+{
+ typedef T type;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template< class T > struct sp_element< T[] >
+{
+ typedef T type;
+};
+
+#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 )
+
+template< class T, std::size_t N > struct sp_element< T[N] >
+{
+ typedef T type;
+};
+
+#endif
+
+#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+// sp_dereference, return type of operator*
-template<class T> struct shared_ptr_traits
+template< class T > struct sp_dereference
{
- typedef T & reference;
+ typedef T & type;
};
-template<> struct shared_ptr_traits<void>
+template<> struct sp_dereference< void >
{
- typedef void reference;
+ typedef void type;
};
#if !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
-template<> struct shared_ptr_traits<void const>
+template<> struct sp_dereference< void const >
{
- typedef void reference;
+ typedef void type;
};
-template<> struct shared_ptr_traits<void volatile>
+template<> struct sp_dereference< void volatile >
{
- typedef void reference;
+ typedef void type;
};
-template<> struct shared_ptr_traits<void const volatile>
+template<> struct sp_dereference< void const volatile >
{
- typedef void reference;
+ typedef void type;
+};
+
+#endif // !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template< class T > struct sp_dereference< T[] >
+{
+ typedef void type;
+};
+
+#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 )
+
+template< class T, std::size_t N > struct sp_dereference< T[N] >
+{
+ typedef void type;
};
#endif
+#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+// sp_member_access, return type of operator->
+
+template< class T > struct sp_member_access
+{
+ typedef T * type;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template< class T > struct sp_member_access< T[] >
+{
+ typedef void type;
+};
+
+#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 )
+
+template< class T, std::size_t N > struct sp_member_access< T[N] >
+{
+ typedef void type;
+};
+
+#endif
+
+#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+// sp_array_access, return type of operator[]
+
+template< class T > struct sp_array_access
+{
+ typedef void type;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template< class T > struct sp_array_access< T[] >
+{
+ typedef T & type;
+};
+
+#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 )
+
+template< class T, std::size_t N > struct sp_array_access< T[N] >
+{
+ typedef T & type;
+};
+
+#endif
+
+#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+// sp_extent, for operator[] index check
+
+template< class T > struct sp_extent
+{
+ enum _vt { value = 0 };
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template< class T, std::size_t N > struct sp_extent< T[N] >
+{
+ enum _vt { value = N };
+};
+
+#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
// enable_shared_from_this support
template< class X, class Y, class T > inline void sp_enable_shared_from_this( boost::shared_ptr<X> const * ppx, Y const * py, boost::enable_shared_from_this< T > const * pe )
}
}
-template< class X, class Y, class T > inline void sp_enable_shared_from_this( boost::shared_ptr<X> * ppx, Y const * py, boost::enable_shared_from_this2< T > const * pe )
-{
- if( pe != 0 )
- {
- pe->_internal_accept_owner( ppx, const_cast< Y* >( py ) );
- }
-}
+template< class X, class Y > inline void sp_enable_shared_from_this( boost::shared_ptr<X> * ppx, Y const * py, boost::enable_shared_from_raw const * pe );
#ifdef _MANAGED
#endif
+// sp_assert_convertible
+
+template< class Y, class T > inline void sp_assert_convertible()
+{
+#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
+
+ // static_assert( sp_convertible< Y, T >::value );
+ typedef char tmp[ sp_convertible< Y, T >::value? 1: -1 ];
+ (void)sizeof( tmp );
+
+#else
+
+ T* p = static_cast< Y* >( 0 );
+ (void)p;
+
+#endif
+}
+
+// pointer constructor helper
+
+template< class T, class Y > inline void sp_pointer_construct( boost::shared_ptr< T > * ppx, Y * p, boost::detail::shared_count & pn )
+{
+ boost::detail::shared_count( p ).swap( pn );
+ boost::detail::sp_enable_shared_from_this( ppx, p, p );
+}
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template< class T, class Y > inline void sp_pointer_construct( boost::shared_ptr< T[] > * /*ppx*/, Y * p, boost::detail::shared_count & pn )
+{
+ sp_assert_convertible< Y[], T[] >();
+ boost::detail::shared_count( p, boost::checked_array_deleter< T >() ).swap( pn );
+}
+
+template< class T, std::size_t N, class Y > inline void sp_pointer_construct( boost::shared_ptr< T[N] > * /*ppx*/, Y * p, boost::detail::shared_count & pn )
+{
+ sp_assert_convertible< Y[N], T[N] >();
+ boost::detail::shared_count( p, boost::checked_array_deleter< T >() ).swap( pn );
+}
+
+#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+// deleter constructor helper
+
+template< class T, class Y > inline void sp_deleter_construct( boost::shared_ptr< T > * ppx, Y * p )
+{
+ boost::detail::sp_enable_shared_from_this( ppx, p, p );
+}
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template< class T, class Y > inline void sp_deleter_construct( boost::shared_ptr< T[] > * /*ppx*/, Y * /*p*/ )
+{
+ sp_assert_convertible< Y[], T[] >();
+}
+
+template< class T, std::size_t N, class Y > inline void sp_deleter_construct( boost::shared_ptr< T[N] > * /*ppx*/, Y * /*p*/ )
+{
+ sp_assert_convertible< Y[N], T[N] >();
+}
+
+#endif // !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
} // namespace detail
public:
- typedef T element_type;
- typedef T value_type;
- typedef T * pointer;
- typedef typename boost::detail::shared_ptr_traits<T>::reference reference;
+ typedef typename boost::detail::sp_element< T >::type element_type;
+
+ shared_ptr() BOOST_NOEXCEPT : px( 0 ), pn() // never throws in 1.30+
+ {
+ }
+
+#if !defined( BOOST_NO_CXX11_NULLPTR )
- shared_ptr(): px(0), pn() // never throws in 1.30+
+ shared_ptr( boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT : px( 0 ), pn() // never throws
{
}
+#endif
+
template<class Y>
- explicit shared_ptr( Y * p ): px( p ), pn( p ) // Y must be complete
+ explicit shared_ptr( Y * p ): px( p ), pn() // Y must be complete
{
- boost::detail::sp_enable_shared_from_this( this, p, p );
+ boost::detail::sp_pointer_construct( this, p, pn );
}
//
// shared_ptr will release p by calling d(p)
//
- template<class Y, class D> shared_ptr(Y * p, D d): px(p), pn(p, d)
+ template<class Y, class D> shared_ptr( Y * p, D d ): px( p ), pn( p, d )
{
- boost::detail::sp_enable_shared_from_this( this, p, p );
+ boost::detail::sp_deleter_construct( this, p );
}
+#if !defined( BOOST_NO_CXX11_NULLPTR )
+
+ template<class D> shared_ptr( boost::detail::sp_nullptr_t p, D d ): px( p ), pn( p, d )
+ {
+ }
+
+#endif
+
// As above, but with allocator. A's copy constructor shall not throw.
template<class Y, class D, class A> shared_ptr( Y * p, D d, A a ): px( p ), pn( p, d, a )
{
- boost::detail::sp_enable_shared_from_this( this, p, p );
+ boost::detail::sp_deleter_construct( this, p );
+ }
+
+#if !defined( BOOST_NO_CXX11_NULLPTR )
+
+ template<class D, class A> shared_ptr( boost::detail::sp_nullptr_t p, D d, A a ): px( p ), pn( p, d, a )
+ {
+ }
+
+#endif
+
+// generated copy constructor, destructor are fine...
+
+#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
+
+// ... except in C++0x, move disables the implicit copy
+
+ shared_ptr( shared_ptr const & r ) BOOST_NOEXCEPT : px( r.px ), pn( r.pn )
+ {
}
-// generated copy constructor, destructor are fine
+#endif
template<class Y>
- explicit shared_ptr(weak_ptr<Y> const & r): pn(r.pn) // may throw
+ explicit shared_ptr( weak_ptr<Y> const & r ): pn( r.pn ) // may throw
{
+ boost::detail::sp_assert_convertible< Y, T >();
+
// it is now safe to copy r.px, as pn(r.pn) did not throw
px = r.px;
}
template<class Y>
- shared_ptr( weak_ptr<Y> const & r, boost::detail::sp_nothrow_tag ): px( 0 ), pn( r.pn, boost::detail::sp_nothrow_tag() ) // never throws
+ shared_ptr( weak_ptr<Y> const & r, boost::detail::sp_nothrow_tag )
+ BOOST_NOEXCEPT : px( 0 ), pn( r.pn, boost::detail::sp_nothrow_tag() )
{
if( !pn.empty() )
{
shared_ptr( shared_ptr<Y> const & r )
#endif
- : px( r.px ), pn( r.pn ) // never throws
+ BOOST_NOEXCEPT : px( r.px ), pn( r.pn )
{
+ boost::detail::sp_assert_convertible< Y, T >();
}
// aliasing
template< class Y >
- shared_ptr( shared_ptr<Y> const & r, T * p ): px( p ), pn( r.pn ) // never throws
+ shared_ptr( shared_ptr<Y> const & r, element_type * p ) BOOST_NOEXCEPT : px( p ), pn( r.pn )
{
}
- template<class Y>
- shared_ptr(shared_ptr<Y> const & r, boost::detail::static_cast_tag): px(static_cast<element_type *>(r.px)), pn(r.pn)
- {
- }
+#ifndef BOOST_NO_AUTO_PTR
template<class Y>
- shared_ptr(shared_ptr<Y> const & r, boost::detail::const_cast_tag): px(const_cast<element_type *>(r.px)), pn(r.pn)
+ explicit shared_ptr( std::auto_ptr<Y> & r ): px(r.get()), pn()
{
- }
+ boost::detail::sp_assert_convertible< Y, T >();
- template<class Y>
- shared_ptr(shared_ptr<Y> const & r, boost::detail::dynamic_cast_tag): px(dynamic_cast<element_type *>(r.px)), pn(r.pn)
- {
- if(px == 0) // need to allocate new counter -- the cast failed
- {
- pn = boost::detail::shared_count();
- }
- }
+ Y * tmp = r.get();
+ pn = boost::detail::shared_count( r );
- template<class Y>
- shared_ptr(shared_ptr<Y> const & r, boost::detail::polymorphic_cast_tag): px(dynamic_cast<element_type *>(r.px)), pn(r.pn)
- {
- if(px == 0)
- {
- boost::throw_exception(std::bad_cast());
- }
+ boost::detail::sp_deleter_construct( this, tmp );
}
-#ifndef BOOST_NO_AUTO_PTR
+#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
template<class Y>
- explicit shared_ptr(std::auto_ptr<Y> & r): px(r.get()), pn()
+ shared_ptr( std::auto_ptr<Y> && r ): px(r.get()), pn()
{
+ boost::detail::sp_assert_convertible< Y, T >();
+
Y * tmp = r.get();
- pn = boost::detail::shared_count(r);
- boost::detail::sp_enable_shared_from_this( this, tmp, tmp );
+ pn = boost::detail::shared_count( r );
+
+ boost::detail::sp_deleter_construct( this, tmp );
}
-#if !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+#elif !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template<class Ap>
explicit shared_ptr( Ap r, typename boost::detail::sp_enable_if_auto_ptr<Ap, int>::type = 0 ): px( r.get() ), pn()
{
- typename Ap::element_type * tmp = r.get();
+ typedef typename Ap::element_type Y;
+
+ boost::detail::sp_assert_convertible< Y, T >();
+
+ Y * tmp = r.get();
pn = boost::detail::shared_count( r );
- boost::detail::sp_enable_shared_from_this( this, tmp, tmp );
- }
+ boost::detail::sp_deleter_construct( this, tmp );
+ }
#endif // BOOST_NO_SFINAE, BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
#endif // BOOST_NO_AUTO_PTR
+#if !defined( BOOST_NO_CXX11_SMART_PTR ) && !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
+
+ template< class Y, class D >
+ shared_ptr( std::unique_ptr< Y, D > && r ): px( r.get() ), pn()
+ {
+ boost::detail::sp_assert_convertible< Y, T >();
+
+ typename std::unique_ptr< Y, D >::pointer tmp = r.get();
+ pn = boost::detail::shared_count( r );
+
+ boost::detail::sp_deleter_construct( this, tmp );
+ }
+
+#endif
+
// assignment
- shared_ptr & operator=( shared_ptr const & r ) // never throws
+ shared_ptr & operator=( shared_ptr const & r ) BOOST_NOEXCEPT
{
this_type(r).swap(*this);
return *this;
#if !defined(BOOST_MSVC) || (BOOST_MSVC >= 1400)
template<class Y>
- shared_ptr & operator=(shared_ptr<Y> const & r) // never throws
+ shared_ptr & operator=(shared_ptr<Y> const & r) BOOST_NOEXCEPT
{
this_type(r).swap(*this);
return *this;
template<class Y>
shared_ptr & operator=( std::auto_ptr<Y> & r )
{
- this_type(r).swap(*this);
+ this_type( r ).swap( *this );
+ return *this;
+ }
+
+#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
+
+ template<class Y>
+ shared_ptr & operator=( std::auto_ptr<Y> && r )
+ {
+ this_type( static_cast< std::auto_ptr<Y> && >( r ) ).swap( *this );
return *this;
}
-#if !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+#elif !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
template<class Ap>
typename boost::detail::sp_enable_if_auto_ptr< Ap, shared_ptr & >::type operator=( Ap r )
return *this;
}
-
#endif // BOOST_NO_SFINAE, BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
#endif // BOOST_NO_AUTO_PTR
+#if !defined( BOOST_NO_CXX11_SMART_PTR ) && !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
+
+ template<class Y, class D>
+ shared_ptr & operator=( std::unique_ptr<Y, D> && r )
+ {
+ this_type( static_cast< std::unique_ptr<Y, D> && >( r ) ).swap(*this);
+ return *this;
+ }
+
+#endif
+
// Move support
-#if defined( BOOST_HAS_RVALUE_REFS )
+#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
- shared_ptr( shared_ptr && r ): px( r.px ), pn() // never throws
+ shared_ptr( shared_ptr && r ) BOOST_NOEXCEPT : px( r.px ), pn()
{
pn.swap( r.pn );
r.px = 0;
shared_ptr( shared_ptr<Y> && r )
#endif
- : px( r.px ), pn() // never throws
+ BOOST_NOEXCEPT : px( r.px ), pn()
{
+ boost::detail::sp_assert_convertible< Y, T >();
+
pn.swap( r.pn );
r.px = 0;
}
- shared_ptr & operator=( shared_ptr && r ) // never throws
+ shared_ptr & operator=( shared_ptr && r ) BOOST_NOEXCEPT
{
this_type( static_cast< shared_ptr && >( r ) ).swap( *this );
return *this;
}
template<class Y>
- shared_ptr & operator=( shared_ptr<Y> && r ) // never throws
+ shared_ptr & operator=( shared_ptr<Y> && r ) BOOST_NOEXCEPT
{
this_type( static_cast< shared_ptr<Y> && >( r ) ).swap( *this );
return *this;
#endif
- void reset() // never throws in 1.30+
+#if !defined( BOOST_NO_CXX11_NULLPTR )
+
+ shared_ptr & operator=( boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT // never throws
+ {
+ this_type().swap(*this);
+ return *this;
+ }
+
+#endif
+
+ void reset() BOOST_NOEXCEPT // never throws in 1.30+
{
this_type().swap(*this);
}
- template<class Y> void reset(Y * p) // Y must be complete
+ template<class Y> void reset( Y * p ) // Y must be complete
{
- BOOST_ASSERT(p == 0 || p != px); // catch self-reset errors
- this_type(p).swap(*this);
+ BOOST_ASSERT( p == 0 || p != px ); // catch self-reset errors
+ this_type( p ).swap( *this );
}
template<class Y, class D> void reset( Y * p, D d )
this_type( p, d, a ).swap( *this );
}
- template<class Y> void reset( shared_ptr<Y> const & r, T * p )
+ template<class Y> void reset( shared_ptr<Y> const & r, element_type * p )
{
this_type( r, p ).swap( *this );
}
-
- reference operator* () const // never throws
+
+ // never throws (but has a BOOST_ASSERT in it, so not marked with BOOST_NOEXCEPT)
+ typename boost::detail::sp_dereference< T >::type operator* () const
{
- BOOST_ASSERT(px != 0);
+ BOOST_ASSERT( px != 0 );
return *px;
}
-
- T * operator-> () const // never throws
+
+ // never throws (but has a BOOST_ASSERT in it, so not marked with BOOST_NOEXCEPT)
+ typename boost::detail::sp_member_access< T >::type operator-> () const
{
- BOOST_ASSERT(px != 0);
+ BOOST_ASSERT( px != 0 );
return px;
}
+
+ // never throws (but has a BOOST_ASSERT in it, so not marked with BOOST_NOEXCEPT)
+ typename boost::detail::sp_array_access< T >::type operator[] ( std::ptrdiff_t i ) const
+ {
+ BOOST_ASSERT( px != 0 );
+ BOOST_ASSERT( i >= 0 && ( i < boost::detail::sp_extent< T >::value || boost::detail::sp_extent< T >::value == 0 ) );
+
+ return px[ i ];
+ }
- T * get() const // never throws
+ element_type * get() const BOOST_NOEXCEPT
{
return px;
}
// implicit conversion to "bool"
#include <boost/smart_ptr/detail/operator_bool.hpp>
- bool unique() const // never throws
+ bool unique() const BOOST_NOEXCEPT
{
return pn.unique();
}
- long use_count() const // never throws
+ long use_count() const BOOST_NOEXCEPT
{
return pn.use_count();
}
- void swap(shared_ptr<T> & other) // never throws
+ void swap( shared_ptr & other ) BOOST_NOEXCEPT
{
std::swap(px, other.px);
pn.swap(other.pn);
}
- template<class Y> bool _internal_less(shared_ptr<Y> const & rhs) const
+ template<class Y> bool owner_before( shared_ptr<Y> const & rhs ) const BOOST_NOEXCEPT
+ {
+ return pn < rhs.pn;
+ }
+
+ template<class Y> bool owner_before( weak_ptr<Y> const & rhs ) const BOOST_NOEXCEPT
{
return pn < rhs.pn;
}
- void * _internal_get_deleter( boost::detail::sp_typeinfo const & ti ) const
+ void * _internal_get_deleter( boost::detail::sp_typeinfo const & ti ) const BOOST_NOEXCEPT
{
return pn.get_deleter( ti );
}
- bool _internal_equiv( shared_ptr const & r ) const
+ void * _internal_get_untyped_deleter() const BOOST_NOEXCEPT
+ {
+ return pn.get_untyped_deleter();
+ }
+
+ bool _internal_equiv( shared_ptr const & r ) const BOOST_NOEXCEPT
{
return px == r.px && pn == r.pn;
}
#endif
- T * px; // contained pointer
+ element_type * px; // contained pointer
boost::detail::shared_count pn; // reference counter
}; // shared_ptr
-template<class T, class U> inline bool operator==(shared_ptr<T> const & a, shared_ptr<U> const & b)
+template<class T, class U> inline bool operator==(shared_ptr<T> const & a, shared_ptr<U> const & b) BOOST_NOEXCEPT
{
return a.get() == b.get();
}
-template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<U> const & b)
+template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<U> const & b) BOOST_NOEXCEPT
{
return a.get() != b.get();
}
// Resolve the ambiguity between our op!= and the one in rel_ops
-template<class T> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<T> const & b)
+template<class T> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<T> const & b) BOOST_NOEXCEPT
{
return a.get() != b.get();
}
#endif
-template<class T, class U> inline bool operator<(shared_ptr<T> const & a, shared_ptr<U> const & b)
+#if !defined( BOOST_NO_CXX11_NULLPTR )
+
+template<class T> inline bool operator==( shared_ptr<T> const & p, boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
{
- return a._internal_less(b);
+ return p.get() == 0;
}
-template<class T> inline void swap(shared_ptr<T> & a, shared_ptr<T> & b)
+template<class T> inline bool operator==( boost::detail::sp_nullptr_t, shared_ptr<T> const & p ) BOOST_NOEXCEPT
{
- a.swap(b);
+ return p.get() == 0;
}
-template<class T, class U> shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r)
+template<class T> inline bool operator!=( shared_ptr<T> const & p, boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
{
- return shared_ptr<T>(r, boost::detail::static_cast_tag());
+ return p.get() != 0;
}
-template<class T, class U> shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r)
+template<class T> inline bool operator!=( boost::detail::sp_nullptr_t, shared_ptr<T> const & p ) BOOST_NOEXCEPT
{
- return shared_ptr<T>(r, boost::detail::const_cast_tag());
+ return p.get() != 0;
}
-template<class T, class U> shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r)
+#endif
+
+template<class T, class U> inline bool operator<(shared_ptr<T> const & a, shared_ptr<U> const & b) BOOST_NOEXCEPT
{
- return shared_ptr<T>(r, boost::detail::dynamic_cast_tag());
+ return a.owner_before( b );
}
-// shared_*_cast names are deprecated. Use *_pointer_cast instead.
+template<class T> inline void swap(shared_ptr<T> & a, shared_ptr<T> & b) BOOST_NOEXCEPT
+{
+ a.swap(b);
+}
-template<class T, class U> shared_ptr<T> shared_static_cast(shared_ptr<U> const & r)
+template<class T, class U> shared_ptr<T> static_pointer_cast( shared_ptr<U> const & r ) BOOST_NOEXCEPT
{
- return shared_ptr<T>(r, boost::detail::static_cast_tag());
+ (void) static_cast< T* >( static_cast< U* >( 0 ) );
+
+ typedef typename shared_ptr<T>::element_type E;
+
+ E * p = static_cast< E* >( r.get() );
+ return shared_ptr<T>( r, p );
}
-template<class T, class U> shared_ptr<T> shared_dynamic_cast(shared_ptr<U> const & r)
+template<class T, class U> shared_ptr<T> const_pointer_cast( shared_ptr<U> const & r ) BOOST_NOEXCEPT
{
- return shared_ptr<T>(r, boost::detail::dynamic_cast_tag());
+ (void) const_cast< T* >( static_cast< U* >( 0 ) );
+
+ typedef typename shared_ptr<T>::element_type E;
+
+ E * p = const_cast< E* >( r.get() );
+ return shared_ptr<T>( r, p );
}
-template<class T, class U> shared_ptr<T> shared_polymorphic_cast(shared_ptr<U> const & r)
+template<class T, class U> shared_ptr<T> dynamic_pointer_cast( shared_ptr<U> const & r ) BOOST_NOEXCEPT
{
- return shared_ptr<T>(r, boost::detail::polymorphic_cast_tag());
+ (void) dynamic_cast< T* >( static_cast< U* >( 0 ) );
+
+ typedef typename shared_ptr<T>::element_type E;
+
+ E * p = dynamic_cast< E* >( r.get() );
+ return p? shared_ptr<T>( r, p ): shared_ptr<T>();
}
-template<class T, class U> shared_ptr<T> shared_polymorphic_downcast(shared_ptr<U> const & r)
+template<class T, class U> shared_ptr<T> reinterpret_pointer_cast( shared_ptr<U> const & r ) BOOST_NOEXCEPT
{
- BOOST_ASSERT(dynamic_cast<T *>(r.get()) == r.get());
- return shared_static_cast<T>(r);
+ (void) reinterpret_cast< T* >( static_cast< U* >( 0 ) );
+
+ typedef typename shared_ptr<T>::element_type E;
+
+ E * p = reinterpret_cast< E* >( r.get() );
+ return shared_ptr<T>( r, p );
}
// get_pointer() enables boost::mem_fn to recognize shared_ptr
-template<class T> inline T * get_pointer(shared_ptr<T> const & p)
+template<class T> inline typename shared_ptr<T>::element_type * get_pointer(shared_ptr<T> const & p) BOOST_NOEXCEPT
{
return p.get();
}
// get_deleter
+namespace detail
+{
+
#if ( defined(__GNUC__) && BOOST_WORKAROUND(__GNUC__, < 3) ) || \
( defined(__EDG_VERSION__) && BOOST_WORKAROUND(__EDG_VERSION__, <= 238) ) || \
( defined(__HP_aCC) && BOOST_WORKAROUND(__HP_aCC, <= 33500) )
// g++ 2.9x doesn't allow static_cast<X const *>(void *)
// apparently EDG 2.38 and HP aCC A.03.35 also don't accept it
-template<class D, class T> D * get_deleter(shared_ptr<T> const & p)
+template<class D, class T> D * basic_get_deleter(shared_ptr<T> const & p)
{
void const * q = p._internal_get_deleter(BOOST_SP_TYPEID(D));
return const_cast<D *>(static_cast<D const *>(q));
#else
-template<class D, class T> D * get_deleter(shared_ptr<T> const & p)
+template<class D, class T> D * basic_get_deleter( shared_ptr<T> const & p ) BOOST_NOEXCEPT
{
- return static_cast<D *>(p._internal_get_deleter(BOOST_SP_TYPEID(D)));
+ return static_cast<D *>( p._internal_get_deleter(BOOST_SP_TYPEID(D)) );
}
#endif
+class esft2_deleter_wrapper
+{
+private:
+
+ shared_ptr<void> deleter_;
+
+public:
+
+ esft2_deleter_wrapper()
+ {
+ }
+
+ template< class T > void set_deleter( shared_ptr<T> const & deleter )
+ {
+ deleter_ = deleter;
+ }
+
+ template<typename D> D* get_deleter() const BOOST_NOEXCEPT
+ {
+ return boost::detail::basic_get_deleter<D>( deleter_ );
+ }
+
+ template< class T> void operator()( T* )
+ {
+ BOOST_ASSERT( deleter_.use_count() <= 1 );
+ deleter_.reset();
+ }
+};
+
+} // namespace detail
+
+template<class D, class T> D * get_deleter( shared_ptr<T> const & p ) BOOST_NOEXCEPT
+{
+ D *del = boost::detail::basic_get_deleter<D>(p);
+
+ if(del == 0)
+ {
+ boost::detail::esft2_deleter_wrapper *del_wrapper = boost::detail::basic_get_deleter<boost::detail::esft2_deleter_wrapper>(p);
+// The following get_deleter method call is fully qualified because
+// older versions of gcc (2.95, 3.2.3) fail to compile it when written del_wrapper->get_deleter<D>()
+ if(del_wrapper) del = del_wrapper->::boost::detail::esft2_deleter_wrapper::get_deleter<D>();
+ }
+
+ return del;
+}
+
// atomic access
#if !defined(BOOST_SP_NO_ATOMIC_ACCESS)
-template<class T> inline bool atomic_is_lock_free( shared_ptr<T> const * /*p*/ )
+template<class T> inline bool atomic_is_lock_free( shared_ptr<T> const * /*p*/ ) BOOST_NOEXCEPT
{
return false;
}
return atomic_compare_exchange( p, v, w ); // std::move( w )
}
-#endif
+#endif // !defined(BOOST_SP_NO_ATOMIC_ACCESS)
-} // namespace boost
+// hash_value
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
+template< class T > struct hash;
+
+template< class T > std::size_t hash_value( boost::shared_ptr<T> const & p ) BOOST_NOEXCEPT
+{
+ return boost::hash< T* >()( p.get() );
+}
+
+} // namespace boost
#endif // #if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
+#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__)
+//
+// This is horrible, but it seems to be the only we can shut up the
+// "anonymous variadic macros were introduced in C99 [-Wvariadic-macros]"
+// warning that get spewed out otherwise in non-C++11 mode.
+//
+#pragma GCC system_header
+#endif
+
+#ifndef BOOST_NO_CXX11_STATIC_ASSERT
+# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
+# define BOOST_STATIC_ASSERT_MSG( ... ) static_assert(__VA_ARGS__)
+# else
+# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
+# endif
+#else
+# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
+#endif
+
#ifdef __BORLANDC__
//
// workaround for buggy integral-constant expression support:
// then enable this:
//
#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)))
-# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) == 0 ? false : true)
+# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
+# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) ((__VA_ARGS__) == 0 ? false : true)
+# else
+# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) == 0 ? false : true)
+# endif
+#else
+# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
+# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) (bool)(__VA_ARGS__)
+# else
+# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
+# endif
+#endif
+//
+// If the compiler warns about unused typedefs then enable this:
+//
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
+# define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
#else
-# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
+# define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
#endif
-#ifdef BOOST_HAS_STATIC_ASSERT
-# define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
+#ifndef BOOST_NO_CXX11_STATIC_ASSERT
+# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
+# define BOOST_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__)
+# else
+# define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
+# endif
#else
namespace boost{
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)\
> boost_static_assert_typedef_
-#elif defined(BOOST_MSVC)
+#elif defined(BOOST_MSVC) && defined(BOOST_NO_CXX11_VARIADIC_MACROS)
#define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST ( B ) >)>\
BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
-#elif defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)
+#elif defined(BOOST_MSVC)
+#define BOOST_STATIC_ASSERT(...) \
+ typedef ::boost::static_assert_test<\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST (__VA_ARGS__) >)>\
+ BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
+#elif (defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)) && defined(BOOST_NO_CXX11_VARIADIC_MACROS)
// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error
// instead of warning in case of failure
# define BOOST_STATIC_ASSERT( B ) \
typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
[ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >::value ]
+#elif (defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)) && !defined(BOOST_NO_CXX11_VARIADIC_MACROS)
+// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error
+// instead of warning in case of failure
+# define BOOST_STATIC_ASSERT(...) \
+ typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
+ [ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >::value ]
#elif defined(__sgi)
// special version for SGI MIPSpro compiler
#define BOOST_STATIC_ASSERT( B ) \
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >) )
#else
// generic version
-#define BOOST_STATIC_ASSERT( B ) \
- typedef ::boost::static_assert_test<\
- sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
- BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
+# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
+# define BOOST_STATIC_ASSERT( ... ) \
+ typedef ::boost::static_assert_test<\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\
+ BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
+# else
+# define BOOST_STATIC_ASSERT( B ) \
+ typedef ::boost::static_assert_test<\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
+ BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
+# endif
#endif
#else
// alternative enum based implementation:
-#define BOOST_STATIC_ASSERT( B ) \
- enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
- = sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) }
+# ifndef BOOST_NO_CXX11_VARIADIC_MACROS
+# define BOOST_STATIC_ASSERT( ... ) \
+ enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
+ = sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( __VA_ARGS__ ) >) }
+# else
+# define BOOST_STATIC_ASSERT(B) \
+ enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
+ = sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) }
+# endif
#endif
-#endif // ndef BOOST_HAS_STATIC_ASSERT
+#endif // defined(BOOST_NO_CXX11_STATIC_ASSERT)
#endif // BOOST_STATIC_ASSERT_HPP
-#ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED
-#define BOOST_THROW_EXCEPTION_HPP_INCLUDED
+#ifndef UUID_AA15E74A856F11E08B8D93F24824019B
+#define UUID_AA15E74A856F11E08B8D93F24824019B
+#if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma warning(push,1)
+#endif
// MS compatible compilers support #pragma once
#if !defined( BOOST_EXCEPTION_DISABLE )
# include <boost/exception/exception.hpp>
+#if !defined(BOOST_THROW_EXCEPTION_CURRENT_FUNCTION)
# include <boost/current_function.hpp>
-# define BOOST_THROW_EXCEPTION(x) ::boost::exception_detail::throw_exception_(x,BOOST_CURRENT_FUNCTION,__FILE__,__LINE__)
+# define BOOST_THROW_EXCEPTION_CURRENT_FUNCTION BOOST_CURRENT_FUNCTION
+#endif
+# define BOOST_THROW_EXCEPTION(x) ::boost::exception_detail::throw_exception_(x,BOOST_THROW_EXCEPTION_CURRENT_FUNCTION,__FILE__,__LINE__)
#else
# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x)
#endif
#endif
} // namespace boost
-#endif // #ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED
+#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma warning(pop)
+#endif
+#endif
# else
# define BOOST_TR1_STD_HEADER(name) <../stlport/name>
# endif
+# elif defined(__PATHSCALE__) && (defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))
+# define BOOST_TR1_STD_HEADER(name) <../include/name>
+
+# elif defined(__SUNPRO_CC) && (defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))
+# define BOOST_TR1_STD_HEADER(name) <../stdcxx4/name>
# elif defined(__HP_aCC)
// HP aCC include path:
# elif defined(__BORLANDC__) && __BORLANDC__ >= 0x570
# define BOOST_TR1_STD_HEADER(name) <../include/dinkumware/name>
+# elif defined(__clang__)
+# define BOOST_TR1_STD_HEADER(name) <../include/name>
+
# elif defined(__GNUC__) && __GNUC__ >= 3
# if defined(BOOST_TR1_GCC_INCLUDE_PATH)
# define BOOST_TR1_STD_HEADER(name) <../BOOST_TR1_GCC_INCLUDE_PATH/name>
#include "boost/type_traits/cv_traits.hpp"
#include "boost/type_traits/function_traits.hpp"
+#include "boost/utility/swap.hpp"
#include "boost/detail/workaround.hpp" // needed for BOOST_WORKAROUND
template<class T>
class generate_error;
-// - cons getters --------------------------------------------------------
-// called: get_class<N>::get<RETURN_TYPE>(aTuple)
-
-template< int N >
-struct get_class {
- template<class RET, class HT, class TT >
- inline static RET get(const cons<HT, TT>& t)
- {
-#if BOOST_WORKAROUND(__IBMCPP__,==600)
- // vacpp 6.0 is not very consistent regarding the member template keyword
- // Here it generates an error when the template keyword is used.
- return get_class<N-1>::get<RET>(t.tail);
-#else
- return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
-#endif
- }
- template<class RET, class HT, class TT >
- inline static RET get(cons<HT, TT>& t)
- {
-#if BOOST_WORKAROUND(__IBMCPP__,==600)
- return get_class<N-1>::get<RET>(t.tail);
-#else
- return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
-#endif
- }
+template<int N>
+struct drop_front {
+ template<class Tuple>
+ struct apply {
+ typedef BOOST_DEDUCED_TYPENAME drop_front<N-1>::BOOST_NESTED_TEMPLATE
+ apply<Tuple> next;
+ typedef BOOST_DEDUCED_TYPENAME next::type::tail_type type;
+ static const type& call(const Tuple& tup) {
+ return next::call(tup).tail;
+ }
+ };
};
template<>
-struct get_class<0> {
- template<class RET, class HT, class TT>
- inline static RET get(const cons<HT, TT>& t)
- {
- return t.head;
- }
- template<class RET, class HT, class TT>
- inline static RET get(cons<HT, TT>& t)
- {
- return t.head;
- }
+struct drop_front<0> {
+ template<class Tuple>
+ struct apply {
+ typedef Tuple type;
+ static const type& call(const Tuple& tup) {
+ return tup;
+ }
+ };
};
} // end of namespace detail
template<int N, class T>
struct element
{
-private:
- typedef typename T::tail_type Next;
-public:
- typedef typename element<N-1, Next>::type type;
-};
-template<class T>
-struct element<0,T>
-{
- typedef typename T::head_type type;
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<T>::type::head_type type;
};
template<int N, class T>
struct element<N, const T>
{
private:
- typedef typename T::tail_type Next;
- typedef typename element<N-1, Next>::type unqualified_type;
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<T>::type::head_type unqualified_type;
public:
#if BOOST_WORKAROUND(__BORLANDC__,<0x600)
typedef const unqualified_type type;
#else
- typedef typename boost::add_const<unqualified_type>::type type;
-#endif
-
-};
-template<class T>
-struct element<0,const T>
-{
-#if BOOST_WORKAROUND(__BORLANDC__,<0x600)
- typedef const typename T::head_type type;
-#else
- typedef typename boost::add_const<typename T::head_type>::type type;
+ typedef BOOST_DEDUCED_TYPENAME boost::add_const<unqualified_type>::type type;
#endif
};
-
#else // def BOOST_NO_CV_SPECIALIZATIONS
namespace detail {
template<int N, class T, bool IsConst>
struct element_impl
{
-private:
- typedef typename T::tail_type Next;
-public:
- typedef typename element_impl<N-1, Next, IsConst>::type type;
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<T>::type::head_type type;
};
template<int N, class T>
struct element_impl<N, T, true /* IsConst */>
{
-private:
- typedef typename T::tail_type Next;
-public:
- typedef const typename element_impl<N-1, Next, true>::type type;
-};
-
-template<class T>
-struct element_impl<0, T, false /* IsConst */>
-{
- typedef typename T::head_type type;
-};
-
-template<class T>
-struct element_impl<0, T, true /* IsConst */>
-{
- typedef const typename T::head_type type;
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<T>::type::head_type unqualified_type;
+ typedef const unqualified_type type;
};
} // end of namespace detail
typename element<N, cons<HT, TT> >::type
>::non_const_type
get(cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
-#if BOOST_WORKAROUND(__IBMCPP__,==600 )
- return detail::get_class<N>::
-#else
- return detail::get_class<N>::BOOST_NESTED_TEMPLATE
-#endif
- get<
- typename access_traits<
- typename element<N, cons<HT, TT> >::type
- >::non_const_type,
- HT,TT
- >(c);
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<cons<HT, TT> > impl;
+ typedef BOOST_DEDUCED_TYPENAME impl::type cons_element;
+ return const_cast<cons_element&>(impl::call(c)).head;
}
// get function for const cons-lists, returns a const reference to
typename element<N, cons<HT, TT> >::type
>::const_type
get(const cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
-#if BOOST_WORKAROUND(__IBMCPP__,==600)
- return detail::get_class<N>::
-#else
- return detail::get_class<N>::BOOST_NESTED_TEMPLATE
-#endif
- get<
- typename access_traits<
- typename element<N, cons<HT, TT> >::type
- >::const_type,
- HT,TT
- >(c);
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<cons<HT, TT> > impl;
+ typedef BOOST_DEDUCED_TYPENAME impl::type cons_element;
+ return impl::call(c).head;
}
// -- the cons template --------------------------------------------------
// Swallows any assignment (by Doug Gregor)
namespace detail {
+struct swallow_assign;
+typedef void (detail::swallow_assign::*ignore_t)();
struct swallow_assign {
-
+ swallow_assign(ignore_t(*)(ignore_t)) {}
template<typename T>
swallow_assign const& operator=(const T&) const {
return *this;
}
};
+
} // namespace detail
// "ignore" allows tuple positions to be ignored when using "tie".
-detail::swallow_assign const ignore = detail::swallow_assign();
+inline detail::ignore_t ignore(detail::ignore_t) { return 0; }
// ---------------------------------------------------------------------------
// The call_traits for make_tuple
typedef T& type;
};
+template<>
+struct make_tuple_traits<detail::ignore_t(detail::ignore_t)> {
+ typedef detail::swallow_assign type;
+};
return t(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9);
}
+namespace detail {
+template<class T>
+struct tie_traits {
+ typedef T& type;
+};
+
+template<>
+struct tie_traits<ignore_t(ignore_t)> {
+ typedef swallow_assign type;
+};
+
+template<>
+struct tie_traits<void> {
+ typedef null_type type;
+};
+
+template <
+ class T0 = void, class T1 = void, class T2 = void,
+ class T3 = void, class T4 = void, class T5 = void,
+ class T6 = void, class T7 = void, class T8 = void,
+ class T9 = void
+>
+struct tie_mapper {
+ typedef
+ tuple<typename tie_traits<T0>::type,
+ typename tie_traits<T1>::type,
+ typename tie_traits<T2>::type,
+ typename tie_traits<T3>::type,
+ typename tie_traits<T4>::type,
+ typename tie_traits<T5>::type,
+ typename tie_traits<T6>::type,
+ typename tie_traits<T7>::type,
+ typename tie_traits<T8>::type,
+ typename tie_traits<T9>::type> type;
+};
+
+}
// Tie function templates -------------------------------------------------
-template<class T1>
-inline tuple<T1&> tie(T1& t1) {
- return tuple<T1&> (t1);
+template<class T0>
+inline typename detail::tie_mapper<T0>::type
+tie(T0& t0) {
+ typedef typename detail::tie_mapper<T0>::type t;
+ return t(t0);
}
-template<class T1, class T2>
-inline tuple<T1&, T2&> tie(T1& t1, T2& t2) {
- return tuple<T1&, T2&> (t1, t2);
+template<class T0, class T1>
+inline typename detail::tie_mapper<T0, T1>::type
+tie(T0& t0, T1& t1) {
+ typedef typename detail::tie_mapper<T0, T1>::type t;
+ return t(t0, t1);
}
-template<class T1, class T2, class T3>
-inline tuple<T1&, T2&, T3&> tie(T1& t1, T2& t2, T3& t3) {
- return tuple<T1&, T2&, T3&> (t1, t2, t3);
+template<class T0, class T1, class T2>
+inline typename detail::tie_mapper<T0, T1, T2>::type
+tie(T0& t0, T1& t1, T2& t2) {
+ typedef typename detail::tie_mapper<T0, T1, T2>::type t;
+ return t(t0, t1, t2);
}
-template<class T1, class T2, class T3, class T4>
-inline tuple<T1&, T2&, T3&, T4&> tie(T1& t1, T2& t2, T3& t3, T4& t4) {
- return tuple<T1&, T2&, T3&, T4&> (t1, t2, t3, t4);
+template<class T0, class T1, class T2, class T3>
+inline typename detail::tie_mapper<T0, T1, T2, T3>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3) {
+ typedef typename detail::tie_mapper<T0, T1, T2, T3>::type t;
+ return t(t0, t1, t2, t3);
}
-template<class T1, class T2, class T3, class T4, class T5>
-inline tuple<T1&, T2&, T3&, T4&, T5&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5) {
- return tuple<T1&, T2&, T3&, T4&, T5&> (t1, t2, t3, t4, t5);
+template<class T0, class T1, class T2, class T3, class T4>
+inline typename detail::tie_mapper<T0, T1, T2, T3, T4>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4) {
+ typedef typename detail::tie_mapper<T0, T1, T2, T3, T4>::type t;
+ return t(t0, t1, t2, t3, t4);
}
-template<class T1, class T2, class T3, class T4, class T5, class T6>
-inline tuple<T1&, T2&, T3&, T4&, T5&, T6&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6) {
- return tuple<T1&, T2&, T3&, T4&, T5&, T6&> (t1, t2, t3, t4, t5, t6);
+template<class T0, class T1, class T2, class T3, class T4, class T5>
+inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4, T5& t5) {
+ typedef typename detail::tie_mapper<T0, T1, T2, T3, T4, T5>::type t;
+ return t(t0, t1, t2, t3, t4, t5);
}
-template<class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7) {
- return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&> (t1, t2, t3, t4, t5, t6, t7);
+template<class T0, class T1, class T2, class T3, class T4, class T5, class T6>
+inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5, T6>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4, T5& t5, T6& t6) {
+ typedef typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6>::type t;
+ return t(t0, t1, t2, t3, t4, t5, t6);
+}
+
+template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
+ class T7>
+inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5, T6, T7>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4, T5& t5, T6& t6, T7& t7) {
+ typedef typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6, T7>::type t;
+ return t(t0, t1, t2, t3, t4, t5, t6, t7);
}
-template<class T1, class T2, class T3, class T4, class T5, class T6, class T7,
- class T8>
-inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8) {
- return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&>
- (t1, t2, t3, t4, t5, t6, t7, t8);
+template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
+ class T7, class T8>
+inline typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6, T7, T8>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4, T5& t5, T6& t6, T7& t7,
+ T8& t8) {
+ typedef typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6, T7, T8>::type t;
+ return t(t0, t1, t2, t3, t4, t5, t6, t7, t8);
}
-template<class T1, class T2, class T3, class T4, class T5, class T6, class T7,
- class T8, class T9>
-inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8,
- T9& t9) {
- return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&>
- (t1, t2, t3, t4, t5, t6, t7, t8, t9);
+template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
+ class T7, class T8, class T9>
+inline typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4, T5& t5, T6& t6, T7& t7,
+ T8& t8, T9& t9) {
+ typedef typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type t;
+ return t(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9);
}
-template<class T1, class T2, class T3, class T4, class T5, class T6, class T7,
- class T8, class T9, class T10>
-inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8,
- T9& t9, T10& t10) {
- return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&>
- (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
+template <class T0, class T1, class T2, class T3, class T4,
+ class T5, class T6, class T7, class T8, class T9>
+void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs,
+ tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs);
+inline void swap(null_type&, null_type&) {}
+template<class HH>
+inline void swap(cons<HH, null_type>& lhs, cons<HH, null_type>& rhs) {
+ ::boost::swap(lhs.head, rhs.head);
+}
+template<class HH, class TT>
+inline void swap(cons<HH, TT>& lhs, cons<HH, TT>& rhs) {
+ ::boost::swap(lhs.head, rhs.head);
+ ::boost::tuples::swap(lhs.tail, rhs.tail);
+}
+template <class T0, class T1, class T2, class T3, class T4,
+ class T5, class T6, class T7, class T8, class T9>
+inline void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs,
+ tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs) {
+ typedef tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> tuple_type;
+ typedef typename tuple_type::inherited base;
+ ::boost::tuples::swap(static_cast<base&>(lhs), static_cast<base&>(rhs));
}
} // end of namespace tuples
#define BOOST_TUPLE_BASIC_NO_PARTIAL_SPEC_HPP
#include "boost/type_traits.hpp"
+#include "boost/utility/swap.hpp"
#include <utility>
#if defined BOOST_MSVC
detail::swallow_assign const ignore = detail::swallow_assign();
+template <class T0, class T1, class T2, class T3, class T4,
+ class T5, class T6, class T7, class T8, class T9>
+void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs,
+ tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs);
+inline void swap(null_type&, null_type&) {}
+template<class HH>
+inline void swap(cons<HH, null_type>& lhs, cons<HH, null_type>& rhs) {
+ ::boost::swap(lhs.head, rhs.head);
+}
+template<class HH, class TT>
+inline void swap(cons<HH, TT>& lhs, cons<HH, TT>& rhs) {
+ ::boost::swap(lhs.head, rhs.head);
+ ::boost::tuples::swap(lhs.tail, rhs.tail);
+}
+template <class T0, class T1, class T2, class T3, class T4,
+ class T5, class T6, class T7, class T8, class T9>
+inline void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs,
+ tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs) {
+ typedef tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> tuple_type;
+ typedef typename tuple_type::inherited base;
+ ::boost::tuples::swap(static_cast<base&>(lhs), static_cast<base&>(rhs));
+}
+
} // namespace tuples
} // namespace boost
#endif // BOOST_TUPLE_BASIC_NO_PARTIAL_SPEC_HPP
-// (C) Copyright John Maddock 2000.
+// (C) Copyright John Maddock 2000.
// Use, modification and distribution are subject to 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).
#include "boost/type_traits/add_const.hpp"
#include "boost/type_traits/add_cv.hpp"
+#include "boost/type_traits/add_lvalue_reference.hpp"
#include "boost/type_traits/add_pointer.hpp"
#include "boost/type_traits/add_reference.hpp"
+#include "boost/type_traits/add_rvalue_reference.hpp"
#include "boost/type_traits/add_volatile.hpp"
+#include "boost/type_traits/aligned_storage.hpp"
#include "boost/type_traits/alignment_of.hpp"
+#include "boost/type_traits/common_type.hpp"
+#include "boost/type_traits/conditional.hpp"
+#include "boost/type_traits/decay.hpp"
+#include "boost/type_traits/extent.hpp"
+#include "boost/type_traits/floating_point_promotion.hpp"
+#include "boost/type_traits/function_traits.hpp"
#if !defined(__BORLANDC__) && !defined(__CUDACC__)
#include "boost/type_traits/has_new_operator.hpp"
#endif
#include "boost/type_traits/has_nothrow_constructor.hpp"
#include "boost/type_traits/has_nothrow_copy.hpp"
#include "boost/type_traits/has_nothrow_destructor.hpp"
+#include <boost/type_traits/has_operator.hpp>
#include "boost/type_traits/has_trivial_assign.hpp"
#include "boost/type_traits/has_trivial_constructor.hpp"
#include "boost/type_traits/has_trivial_copy.hpp"
#include "boost/type_traits/has_trivial_destructor.hpp"
+#include "boost/type_traits/has_trivial_move_assign.hpp"
+#include "boost/type_traits/has_trivial_move_constructor.hpp"
#include "boost/type_traits/has_virtual_destructor.hpp"
-#include "boost/type_traits/is_signed.hpp"
-#include "boost/type_traits/is_unsigned.hpp"
#include "boost/type_traits/is_abstract.hpp"
#include "boost/type_traits/is_arithmetic.hpp"
#include "boost/type_traits/is_array.hpp"
#include "boost/type_traits/is_base_and_derived.hpp"
#include "boost/type_traits/is_base_of.hpp"
#include "boost/type_traits/is_class.hpp"
+#include <boost/type_traits/is_complex.hpp>
#include "boost/type_traits/is_compound.hpp"
#include "boost/type_traits/is_const.hpp"
#include "boost/type_traits/is_convertible.hpp"
+#include "boost/type_traits/is_copy_constructible.hpp"
#include "boost/type_traits/is_empty.hpp"
#include "boost/type_traits/is_enum.hpp"
#include "boost/type_traits/is_float.hpp"
#include "boost/type_traits/is_function.hpp"
#include "boost/type_traits/is_fundamental.hpp"
#include "boost/type_traits/is_integral.hpp"
+#include "boost/type_traits/is_lvalue_reference.hpp"
#include "boost/type_traits/is_member_function_pointer.hpp"
#include "boost/type_traits/is_member_object_pointer.hpp"
#include "boost/type_traits/is_member_pointer.hpp"
+#include "boost/type_traits/is_nothrow_move_assignable.hpp"
+#include "boost/type_traits/is_nothrow_move_constructible.hpp"
#include "boost/type_traits/is_object.hpp"
#include "boost/type_traits/is_pod.hpp"
#include "boost/type_traits/is_polymorphic.hpp"
#include "boost/type_traits/is_pointer.hpp"
#include "boost/type_traits/is_reference.hpp"
#include "boost/type_traits/is_rvalue_reference.hpp"
-#include "boost/type_traits/is_lvalue_reference.hpp"
+#include "boost/type_traits/is_signed.hpp"
#include "boost/type_traits/is_same.hpp"
#include "boost/type_traits/is_scalar.hpp"
#include "boost/type_traits/is_stateless.hpp"
#include "boost/type_traits/is_union.hpp"
+#include "boost/type_traits/is_unsigned.hpp"
#include "boost/type_traits/is_void.hpp"
#include "boost/type_traits/is_virtual_base_of.hpp"
#include "boost/type_traits/is_volatile.hpp"
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/type_traits/make_signed.hpp>
#include "boost/type_traits/rank.hpp"
-#include "boost/type_traits/extent.hpp"
#include "boost/type_traits/remove_bounds.hpp"
#include "boost/type_traits/remove_extent.hpp"
#include "boost/type_traits/remove_all_extents.hpp"
#include "boost/type_traits/remove_reference.hpp"
#include "boost/type_traits/remove_volatile.hpp"
#include "boost/type_traits/type_with_alignment.hpp"
-#include "boost/type_traits/function_traits.hpp"
-#include "boost/type_traits/aligned_storage.hpp"
-#include "boost/type_traits/floating_point_promotion.hpp"
#if !(defined(__sgi) && defined(__EDG_VERSION__) && (__EDG_VERSION__ == 238))
#include "boost/type_traits/integral_promotion.hpp"
#include "boost/type_traits/promote.hpp"
#endif
-#include <boost/type_traits/make_unsigned.hpp>
-#include <boost/type_traits/make_signed.hpp>
-#include <boost/type_traits/decay.hpp>
-#include <boost/type_traits/is_complex.hpp>
#include "boost/type_traits/ice.hpp"
#endif // BOOST_TYPE_TRAITS_HPP
-
-
-
-
--- /dev/null
+// Copyright 2010 John Maddock
+
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+#ifndef BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP
+#define BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP
+
+#include <boost/type_traits/add_reference.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost{
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_lvalue_reference,T,typename boost::add_reference<T>::type)
+
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_lvalue_reference,T&&,T&)
+#endif
+
+}
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP
typedef T& type;
};
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template <typename T>
struct add_reference_rvalue_layer<T&&>
{
--- /dev/null
+// add_rvalue_reference.hpp ---------------------------------------------------------//
+
+// Copyright 2010 Vicente J. Botet Escriba
+
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+#ifndef BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
+#define BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
+
+#include <boost/config.hpp>
+
+//----------------------------------------------------------------------------//
+
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/is_reference.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+//----------------------------------------------------------------------------//
+// //
+// C++03 implementation of //
+// 20.9.7.2 Reference modifications [meta.trans.ref] //
+// Written by Vicente J. Botet Escriba //
+// //
+// If T names an object or function type then the member typedef type
+// shall name T&&; otherwise, type shall name T. [ Note: This rule reflects
+// the semantics of reference collapsing. For example, when a type T names
+// a type T1&, the type add_rvalue_reference<T>::type is not an rvalue
+// reference. -end note ]
+//----------------------------------------------------------------------------//
+
+namespace boost {
+
+namespace type_traits_detail {
+
+ template <typename T, bool b>
+ struct add_rvalue_reference_helper
+ { typedef T type; };
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ template <typename T>
+ struct add_rvalue_reference_helper<T, true>
+ {
+ typedef T&& type;
+ };
+#endif
+
+ template <typename T>
+ struct add_rvalue_reference_imp
+ {
+ typedef typename boost::type_traits_detail::add_rvalue_reference_helper
+ <T, (is_void<T>::value == false && is_reference<T>::value == false) >::type type;
+ };
+
+}
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_rvalue_reference,T,typename boost::type_traits_detail::add_rvalue_reference_imp<T>::type)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
+
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
template <typename T>
struct alignment_of<T&>
- : alignment_of<T*>
+ : public alignment_of<T*>
{
};
#endif
+++ /dev/null
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to 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).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-//
-// defines traits classes for arithmetic types:
-// is_void, is_integral, is_float, is_arithmetic, is_fundamental.
-
-#ifndef BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
-#define BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
-
-#include <boost/type_traits/is_arithmetic.hpp>
-#include <boost/type_traits/is_float.hpp>
-#include <boost/type_traits/is_fundamental.hpp>
-#include <boost/type_traits/is_integral.hpp>
-#include <boost/type_traits/is_void.hpp>
-
-#endif // BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
--- /dev/null
+// common_type.hpp ---------------------------------------------------------//
+
+// Copyright 2008 Howard Hinnant
+// Copyright 2008 Beman Dawes
+
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+#ifndef BOOST_TYPE_TRAITS_COMMON_TYPE_HPP
+#define BOOST_TYPE_TRAITS_COMMON_TYPE_HPP
+
+#include <boost/config.hpp>
+
+#if defined(__SUNPRO_CC) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF)
+# define BOOST_COMMON_TYPE_DONT_USE_TYPEOF
+#endif
+#if defined(__IBMCPP__) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF)
+# define BOOST_COMMON_TYPE_DONT_USE_TYPEOF
+#endif
+
+//----------------------------------------------------------------------------//
+#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_COMMON_TYPE_ARITY)
+#define BOOST_COMMON_TYPE_ARITY 3
+#endif
+
+//----------------------------------------------------------------------------//
+#if defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF)
+#include <boost/typeof/typeof.hpp> // boost wonders never cease!
+#endif
+
+//----------------------------------------------------------------------------//
+#ifndef BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_COMMON_TYPE_STATIC_ASSERT(CND, MSG, TYPES) static_assert(CND,MSG)
+#elif defined(BOOST_COMMON_TYPE_USES_MPL_ASSERT)
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/bool.hpp>
+#define BOOST_COMMON_TYPE_STATIC_ASSERT(CND, MSG, TYPES) \
+ BOOST_MPL_ASSERT_MSG(boost::mpl::bool_< (CND) >::type::value, MSG, TYPES)
+#else
+#include <boost/static_assert.hpp>
+#define BOOST_COMMON_TYPE_STATIC_ASSERT(CND, MSG, TYPES) BOOST_STATIC_ASSERT(CND)
+#endif
+
+#if !defined(BOOST_NO_CXX11_STATIC_ASSERT) || !defined(BOOST_COMMON_TYPE_USES_MPL_ASSERT)
+#define BOOST_COMMON_TYPE_MUST_BE_A_COMPLE_TYPE "must be complete type"
+#endif
+
+#if defined(BOOST_NO_CXX11_DECLTYPE) && defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF)
+#include <boost/type_traits/detail/common_type_imp.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#endif
+#include <boost/mpl/if.hpp>
+#include <boost/utility/declval.hpp>
+#include <boost/type_traits/add_rvalue_reference.hpp>
+
+//----------------------------------------------------------------------------//
+// //
+// C++03 implementation of //
+// 20.9.7.6 Other transformations [meta.trans.other] //
+// Written by Howard Hinnant //
+// Adapted for Boost by Beman Dawes, Vicente Botet and Jeffrey Hellrung //
+// //
+//----------------------------------------------------------------------------//
+
+namespace boost {
+
+// prototype
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+ template<typename... T>
+ struct common_type;
+#else // or no specialization
+ template <class T, class U = void, class V = void>
+ struct common_type
+ {
+ public:
+ typedef typename common_type<typename common_type<T, U>::type, V>::type type;
+ };
+#endif
+
+
+// 1 arg
+ template<typename T>
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+ struct common_type<T>
+#else
+ struct common_type<T, void, void>
+
+#endif
+ {
+ BOOST_COMMON_TYPE_STATIC_ASSERT(sizeof(T) > 0, BOOST_COMMON_TYPE_MUST_BE_A_COMPLE_TYPE, (T));
+ public:
+ typedef T type;
+ };
+
+// 2 args
+namespace type_traits_detail {
+
+ template <class T, class U>
+ struct common_type_2
+ {
+ private:
+ BOOST_COMMON_TYPE_STATIC_ASSERT(sizeof(T) > 0, BOOST_COMMON_TYPE_MUST_BE_A_COMPLE_TYPE, (T));
+ BOOST_COMMON_TYPE_STATIC_ASSERT(sizeof(U) > 0, BOOST_COMMON_TYPE_MUST_BE_A_COMPLE_TYPE, (U));
+ static bool declval_bool(); // workaround gcc bug; not required by std
+ static typename add_rvalue_reference<T>::type declval_T(); // workaround gcc bug; not required by std
+ static typename add_rvalue_reference<U>::type declval_U(); // workaround gcc bug; not required by std
+ static typename add_rvalue_reference<bool>::type declval_b();
+
+#if !defined(BOOST_NO_CXX11_DECLTYPE)
+ public:
+ typedef decltype(declval<bool>() ? declval<T>() : declval<U>()) type;
+#elif defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF)
+ public:
+ typedef typename detail_type_traits_common_type::common_type_impl<
+ typename remove_cv<T>::type,
+ typename remove_cv<U>::type
+ >::type type;
+#else
+ public:
+ typedef BOOST_TYPEOF_TPL(declval_b() ? declval_T() : declval_U()) type;
+#endif
+
+#if defined(__GNUC__) && __GNUC__ == 3 && (__GNUC_MINOR__ == 2 || __GNUC_MINOR__ == 3)
+ public:
+ void public_dummy_function_just_to_silence_warning();
+#endif
+ };
+
+ template <class T>
+ struct common_type_2<T, T>
+ {
+ typedef T type;
+ };
+ }
+
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+ template <class T, class U>
+ struct common_type<T, U>
+#else
+ template <class T, class U>
+ struct common_type<T, U, void>
+#endif
+ : public type_traits_detail::common_type_2<T,U>
+ { };
+
+
+// 3 or more args
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+ template<typename T, typename U, typename... V>
+ struct common_type<T, U, V...> {
+ public:
+ typedef typename common_type<typename common_type<T, U>::type, V...>::type type;
+ };
+#endif
+} // namespace boost
+
+#endif // BOOST_TYPE_TRAITS_COMMON_TYPE_HPP
+++ /dev/null
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to 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).
-//
-// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-//
-// defines traits classes for composite types:
-// is_array, is_pointer, is_reference, is_member_pointer, is_enum, is_union.
-//
-
-#ifndef BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED
-#define BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED
-
-#include <boost/type_traits/is_array.hpp>
-#include <boost/type_traits/is_enum.hpp>
-#include <boost/type_traits/is_member_pointer.hpp>
-#include <boost/type_traits/is_member_function_pointer.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/type_traits/is_reference.hpp>
-#include <boost/type_traits/is_union.hpp>
-
-#endif // BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED
-
-
-
-
-
--- /dev/null
+
+// (C) Copyright John Maddock 2010.
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_CONDITIONAL_HPP_INCLUDED
+#define BOOST_TT_CONDITIONAL_HPP_INCLUDED
+
+#include <boost/mpl/if.hpp>
+
+namespace boost {
+
+template <bool b, class T, class U>
+struct conditional : public mpl::if_c<b, T, U>
+{
+};
+
+} // namespace boost
+
+
+#endif // BOOST_TT_CONDITIONAL_HPP_INCLUDED
#include <boost/detail/workaround.hpp>
//
-// whenever we have a conversion function with elipses
+// whenever we have a conversion function with ellipses
// it needs to be declared __cdecl to suppress compiler
// warnings from MS and Borland compilers (this *must*
// appear before we include is_same.hpp below):
--- /dev/null
+
+// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
+// Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
+#define BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
+
+#include <boost/type_traits/is_convertible.hpp>
+
+#endif // BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2006-07-12 07:10:22 -0400 (Wed, 12 Jul 2006) $
-// $Revision: 34511 $
+// $Date: 2011-10-09 15:28:33 -0700 (Sun, 09 Oct 2011) $
+// $Revision: 74865 $
#include <boost/type_traits/detail/template_arity_spec.hpp>
#include <boost/type_traits/integral_constant.hpp>
#endif
#ifndef BOOST_TT_AUX_BOOL_C_BASE
-# define BOOST_TT_AUX_BOOL_C_BASE(C) : ::boost::integral_constant<bool,C>
+# define BOOST_TT_AUX_BOOL_C_BASE(C) : public ::boost::integral_constant<bool,C>
#endif
template< typename T > struct trait \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
}; \
template< typename T1, typename T2 > struct trait \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT(2,trait,(T1,T2)) \
}; \
BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(2,trait) \
/**/
+#define BOOST_TT_AUX_BOOL_TRAIT_DEF3(trait,T1,T2,T3,C) \
+template< typename T1, typename T2, typename T3 > struct trait \
+ BOOST_TT_AUX_BOOL_C_BASE(C) \
+{ \
+public:\
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3,trait,(T1,T2,T3)) \
+}; \
+\
+BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(3,trait) \
+/**/
+
#define BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,C) \
template<> struct trait< sp > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(sp)) \
}; \
template<> struct trait< sp1,sp2 > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,trait,(sp1,sp2)) \
}; \
#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(trait,sp,C) \
template<> struct trait##_impl< sp > \
{ \
+public:\
BOOST_STATIC_CONSTANT(bool, value = (C)); \
}; \
/**/
#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,sp1,sp2,C) \
template<> struct trait##_impl< sp1,sp2 > \
{ \
+public:\
BOOST_STATIC_CONSTANT(bool, value = (C)); \
}; \
/**/
template< param > struct trait< sp > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
}; \
/**/
template< param1, param2 > struct trait< sp > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
}; \
/**/
template< param > struct trait< sp1,sp2 > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,trait,(sp1,sp2)) \
}; \
template< param1, param2 > struct trait< sp1,sp2 > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
}; \
/**/
#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(param,trait,sp1,sp2,C) \
template< param > struct trait##_impl< sp1,sp2 > \
{ \
+public:\
BOOST_STATIC_CONSTANT(bool, value = (C)); \
}; \
/**/
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
-// $Revision: 24874 $
+// $Date: 2011-10-09 15:28:33 -0700 (Sun, 09 Oct 2011) $
+// $Revision: 74865 $
#undef BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL
#undef BOOST_TT_AUX_BOOL_C_BASE
#undef BOOST_TT_AUX_BOOL_TRAIT_DEF1
#undef BOOST_TT_AUX_BOOL_TRAIT_DEF2
+#undef BOOST_TT_AUX_BOOL_TRAIT_DEF3
#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC1
#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC2
#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1
--- /dev/null
+/*******************************************************************************
+ * boost/type_traits/detail/common_type_imp.hpp
+ *
+ * Copyright 2010, Jeffrey Hellrung.
+ * 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)
+ *
+ * struct boost::common_type<T,U>
+ *
+ * common_type<T,U>::type is the type of the expression
+ * b() ? x() : y()
+ * where b() returns a bool, x() has return type T, and y() has return type U.
+ * See
+ * http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2661.htm#common_type
+ *
+ * Note that this evaluates to void if one or both of T and U is void.
+ ******************************************************************************/
+
+#ifndef BOOST_TYPE_TRAITS_DETAIL_COMMON_TYPE_IMP_HPP
+#define BOOST_TYPE_TRAITS_DETAIL_COMMON_TYPE_IMP_HPP
+
+#include <cstddef>
+
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/begin_end.hpp>
+#include <boost/mpl/contains.hpp>
+#include <boost/mpl/copy.hpp>
+#include <boost/mpl/deref.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/inserter.hpp>
+#include <boost/mpl/next.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/mpl/push_back.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/mpl/vector/vector0.hpp>
+#include <boost/mpl/vector/vector10.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/make_signed.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/utility/declval.hpp>
+
+namespace boost
+{
+
+namespace detail_type_traits_common_type
+{
+
+/*******************************************************************************
+ * struct propagate_cv< From, To >
+ *
+ * This metafunction propagates cv-qualifiers on type From to type To.
+ ******************************************************************************/
+
+template< class From, class To >
+struct propagate_cv
+{ typedef To type; };
+template< class From, class To >
+struct propagate_cv< const From, To >
+{ typedef To const type; };
+template< class From, class To >
+struct propagate_cv< volatile From, To >
+{ typedef To volatile type; };
+template< class From, class To >
+struct propagate_cv< const volatile From, To >
+{ typedef To const volatile type; };
+
+/*******************************************************************************
+ * struct is_integral_or_enum<T>
+ *
+ * This metafunction determines if T is an integral type which can be made
+ * signed or unsigned.
+ ******************************************************************************/
+
+template< class T >
+struct is_integral_or_enum
+ : public mpl::or_< is_integral<T>, is_enum<T> >
+{ };
+template<>
+struct is_integral_or_enum< bool >
+ : public false_type
+{ };
+
+/*******************************************************************************
+ * struct make_unsigned_soft<T>
+ * struct make_signed_soft<T>
+ *
+ * These metafunction are identical to make_unsigned and make_signed,
+ * respectively, except for special-casing bool.
+ ******************************************************************************/
+
+template< class T >
+struct make_unsigned_soft
+ : public make_unsigned<T>
+{ };
+template<>
+struct make_unsigned_soft< bool >
+{ typedef bool type; };
+
+template< class T >
+struct make_signed_soft
+ : public make_signed<T>
+{ };
+template<>
+struct make_signed_soft< bool >
+{ typedef bool type; };
+
+/*******************************************************************************
+ * struct sizeof_t<N>
+ * typedef ... yes_type
+ * typedef ... no_type
+ *
+ * These types are integral players in the use of the "sizeof trick", i.e., we
+ * can distinguish overload selection by inspecting the size of the return type
+ * of the overload.
+ ******************************************************************************/
+
+template< std::size_t N > struct sizeof_t { char _dummy[N]; };
+typedef sizeof_t<1> yes_type;
+typedef sizeof_t<2> no_type;
+BOOST_MPL_ASSERT_RELATION( sizeof( yes_type ), ==, 1 );
+BOOST_MPL_ASSERT_RELATION( sizeof( no_type ), ==, 2 );
+
+/*******************************************************************************
+ * rvalue_test(T&) -> no_type
+ * rvalue_test(...) -> yes_type
+ *
+ * These overloads are used to determine the rvalue-ness of an expression.
+ ******************************************************************************/
+
+template< class T > no_type rvalue_test(T&);
+yes_type rvalue_test(...);
+
+/*******************************************************************************
+ * struct conversion_test_overloads< Sequence >
+ *
+ * This struct has multiple overloads of the static member function apply, each
+ * one taking a single parameter of a type within the Boost.MPL sequence
+ * Sequence. Each such apply overload has a return type with sizeof equal to
+ * one plus the index of the parameter type within Sequence. Thus, we can
+ * deduce the type T of an expression as long as we can generate a finite set of
+ * candidate types containing T via these apply overloads and the "sizeof
+ * trick".
+ ******************************************************************************/
+
+template< class First, class Last, std::size_t Index >
+struct conversion_test_overloads_iterate
+ : public conversion_test_overloads_iterate<
+ typename mpl::next< First >::type, Last, Index + 1
+ >
+{
+ using conversion_test_overloads_iterate<
+ typename mpl::next< First >::type, Last, Index + 1
+ >::apply;
+ static sizeof_t< Index + 1 >
+ apply(typename mpl::deref< First >::type);
+};
+
+template< class Last, std::size_t Index >
+struct conversion_test_overloads_iterate< Last, Last, Index >
+{ static sizeof_t< Index + 1 > apply(...); };
+
+template< class Sequence >
+struct conversion_test_overloads
+ : public conversion_test_overloads_iterate<
+ typename mpl::begin< Sequence >::type,
+ typename mpl::end< Sequence >::type,
+ 0
+ >
+{ };
+
+/*******************************************************************************
+ * struct select< Sequence, Index >
+ *
+ * select is synonymous with mpl::at_c unless Index equals the size of the
+ * Boost.MPL Sequence, in which case this evaluates to void.
+ ******************************************************************************/
+
+template<
+ class Sequence, int Index,
+ int N = mpl::size< Sequence >::value
+>
+struct select
+ : public mpl::at_c< Sequence, Index >
+{ };
+template< class Sequence, int N >
+struct select< Sequence, N, N >
+{ typedef void type; };
+
+/*******************************************************************************
+ * class deduce_common_type< T, U, NominalCandidates >
+ * struct nominal_candidates<T,U>
+ * struct common_type_dispatch_on_rvalueness<T,U>
+ * struct common_type_impl<T,U>
+ *
+ * These classes and structs implement the logic behind common_type, which goes
+ * roughly as follows. Let C be the type of the conditional expression
+ * declval< bool >() ? declval<T>() : declval<U>()
+ * if C is an rvalue, then:
+ * let T' and U' be T and U stripped of reference- and cv-qualifiers
+ * if T' and U' are pointer types, say, T' = V* and U' = W*, then:
+ * define the set of NominalCandidates to be
+ * { V*, W*, V'*, W'* }
+ * where V' is V with whatever cv-qualifiers are on W, and W' is W
+ * with whatever cv-qualifiers are on V
+ * else if T' and U' are both integral or enum types, then:
+ * define the set of NominalCandidates to be
+ * {
+ * unsigned_soft(T'),
+ * unsigned_soft(U'),
+ * signed_soft(T'),
+ * signed_soft(U'),
+ * T',
+ * U',
+ * unsigned int,
+ * int
+ * }
+ * where unsigned_soft(X) is make_unsigned_soft<X>::type and
+ * signed_soft(X) is make_signed_soft<X>::type (these are all
+ * generally necessary to cover the various integral promotion cases)
+ * else
+ * define the set of NominalCandidates to be
+ * { T', U' }
+ * else
+ * let V and W be T and U stripped of reference-qualifiers
+ * define the set of NominalCandidates to be
+ * { V&, W&, V'&, W'& }
+ * where V' is V with whatever cv-qualifiers are on W, and W' is W with
+ * whatever cv-qualifiers are on V
+ * define the set of Candidates to be equal to the set of NominalCandidates with
+ * duplicates removed, and use this set of Candidates to determine C using the
+ * conversion_test_overloads struct
+ ******************************************************************************/
+
+template< class T, class U, class NominalCandidates >
+class deduce_common_type
+{
+ typedef typename mpl::copy<
+ NominalCandidates,
+ mpl::inserter<
+ mpl::vector0<>,
+ mpl::if_<
+ mpl::contains< mpl::_1, mpl::_2 >,
+ mpl::_1,
+ mpl::push_back< mpl::_1, mpl::_2 >
+ >
+ >
+ >::type candidate_types;
+ static const int best_candidate_index =
+ sizeof( conversion_test_overloads< candidate_types >::apply(
+ declval< bool >() ? declval<T>() : declval<U>()
+ ) ) - 1;
+public:
+ typedef typename select< candidate_types, best_candidate_index >::type type;
+};
+
+template<
+ class T, class U,
+ class V = typename remove_cv< typename remove_reference<T>::type >::type,
+ class W = typename remove_cv< typename remove_reference<U>::type >::type,
+ bool = is_integral_or_enum<V>::value && is_integral_or_enum<W>::value
+>
+struct nominal_candidates
+{ typedef mpl::vector2<V,W> type; };
+
+template< class T, class U, class V, class W >
+struct nominal_candidates< T, U, V, W, true >
+{
+ typedef boost::mpl::vector8<
+ typename make_unsigned_soft<V>::type,
+ typename make_unsigned_soft<W>::type,
+ typename make_signed_soft<V>::type,
+ typename make_signed_soft<W>::type,
+ V, W, unsigned int, int
+ > type;
+};
+
+template< class T, class U, class V, class W >
+struct nominal_candidates< T, U, V*, W*, false >
+{
+ typedef mpl::vector4<
+ V*, W*,
+ typename propagate_cv<W,V>::type *,
+ typename propagate_cv<V,W>::type *
+ > type;
+};
+
+template<class T, class U, bool b>
+struct common_type_dispatch_on_rvalueness
+ : public deduce_common_type< T, U, typename nominal_candidates<T,U>::type >
+{ };
+
+template< class T, class U >
+struct common_type_dispatch_on_rvalueness< T, U, false >
+{
+private:
+ typedef typename remove_reference<T>::type unrefed_T_type;
+ typedef typename remove_reference<U>::type unrefed_U_type;
+public:
+ typedef typename deduce_common_type<
+ T, U,
+ mpl::vector4<
+ unrefed_T_type &,
+ unrefed_U_type &,
+ typename propagate_cv< unrefed_U_type, unrefed_T_type >::type &,
+ typename propagate_cv< unrefed_T_type, unrefed_U_type >::type &
+ >
+ >::type type;
+};
+
+template< class T, class U >
+struct common_type_impl
+ : public common_type_dispatch_on_rvalueness<T,U, sizeof( ::boost::detail_type_traits_common_type::rvalue_test(
+ declval< bool >() ? declval<T>() : declval<U>() ) ) == sizeof( yes_type ) >
+{ };
+
+template< class T > struct common_type_impl< T, void > { typedef void type; };
+template< class T > struct common_type_impl< void, T > { typedef void type; };
+template<> struct common_type_impl< void, void > { typedef void type; };
+
+} // namespace detail_type_traits_common_type
+
+
+} // namespace boost
+
+#endif // BOOST_TYPE_TRAITS_DETAIL_COMMON_TYPE_HPP
+
// Use the implementation above for non function pointers
template <typename T, unsigned Select
= (unsigned)sizeof(::boost::type_traits::gcc8503::mini_funcptr_tester((T)0)) >
-struct cv_traits_imp : ::boost::type_traits::gcc8503::cv_traits_imp<T> { };
+struct cv_traits_imp : public ::boost::type_traits::gcc8503::cv_traits_imp<T> { };
// Functions are never cv-qualified
template <typename T> struct cv_traits_imp<T*,1>
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#include <boost/config.hpp>
+#include <boost/type_traits/ice.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_base_of.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+// cannot include this header without getting warnings of the kind:
+// gcc:
+// warning: value computed is not used
+// warning: comparison between signed and unsigned integer expressions
+// msvc:
+// warning C4018: '<' : signed/unsigned mismatch
+// warning C4244: '+=' : conversion from 'double' to 'char', possible loss of data
+// warning C4547: '*' : operator before comma has no effect; expected operator with side-effect
+// warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
+// warning C4804: '<' : unsafe use of type 'bool' in operation
+// warning C4805: '==' : unsafe mix of type 'bool' and type 'char' in operation
+// cannot find another implementation -> declared as system header to suppress these warnings.
+#if defined(__GNUC__) && ((__GNUC__==3 && __GNUC_MINOR__>=1) || (__GNUC__>3))
+# pragma GCC system_header
+#elif defined(BOOST_MSVC)
+# pragma warning ( push )
+# pragma warning ( disable : 4018 4244 4547 4800 4804 4805 4913 )
+#endif
+
+namespace boost {
+namespace detail {
+
+// This namespace ensures that argument-dependent name lookup does not mess things up.
+namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
+
+// 1. a function to have an instance of type T without requiring T to be default
+// constructible
+template <typename T> T &make();
+
+
+// 2. we provide our operator definition for types that do not have one already
+
+// a type returned from operator BOOST_TT_TRAIT_OP when no such operator is
+// found in the type's own namespace (our own operator is used) so that we have
+// a means to know that our operator was used
+struct no_operator { };
+
+// this class allows implicit conversions and makes the following operator
+// definition less-preferred than any other such operators that might be found
+// via argument-dependent name lookup
+struct any { template <class T> any(T const&); };
+
+// when operator BOOST_TT_TRAIT_OP is not available, this one is used
+no_operator operator BOOST_TT_TRAIT_OP (const any&, const any&);
+
+
+// 3. checks if the operator returns void or not
+// conditions: Lhs!=void and Rhs!=void
+
+// we first redefine "operator," so that we have no compilation error if
+// operator BOOST_TT_TRAIT_OP returns void and we can use the return type of
+// (lhs BOOST_TT_TRAIT_OP rhs, returns_void_t()) to deduce if
+// operator BOOST_TT_TRAIT_OP returns void or not:
+// - operator BOOST_TT_TRAIT_OP returns void -> (lhs BOOST_TT_TRAIT_OP rhs, returns_void_t()) returns returns_void_t
+// - operator BOOST_TT_TRAIT_OP returns !=void -> (lhs BOOST_TT_TRAIT_OP rhs, returns_void_t()) returns int
+struct returns_void_t { };
+template <typename T> int operator,(const T&, returns_void_t);
+template <typename T> int operator,(const volatile T&, returns_void_t);
+
+// this intermediate trait has member value of type bool:
+// - value==true -> operator BOOST_TT_TRAIT_OP returns void
+// - value==false -> operator BOOST_TT_TRAIT_OP does not return void
+template < typename Lhs, typename Rhs >
+struct operator_returns_void {
+ // overloads of function returns_void make the difference
+ // yes_type and no_type have different size by construction
+ static ::boost::type_traits::yes_type returns_void(returns_void_t);
+ static ::boost::type_traits::no_type returns_void(int);
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(::boost::type_traits::yes_type)==sizeof(returns_void((make<Lhs>() BOOST_TT_TRAIT_OP make<Rhs>(),returns_void_t())))));
+};
+
+
+// 4. checks if the return type is Ret or Ret==dont_care
+// conditions: Lhs!=void and Rhs!=void
+
+struct dont_care { };
+
+template < typename Lhs, typename Rhs, typename Ret, bool Returns_void >
+struct operator_returns_Ret;
+
+template < typename Lhs, typename Rhs >
+struct operator_returns_Ret < Lhs, Rhs, dont_care, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs, typename Rhs >
+struct operator_returns_Ret < Lhs, Rhs, dont_care, false > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs, typename Rhs >
+struct operator_returns_Ret < Lhs, Rhs, void, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs, typename Rhs >
+struct operator_returns_Ret < Lhs, Rhs, void, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Lhs, typename Rhs, typename Ret >
+struct operator_returns_Ret < Lhs, Rhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// otherwise checks if it is convertible to Ret using the sizeof trick
+// based on overload resolution
+// condition: Ret!=void and Ret!=dont_care and the operator does not return void
+template < typename Lhs, typename Rhs, typename Ret >
+struct operator_returns_Ret < Lhs, Rhs, Ret, false > {
+ static ::boost::type_traits::yes_type is_convertible_to_Ret(Ret); // this version is preferred for types convertible to Ret
+ static ::boost::type_traits::no_type is_convertible_to_Ret(...); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(is_convertible_to_Ret(make<Lhs>() BOOST_TT_TRAIT_OP make<Rhs>()))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 5. checks for operator existence
+// condition: Lhs!=void and Rhs!=void
+
+// checks if our definition of operator BOOST_TT_TRAIT_OP is used or an other
+// existing one;
+// this is done with redefinition of "operator," that returns no_operator or has_operator
+struct has_operator { };
+no_operator operator,(no_operator, has_operator);
+
+template < typename Lhs, typename Rhs >
+struct operator_exists {
+ static ::boost::type_traits::yes_type check(has_operator); // this version is preferred when operator exists
+ static ::boost::type_traits::no_type check(no_operator); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(check(((make<Lhs>() BOOST_TT_TRAIT_OP make<Rhs>()),make<has_operator>())))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 6. main trait: to avoid any compilation error, this class behaves
+// differently when operator BOOST_TT_TRAIT_OP(Lhs, Rhs) is forbidden by the
+// standard.
+// Forbidden_if is a bool that is:
+// - true when the operator BOOST_TT_TRAIT_OP(Lhs, Rhs) is forbidden by the standard
+// (would yield compilation error if used)
+// - false otherwise
+template < typename Lhs, typename Rhs, typename Ret, bool Forbidden_if >
+struct trait_impl1;
+
+template < typename Lhs, typename Rhs, typename Ret >
+struct trait_impl1 < Lhs, Rhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Lhs, typename Rhs, typename Ret >
+struct trait_impl1 < Lhs, Rhs, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool,
+ value = (
+ ::boost::type_traits::ice_and<
+ operator_exists < Lhs, Rhs >::value,
+ operator_returns_Ret < Lhs, Rhs, Ret, operator_returns_void < Lhs, Rhs >::value >::value
+ >::value
+ )
+ );
+};
+
+// some specializations needs to be declared for the special void case
+template < typename Rhs, typename Ret >
+struct trait_impl1 < void, Rhs, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Lhs, typename Ret >
+struct trait_impl1 < Lhs, void, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Ret >
+struct trait_impl1 < void, void, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// defines some typedef for convenience
+template < typename Lhs, typename Rhs, typename Ret >
+struct trait_impl {
+ typedef typename ::boost::remove_reference<Lhs>::type Lhs_noref;
+ typedef typename ::boost::remove_reference<Rhs>::type Rhs_noref;
+ typedef typename ::boost::remove_cv<Lhs_noref>::type Lhs_nocv;
+ typedef typename ::boost::remove_cv<Rhs_noref>::type Rhs_nocv;
+ typedef typename ::boost::remove_cv< typename ::boost::remove_reference< typename ::boost::remove_pointer<Lhs_noref>::type >::type >::type Lhs_noptr;
+ typedef typename ::boost::remove_cv< typename ::boost::remove_reference< typename ::boost::remove_pointer<Rhs_noref>::type >::type >::type Rhs_noptr;
+ BOOST_STATIC_CONSTANT(bool, value = (trait_impl1 < Lhs_noref, Rhs_noref, Ret, BOOST_TT_FORBIDDEN_IF >::value));
+};
+
+} // namespace impl
+} // namespace detail
+
+// this is the accessible definition of the trait to end user
+BOOST_TT_AUX_BOOL_TRAIT_DEF3(BOOST_TT_TRAIT_NAME, Lhs, Rhs=Lhs, Ret=::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::dont_care, (::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::trait_impl < Lhs, Rhs, Ret >::value))
+
+} // namespace boost
+
+#if defined(BOOST_MSVC)
+# pragma warning ( pop )
+#endif
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#include <boost/config.hpp>
+#include <boost/type_traits/ice.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+// avoid warnings
+#if defined(__GNUC__) && ((__GNUC__==3 && __GNUC_MINOR__>=1) || (__GNUC__>3))
+# pragma GCC system_header
+#elif defined(BOOST_MSVC)
+# pragma warning ( push )
+# pragma warning ( disable : 4244 4913 )
+#endif
+
+namespace boost {
+namespace detail {
+
+// This namespace ensures that argument-dependent name lookup does not mess things up.
+namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
+
+// 1. a function to have an instance of type T without requiring T to be default
+// constructible
+template <typename T> T &make();
+
+
+// 2. we provide our operator definition for types that do not have one already
+
+// a type returned from operator BOOST_TT_TRAIT_OP when no such operator is
+// found in the type's own namespace (our own operator is used) so that we have
+// a means to know that our operator was used
+struct no_operator { };
+
+// this class allows implicit conversions and makes the following operator
+// definition less-preferred than any other such operators that might be found
+// via argument-dependent name lookup
+struct any { template <class T> any(T const&); };
+
+// when operator BOOST_TT_TRAIT_OP is not available, this one is used
+no_operator operator BOOST_TT_TRAIT_OP (const any&, int);
+
+
+// 3. checks if the operator returns void or not
+// conditions: Lhs!=void
+
+// we first redefine "operator," so that we have no compilation error if
+// operator BOOST_TT_TRAIT_OP returns void and we can use the return type of
+// (lhs BOOST_TT_TRAIT_OP, returns_void_t()) to deduce if
+// operator BOOST_TT_TRAIT_OP returns void or not:
+// - operator BOOST_TT_TRAIT_OP returns void -> (lhs BOOST_TT_TRAIT_OP, returns_void_t()) returns returns_void_t
+// - operator BOOST_TT_TRAIT_OP returns !=void -> (lhs BOOST_TT_TRAIT_OP, returns_void_t()) returns int
+struct returns_void_t { };
+template <typename T> int operator,(const T&, returns_void_t);
+template <typename T> int operator,(const volatile T&, returns_void_t);
+
+// this intermediate trait has member value of type bool:
+// - value==true -> operator BOOST_TT_TRAIT_OP returns void
+// - value==false -> operator BOOST_TT_TRAIT_OP does not return void
+template < typename Lhs >
+struct operator_returns_void {
+ // overloads of function returns_void make the difference
+ // yes_type and no_type have different size by construction
+ static ::boost::type_traits::yes_type returns_void(returns_void_t);
+ static ::boost::type_traits::no_type returns_void(int);
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(::boost::type_traits::yes_type)==sizeof(returns_void((make<Lhs>() BOOST_TT_TRAIT_OP,returns_void_t())))));
+};
+
+
+// 4. checks if the return type is Ret or Ret==dont_care
+// conditions: Lhs!=void
+
+struct dont_care { };
+
+template < typename Lhs, typename Ret, bool Returns_void >
+struct operator_returns_Ret;
+
+template < typename Lhs >
+struct operator_returns_Ret < Lhs, dont_care, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs >
+struct operator_returns_Ret < Lhs, dont_care, false > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs >
+struct operator_returns_Ret < Lhs, void, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs >
+struct operator_returns_Ret < Lhs, void, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Lhs, typename Ret >
+struct operator_returns_Ret < Lhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// otherwise checks if it is convertible to Ret using the sizeof trick
+// based on overload resolution
+// condition: Ret!=void and Ret!=dont_care and the operator does not return void
+template < typename Lhs, typename Ret >
+struct operator_returns_Ret < Lhs, Ret, false > {
+ static ::boost::type_traits::yes_type is_convertible_to_Ret(Ret); // this version is preferred for types convertible to Ret
+ static ::boost::type_traits::no_type is_convertible_to_Ret(...); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(is_convertible_to_Ret(make<Lhs>() BOOST_TT_TRAIT_OP))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 5. checks for operator existence
+// condition: Lhs!=void
+
+// checks if our definition of operator BOOST_TT_TRAIT_OP is used or an other
+// existing one;
+// this is done with redefinition of "operator," that returns no_operator or has_operator
+struct has_operator { };
+no_operator operator,(no_operator, has_operator);
+
+template < typename Lhs >
+struct operator_exists {
+ static ::boost::type_traits::yes_type check(has_operator); // this version is preferred when operator exists
+ static ::boost::type_traits::no_type check(no_operator); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(check(((make<Lhs>() BOOST_TT_TRAIT_OP),make<has_operator>())))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 6. main trait: to avoid any compilation error, this class behaves
+// differently when operator BOOST_TT_TRAIT_OP(Lhs) is forbidden by the
+// standard.
+// Forbidden_if is a bool that is:
+// - true when the operator BOOST_TT_TRAIT_OP(Lhs) is forbidden by the standard
+// (would yield compilation error if used)
+// - false otherwise
+template < typename Lhs, typename Ret, bool Forbidden_if >
+struct trait_impl1;
+
+template < typename Lhs, typename Ret >
+struct trait_impl1 < Lhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Lhs, typename Ret >
+struct trait_impl1 < Lhs, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool,
+ value = (
+ ::boost::type_traits::ice_and<
+ operator_exists < Lhs >::value,
+ operator_returns_Ret < Lhs, Ret, operator_returns_void < Lhs >::value >::value
+ >::value
+ )
+ );
+};
+
+// specialization needs to be declared for the special void case
+template < typename Ret >
+struct trait_impl1 < void, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// defines some typedef for convenience
+template < typename Lhs, typename Ret >
+struct trait_impl {
+ typedef typename ::boost::remove_reference<Lhs>::type Lhs_noref;
+ typedef typename ::boost::remove_cv<Lhs_noref>::type Lhs_nocv;
+ typedef typename ::boost::remove_cv< typename ::boost::remove_reference< typename ::boost::remove_pointer<Lhs_noref>::type >::type >::type Lhs_noptr;
+ BOOST_STATIC_CONSTANT(bool, value = (trait_impl1 < Lhs_noref, Ret, BOOST_TT_FORBIDDEN_IF >::value));
+};
+
+} // namespace impl
+} // namespace detail
+
+// this is the accessible definition of the trait to end user
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(BOOST_TT_TRAIT_NAME, Lhs, Ret=::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::dont_care, (::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::trait_impl< Lhs, Ret >::value))
+
+} // namespace boost
+
+#if defined(BOOST_MSVC)
+# pragma warning ( pop )
+#endif
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#include <boost/config.hpp>
+#include <boost/type_traits/ice.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+// cannot include this header without getting warnings of the kind:
+// gcc:
+// warning: value computed is not used
+// warning: comparison between signed and unsigned integer expressions
+// msvc:
+// warning C4146: unary minus operator applied to unsigned type, result still unsigned
+// warning C4804: '-' : unsafe use of type 'bool' in operation
+// cannot find another implementation -> declared as system header to suppress these warnings.
+#if defined(__GNUC__) && ((__GNUC__==3 && __GNUC_MINOR__>=1) || (__GNUC__>3))
+# pragma GCC system_header
+#elif defined(BOOST_MSVC)
+# pragma warning ( push )
+# pragma warning ( disable : 4146 4804 4913 4244 )
+#endif
+
+namespace boost {
+namespace detail {
+
+// This namespace ensures that argument-dependent name lookup does not mess things up.
+namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
+
+// 1. a function to have an instance of type T without requiring T to be default
+// constructible
+template <typename T> T &make();
+
+
+// 2. we provide our operator definition for types that do not have one already
+
+// a type returned from operator BOOST_TT_TRAIT_OP when no such operator is
+// found in the type's own namespace (our own operator is used) so that we have
+// a means to know that our operator was used
+struct no_operator { };
+
+// this class allows implicit conversions and makes the following operator
+// definition less-preferred than any other such operators that might be found
+// via argument-dependent name lookup
+struct any { template <class T> any(T const&); };
+
+// when operator BOOST_TT_TRAIT_OP is not available, this one is used
+no_operator operator BOOST_TT_TRAIT_OP (const any&);
+
+
+// 3. checks if the operator returns void or not
+// conditions: Rhs!=void
+
+// we first redefine "operator," so that we have no compilation error if
+// operator BOOST_TT_TRAIT_OP returns void and we can use the return type of
+// (BOOST_TT_TRAIT_OP rhs, returns_void_t()) to deduce if
+// operator BOOST_TT_TRAIT_OP returns void or not:
+// - operator BOOST_TT_TRAIT_OP returns void -> (BOOST_TT_TRAIT_OP rhs, returns_void_t()) returns returns_void_t
+// - operator BOOST_TT_TRAIT_OP returns !=void -> (BOOST_TT_TRAIT_OP rhs, returns_void_t()) returns int
+struct returns_void_t { };
+template <typename T> int operator,(const T&, returns_void_t);
+template <typename T> int operator,(const volatile T&, returns_void_t);
+
+// this intermediate trait has member value of type bool:
+// - value==true -> operator BOOST_TT_TRAIT_OP returns void
+// - value==false -> operator BOOST_TT_TRAIT_OP does not return void
+template < typename Rhs >
+struct operator_returns_void {
+ // overloads of function returns_void make the difference
+ // yes_type and no_type have different size by construction
+ static ::boost::type_traits::yes_type returns_void(returns_void_t);
+ static ::boost::type_traits::no_type returns_void(int);
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(::boost::type_traits::yes_type)==sizeof(returns_void((BOOST_TT_TRAIT_OP make<Rhs>(),returns_void_t())))));
+};
+
+
+// 4. checks if the return type is Ret or Ret==dont_care
+// conditions: Rhs!=void
+
+struct dont_care { };
+
+template < typename Rhs, typename Ret, bool Returns_void >
+struct operator_returns_Ret;
+
+template < typename Rhs >
+struct operator_returns_Ret < Rhs, dont_care, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Rhs >
+struct operator_returns_Ret < Rhs, dont_care, false > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Rhs >
+struct operator_returns_Ret < Rhs, void, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Rhs >
+struct operator_returns_Ret < Rhs, void, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Rhs, typename Ret >
+struct operator_returns_Ret < Rhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// otherwise checks if it is convertible to Ret using the sizeof trick
+// based on overload resolution
+// condition: Ret!=void and Ret!=dont_care and the operator does not return void
+template < typename Rhs, typename Ret >
+struct operator_returns_Ret < Rhs, Ret, false > {
+ static ::boost::type_traits::yes_type is_convertible_to_Ret(Ret); // this version is preferred for types convertible to Ret
+ static ::boost::type_traits::no_type is_convertible_to_Ret(...); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(is_convertible_to_Ret(BOOST_TT_TRAIT_OP make<Rhs>()))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 5. checks for operator existence
+// condition: Rhs!=void
+
+// checks if our definition of operator BOOST_TT_TRAIT_OP is used or an other
+// existing one;
+// this is done with redefinition of "operator," that returns no_operator or has_operator
+struct has_operator { };
+no_operator operator,(no_operator, has_operator);
+
+template < typename Rhs >
+struct operator_exists {
+ static ::boost::type_traits::yes_type check(has_operator); // this version is preferred when operator exists
+ static ::boost::type_traits::no_type check(no_operator); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(check(((BOOST_TT_TRAIT_OP make<Rhs>()),make<has_operator>())))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 6. main trait: to avoid any compilation error, this class behaves
+// differently when operator BOOST_TT_TRAIT_OP(Rhs) is forbidden by the
+// standard.
+// Forbidden_if is a bool that is:
+// - true when the operator BOOST_TT_TRAIT_OP(Rhs) is forbidden by the standard
+// (would yield compilation error if used)
+// - false otherwise
+template < typename Rhs, typename Ret, bool Forbidden_if >
+struct trait_impl1;
+
+template < typename Rhs, typename Ret >
+struct trait_impl1 < Rhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Rhs, typename Ret >
+struct trait_impl1 < Rhs, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool,
+ value = (
+ ::boost::type_traits::ice_and<
+ operator_exists < Rhs >::value,
+ operator_returns_Ret < Rhs, Ret, operator_returns_void < Rhs >::value >::value
+ >::value
+ )
+ );
+};
+
+// specialization needs to be declared for the special void case
+template < typename Ret >
+struct trait_impl1 < void, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// defines some typedef for convenience
+template < typename Rhs, typename Ret >
+struct trait_impl {
+ typedef typename ::boost::remove_reference<Rhs>::type Rhs_noref;
+ typedef typename ::boost::remove_cv<Rhs_noref>::type Rhs_nocv;
+ typedef typename ::boost::remove_cv< typename ::boost::remove_reference< typename ::boost::remove_pointer<Rhs_noref>::type >::type >::type Rhs_noptr;
+ BOOST_STATIC_CONSTANT(bool, value = (trait_impl1 < Rhs_noref, Ret, BOOST_TT_FORBIDDEN_IF >::value));
+};
+
+} // namespace impl
+} // namespace detail
+
+// this is the accessible definition of the trait to end user
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(BOOST_TT_TRAIT_NAME, Rhs, Ret=::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::dont_care, (::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::trait_impl < Rhs, Ret >::value))
+
+} // namespace boost
+
+#if defined(BOOST_MSVC)
+# pragma warning ( pop )
+#endif
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
namespace boost {
namespace type_traits {
-// Note it is acceptible to use ellipsis here, since the argument will
+// Note it is acceptable to use ellipsis here, since the argument will
// always be a pointer type of some sort (JM 2005/06/04):
no_type BOOST_TT_DECL is_function_ptr_tester(...);
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2005-08-25 12:27:28 -0400 (Thu, 25 Aug 2005) $
-// $Revision: 30670 $
+// $Date: 2011-04-25 05:26:48 -0700 (Mon, 25 Apr 2011) $
+// $Revision: 71481 $
#include <boost/type_traits/detail/template_arity_spec.hpp>
#include <boost/type_traits/integral_constant.hpp>
#include <cstddef>
#if !defined(BOOST_MSVC) || BOOST_MSVC >= 1300
-# define BOOST_TT_AUX_SIZE_T_BASE(C) ::boost::integral_constant<std::size_t,C>
+# define BOOST_TT_AUX_SIZE_T_BASE(C) public ::boost::integral_constant<std::size_t,C>
# define BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) /**/
#else
-# define BOOST_TT_AUX_SIZE_T_BASE(C) ::boost::mpl::size_t<C>
+# define BOOST_TT_AUX_SIZE_T_BASE(C) public ::boost::mpl::size_t<C>
# define BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
typedef ::boost::mpl::size_t<C> base_; \
using base_::value; \
template< typename T > struct trait \
: BOOST_TT_AUX_SIZE_T_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
}; \
template<> struct trait<spec> \
: BOOST_TT_AUX_SIZE_T_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(spec)) \
}; \
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
+// $Date: 2004-09-02 08:41:37 -0700 (Thu, 02 Sep 2004) $
// $Revision: 24874 $
#undef BOOST_TT_AUX_SIZE_T_TRAIT_DEF1
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
-// $Revision: 24874 $
+// $Date: 2011-04-25 05:26:48 -0700 (Mon, 25 Apr 2011) $
+// $Revision: 71481 $
#include <boost/type_traits/detail/template_arity_spec.hpp>
#include <boost/mpl/aux_/lambda_support.hpp>
#define BOOST_TT_AUX_TYPE_TRAIT_DEF1(trait,T,result) \
template< typename T > struct trait \
{ \
+public:\
typedef result type; \
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
}; \
#define BOOST_TT_AUX_TYPE_TRAIT_SPEC1(trait,spec,result) \
template<> struct trait<spec> \
{ \
+public:\
typedef result type; \
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(spec)) \
}; \
#define BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(trait,spec,result) \
template<> struct trait##_impl<spec> \
{ \
+public:\
typedef result type; \
}; \
/**/
#define BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(param,trait,spec,result) \
template< param > struct trait<spec> \
{ \
+public:\
typedef result type; \
}; \
/**/
#define BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(param1,param2,trait,spec,result) \
template< param1, param2 > struct trait<spec> \
{ \
+public:\
typedef result; \
}; \
/**/
#define BOOST_TT_AUX_TYPE_TRAIT_IMPL_PARTIAL_SPEC1_1(param,trait,spec,result) \
template< param > struct trait##_impl<spec> \
{ \
+public:\
typedef result type; \
}; \
/**/
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
+// $Date: 2004-09-02 08:41:37 -0700 (Thu, 02 Sep 2004) $
// $Revision: 24874 $
#undef BOOST_TT_AUX_TYPE_TRAIT_DEF1
template<typename Function>
struct function_traits :
- public boost::detail::function_traits_helper<typename boost::add_pointer<Function>::type>
+ public boost::detail::function_traits_helper<typename boost::add_pointer<Function>::type>
{
};
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_BIT_AND_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_AND_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_and
+#define BOOST_TT_TRAIT_OP &
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_BIT_AND_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_AND_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_and_assign
+#define BOOST_TT_TRAIT_OP &=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_BIT_OR_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_OR_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_or
+#define BOOST_TT_TRAIT_OP |
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_BIT_OR_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_OR_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_or_assign
+#define BOOST_TT_TRAIT_OP |=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_BIT_XOR_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_XOR_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_xor
+#define BOOST_TT_TRAIT_OP ^
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_BIT_XOR_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_XOR_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_xor_assign
+#define BOOST_TT_TRAIT_OP ^=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_COMPLEMENT_HPP_INCLUDED
+#define BOOST_TT_HAS_COMPLEMENT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_complement
+#define BOOST_TT_TRAIT_OP ~
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* pointer */\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ /* fundamental non integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_DEREFERENCE_HPP_INCLUDED
+#define BOOST_TT_HAS_DEREFERENCE_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_dereference
+#define BOOST_TT_TRAIT_OP *
+#define BOOST_TT_FORBIDDEN_IF\
+ /* void* or fundamental */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_DIVIDES_HPP_INCLUDED
+#define BOOST_TT_HAS_DIVIDES_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_divides
+#define BOOST_TT_TRAIT_OP /
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer with pointer or fundamental */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_DIVIDES_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_DIVIDES_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_divides_assign
+#define BOOST_TT_TRAIT_OP /=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Lhs==const and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and (Rhs==fundamental or Rhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value,\
+ /* Rhs==pointer and (Lhs==fundamental or Lhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_EQUAL_TO_HPP_INCLUDED
+#define BOOST_TT_HAS_EQUAL_TO_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_equal_to
+#define BOOST_TT_TRAIT_OP ==
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_GREATER_HPP_INCLUDED
+#define BOOST_TT_HAS_GREATER_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_greater
+#define BOOST_TT_TRAIT_OP >
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_GREATER_EQUAL_HPP_INCLUDED
+#define BOOST_TT_HAS_GREATER_EQUAL_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_greater_equal
+#define BOOST_TT_TRAIT_OP >=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_LEFT_SHIFT_HPP_INCLUDED
+#define BOOST_TT_HAS_LEFT_SHIFT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_left_shift
+#define BOOST_TT_TRAIT_OP <<
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_LEFT_SHIFT_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_LEFT_SHIFT_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_left_shift_assign
+#define BOOST_TT_TRAIT_OP <<=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_LESS_HPP_INCLUDED
+#define BOOST_TT_HAS_LESS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_less
+#define BOOST_TT_TRAIT_OP <
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_LESS_EQUAL_HPP_INCLUDED
+#define BOOST_TT_HAS_LESS_EQUAL_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_less_equal
+#define BOOST_TT_TRAIT_OP <=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_LOGICAL_AND_HPP_INCLUDED
+#define BOOST_TT_HAS_LOGICAL_AND_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_logical_and
+#define BOOST_TT_TRAIT_OP &&
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer with fundamental non convertible to bool */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< Rhs_nocv, bool >::value >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< Lhs_nocv, bool >::value >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_LOGICAL_NOT_HPP_INCLUDED
+#define BOOST_TT_HAS_LOGICAL_NOT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_logical_not
+#define BOOST_TT_TRAIT_OP !
+#define BOOST_TT_FORBIDDEN_IF\
+ false
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_LOGICAL_OR_HPP_INCLUDED
+#define BOOST_TT_HAS_LOGICAL_OR_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_logical_or
+#define BOOST_TT_TRAIT_OP ||
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer with fundamental non convertible to bool */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< Rhs_nocv, bool >::value >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< Lhs_nocv, bool >::value >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_MINUS_HPP_INCLUDED
+#define BOOST_TT_HAS_MINUS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_minus
+#define BOOST_TT_TRAIT_OP -
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental and Rhs!=integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value,\
+ /* Lhs==void* and (Rhs==fundamental or Rhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value,\
+ /* Rhs==void* and (Lhs==fundamental or Lhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value\
+ >::value,\
+ /* Lhs=fundamental and Rhs=pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* two different pointers */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_same< Lhs_nocv, Rhs_nocv >::value >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_MINUS_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_MINUS_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_minus_assign
+#define BOOST_TT_TRAIT_OP -=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental and Rhs!=integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value,\
+ /* Lhs==void* and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==void* and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs=fundamental and Rhs=pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* (Lhs==fundamental or Lhs==pointer) and (Rhs==fundamental or Rhs==pointer) and (Lhs==const) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_MODULUS_HPP_INCLUDED
+#define BOOST_TT_HAS_MODULUS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_modulus
+#define BOOST_TT_TRAIT_OP %
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_MODULUS_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_MODULUS_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_modulus_assign
+#define BOOST_TT_TRAIT_OP %=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_MULTIPLIES_HPP_INCLUDED
+#define BOOST_TT_HAS_MULTIPLIES_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_multiplies
+#define BOOST_TT_TRAIT_OP *
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer with pointer or fundamental */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_MULTIPLIES_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_MULTIPLIES_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_multiplies_assign
+#define BOOST_TT_TRAIT_OP *=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Lhs==const and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and (Rhs==fundamental or Rhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value,\
+ /* Rhs==pointer and (Lhs==fundamental or Lhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_NEGATE_HPP_INCLUDED
+#define BOOST_TT_HAS_NEGATE_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_negate
+#define BOOST_TT_TRAIT_OP -
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer */\
+ ::boost::is_pointer< Rhs_noref >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_NOT_EQUAL_TO_HPP_INCLUDED
+#define BOOST_TT_HAS_NOT_EQUAL_TO_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_not_equal_to
+#define BOOST_TT_TRAIT_OP !=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
template <class T>
struct has_nothrow_assign_imp{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<
- ::boost::has_trivial_assign<T>::value,
- BOOST_HAS_NOTHROW_ASSIGN(T)
- >::value));
+#ifndef BOOST_HAS_NOTHROW_ASSIGN
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::has_trivial_assign<T>::value);
+#else
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_ASSIGN(T));
+#endif
};
}
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_assign,T,::boost::detail::has_nothrow_assign_imp<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void volatile,false)
+#endif
} // namespace boost
template <class T>
struct has_nothrow_constructor_imp{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<
- ::boost::has_trivial_constructor<T>::value,
- BOOST_HAS_NOTHROW_CONSTRUCTOR(T)
- >::value));
+#ifdef BOOST_HAS_NOTHROW_CONSTRUCTOR
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_CONSTRUCTOR(T));
+#else
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::has_trivial_constructor<T>::value);
+#endif
};
}
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_constructor,T,::boost::detail::has_nothrow_constructor_imp<T>::value)
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_default_constructor,T,::boost::detail::has_nothrow_constructor_imp<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void volatile,false)
+#endif
+
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void volatile,false)
+#endif
+
} // namespace boost
#include <boost/type_traits/detail/bool_trait_undef.hpp>
template <class T>
struct has_nothrow_copy_imp{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<
- ::boost::has_trivial_copy<T>::value,
- BOOST_HAS_NOTHROW_COPY(T)
- >::value));
+#ifdef BOOST_HAS_NOTHROW_COPY
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_COPY(T));
+#else
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::has_trivial_copy<T>::value);
+#endif
};
}
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_copy,T,::boost::detail::has_nothrow_copy_imp<T>::value)
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_copy_constructor,T,::boost::detail::has_nothrow_copy_imp<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void volatile,false)
+#endif
+
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void volatile,false)
+#endif
+
} // namespace boost
#include <boost/type_traits/detail/bool_trait_undef.hpp>
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_OPERATOR_HPP_INCLUDED
+#define BOOST_TT_HAS_OPERATOR_HPP_INCLUDED
+
+#include <boost/type_traits/has_bit_and.hpp>
+#include <boost/type_traits/has_bit_and_assign.hpp>
+#include <boost/type_traits/has_bit_or.hpp>
+#include <boost/type_traits/has_bit_or_assign.hpp>
+#include <boost/type_traits/has_bit_xor.hpp>
+#include <boost/type_traits/has_bit_xor_assign.hpp>
+#include <boost/type_traits/has_complement.hpp>
+#include <boost/type_traits/has_dereference.hpp>
+#include <boost/type_traits/has_divides.hpp>
+#include <boost/type_traits/has_divides_assign.hpp>
+#include <boost/type_traits/has_equal_to.hpp>
+#include <boost/type_traits/has_greater.hpp>
+#include <boost/type_traits/has_greater_equal.hpp>
+#include <boost/type_traits/has_left_shift.hpp>
+#include <boost/type_traits/has_left_shift_assign.hpp>
+#include <boost/type_traits/has_less.hpp>
+#include <boost/type_traits/has_less_equal.hpp>
+#include <boost/type_traits/has_logical_and.hpp>
+#include <boost/type_traits/has_logical_not.hpp>
+#include <boost/type_traits/has_logical_or.hpp>
+#include <boost/type_traits/has_minus.hpp>
+#include <boost/type_traits/has_minus_assign.hpp>
+#include <boost/type_traits/has_modulus.hpp>
+#include <boost/type_traits/has_modulus_assign.hpp>
+#include <boost/type_traits/has_multiplies.hpp>
+#include <boost/type_traits/has_multiplies_assign.hpp>
+#include <boost/type_traits/has_negate.hpp>
+#include <boost/type_traits/has_not_equal_to.hpp>
+#include <boost/type_traits/has_plus.hpp>
+#include <boost/type_traits/has_plus_assign.hpp>
+#include <boost/type_traits/has_post_decrement.hpp>
+#include <boost/type_traits/has_post_increment.hpp>
+#include <boost/type_traits/has_pre_decrement.hpp>
+#include <boost/type_traits/has_pre_increment.hpp>
+#include <boost/type_traits/has_right_shift.hpp>
+#include <boost/type_traits/has_right_shift_assign.hpp>
+#include <boost/type_traits/has_unary_minus.hpp>
+#include <boost/type_traits/has_unary_plus.hpp>
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_PLUS_HPP_INCLUDED
+#define BOOST_TT_HAS_PLUS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_plus
+#define BOOST_TT_TRAIT_OP +
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==void* and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==void* and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==fundamental and Rhs!=integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental and Lhs!=integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_PLUS_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_PLUS_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_plus_assign
+#define BOOST_TT_TRAIT_OP +=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==void* and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==void* and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==fundamental and Rhs!=integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental and Lhs!=bool */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_same< Lhs_nocv, bool >::value >::value\
+ >::value,\
+ /* (Lhs==fundamental or Lhs==pointer) and (Rhs==fundamental or Rhs==pointer) and (Lhs==const) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_POST_DECREMENT_HPP_INCLUDED
+#define BOOST_TT_HAS_POST_DECREMENT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_post_decrement
+#define BOOST_TT_TRAIT_OP --
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* bool */\
+ ::boost::is_same< bool, Lhs_nocv >::value,\
+ /* void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value\
+ >::value,\
+ /* (fundamental or pointer) and const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_postfix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_POST_INCREMENT_HPP_INCLUDED
+#define BOOST_TT_HAS_POST_INCREMENT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_post_increment
+#define BOOST_TT_TRAIT_OP ++
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* bool */\
+ ::boost::is_same< bool, Lhs_nocv >::value,\
+ /* void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value\
+ >::value,\
+ /* (fundamental or pointer) and const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_postfix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_PRE_DECREMENT_HPP_INCLUDED
+#define BOOST_TT_HAS_PRE_DECREMENT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_pre_decrement
+#define BOOST_TT_TRAIT_OP --
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* bool */\
+ ::boost::is_same< bool, Rhs_nocv >::value,\
+ /* void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value,\
+ /* (fundamental or pointer) and const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_PRE_INCREMENT_HPP_INCLUDED
+#define BOOST_TT_HAS_PRE_INCREMENT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_pre_increment
+#define BOOST_TT_TRAIT_OP ++
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* bool */\
+ ::boost::is_same< bool, Rhs_nocv >::value,\
+ /* void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value,\
+ /* (fundamental or pointer) and const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_RIGHT_SHIFT_HPP_INCLUDED
+#define BOOST_TT_HAS_RIGHT_SHIFT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_right_shift
+#define BOOST_TT_TRAIT_OP >>
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_RIGHT_SHIFT_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_RIGHT_SHIFT_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_right_shift_assign
+#define BOOST_TT_TRAIT_OP >>=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
template <typename T>
struct has_trivial_assign_impl
{
+#ifdef BOOST_HAS_TRIVIAL_ASSIGN
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_TRIVIAL_ASSIGN(T));
+#else
BOOST_STATIC_CONSTANT(bool, value =
(::boost::type_traits::ice_and<
- ::boost::type_traits::ice_or<
- ::boost::is_pod<T>::value,
- BOOST_HAS_TRIVIAL_ASSIGN(T)
- >::value,
- ::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
+ ::boost::is_pod<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
>::value));
+#endif
};
} // namespace detail
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_assign,T,::boost::detail::has_trivial_assign_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void volatile,false)
+#endif
} // namespace boost
template <typename T>
struct has_trivial_ctor_impl
{
+#ifdef BOOST_HAS_TRIVIAL_CONSTRUCTOR
BOOST_STATIC_CONSTANT(bool, value =
(::boost::type_traits::ice_or<
::boost::is_pod<T>::value,
BOOST_HAS_TRIVIAL_CONSTRUCTOR(T)
>::value));
+#else
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::is_pod<T>::value,
+ false
+ >::value));
+#endif
};
} // namespace detail
template <typename T>
struct has_trivial_copy_impl
{
+#ifdef BOOST_HAS_TRIVIAL_COPY
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_TRIVIAL_COPY(T));
+#else
BOOST_STATIC_CONSTANT(bool, value =
(::boost::type_traits::ice_and<
- ::boost::type_traits::ice_or<
- ::boost::is_pod<T>::value,
- BOOST_HAS_TRIVIAL_COPY(T)
- >::value,
- ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
+ ::boost::is_pod<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
>::value));
+#endif
};
} // namespace detail
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_copy,T,::boost::detail::has_trivial_copy_impl<T>::value)
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_copy_constructor,T,::boost::detail::has_trivial_copy_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void volatile,false)
+#endif
+
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void volatile,false)
+#endif
+
} // namespace boost
#include <boost/type_traits/detail/bool_trait_undef.hpp>
template <typename T>
struct has_trivial_dtor_impl
{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<
- ::boost::is_pod<T>::value,
- BOOST_HAS_TRIVIAL_DESTRUCTOR(T)
- >::value));
+#ifdef BOOST_HAS_TRIVIAL_DESTRUCTOR
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_TRIVIAL_DESTRUCTOR(T));
+#else
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::is_pod<T>::value);
+#endif
};
} // namespace detail
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_destructor,T,::boost::detail::has_trivial_dtor_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void volatile,false)
+#endif
+
} // namespace boost
#include <boost/type_traits/detail/bool_trait_undef.hpp>
--- /dev/null
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// (C) Copyright Eric Friedman 2002-2003.
+// (C) Copyright Antony Polukhin 2013.
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_TRIVIAL_MOVE_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_TRIVIAL_MOVE_ASSIGN_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/is_pod.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct has_trivial_move_assign_impl
+{
+#ifdef BOOST_HAS_TRIVIAL_MOVE_ASSIGN
+ BOOST_STATIC_CONSTANT(bool, value = (BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T)));
+#else
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::is_pod<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
+ >::value));
+#endif
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_move_assign,T,::boost::detail::has_trivial_move_assign_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_assign,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_assign,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_assign,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_assign,void volatile,false)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_HAS_TRIVIAL_MOVE_ASSIGN_HPP_INCLUDED
--- /dev/null
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// (C) Copyright Eric Friedman 2002-2003.
+// (C) Copyright Antony Polukhin 2013.
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_TRIVIAL_MOVE_CONSTRUCTOR_HPP_INCLUDED
+#define BOOST_TT_HAS_TRIVIAL_MOVE_CONSTRUCTOR_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/intrinsics.hpp>
+#include <boost/type_traits/is_pod.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct has_trivial_move_ctor_impl
+{
+#ifdef BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR
+ BOOST_STATIC_CONSTANT(bool, value = (BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T)));
+#else
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::is_pod<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
+ >::value));
+#endif
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_move_constructor,T,::boost::detail::has_trivial_move_ctor_impl<T>::value)
+
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_constructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_constructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_constructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_move_constructor,void volatile,false)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_HAS_TRIVIAL_MOVE_CONSTRUCTOR_HPP_INCLUDED
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_UNARY_MINUS_HPP_INCLUDED
+#define BOOST_TT_HAS_UNARY_MINUS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_unary_minus
+#define BOOST_TT_TRAIT_OP -
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer */\
+ ::boost::is_pointer< Rhs_noref >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
--- /dev/null
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_UNARY_PLUS_HPP_INCLUDED
+#define BOOST_TT_HAS_UNARY_PLUS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_unary_plus
+#define BOOST_TT_TRAIT_OP +
+#define BOOST_TT_FORBIDDEN_IF\
+ false
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
namespace boost {
+#ifdef BOOST_HAS_VIRTUAL_DESTRUCTOR
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_virtual_destructor,T,BOOST_HAS_VIRTUAL_DESTRUCTOR(T))
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_virtual_destructor,T,false)
+#endif
} // namespace boost
namespace type_traits { namespace detail {
// 4.5/2
-template <class T> struct need_promotion : boost::is_enum<T> {};
+template <class T> struct need_promotion : public boost::is_enum<T> {};
// 4.5/1
-template<> struct need_promotion<char > : true_type {};
-template<> struct need_promotion<signed char > : true_type {};
-template<> struct need_promotion<unsigned char > : true_type {};
-template<> struct need_promotion<signed short int > : true_type {};
-template<> struct need_promotion<unsigned short int> : true_type {};
+template<> struct need_promotion<char > : public true_type {};
+template<> struct need_promotion<signed char > : public true_type {};
+template<> struct need_promotion<unsigned char > : public true_type {};
+template<> struct need_promotion<signed short int > : public true_type {};
+template<> struct need_promotion<unsigned short int> : public true_type {};
// Specializations for non-standard types.
#define BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(T) \
template<> struct need_promotion<T> \
- : integral_constant<bool, (sizeof(T) < sizeof(int))> {};
+ : public integral_constant<bool, (sizeof(T) < sizeof(int))> {};
// Same set of integral types as in boost/type_traits/is_integral.hpp.
// Please, keep in sync.
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
// 4.5/2
-template<> struct need_promotion<wchar_t> : true_type {};
+template<> struct need_promotion<wchar_t> : public true_type {};
#endif
// 4.5/3 (integral bit-field) is not supported.
// 4.5/4
-template<> struct need_promotion<bool> : true_type {};
+template<> struct need_promotion<bool> : public true_type {};
// Get promoted type by index and cv qualifiers.
template<class T>
struct integral_promotion
- : boost::mpl::eval_if<
+ : public boost::mpl::eval_if<
need_promotion<BOOST_DEDUCED_TYPENAME remove_cv<T>::type>
, integral_promotion_impl<T>
, boost::mpl::identity<T>
-
// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// (these should largely ignore cv-qualifiers)
// BOOST_IS_UNION(T) should evaluate to true if T is a union type
// BOOST_IS_POD(T) should evaluate to true if T is a POD type
-// BOOST_IS_EMPTY(T) should evaluate to true if T is an empty struct or union
+// BOOST_IS_EMPTY(T) should evaluate to true if T is an empty class type (and not a union)
// BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) should evaluate to true if "T x;" has no effect
// BOOST_HAS_TRIVIAL_COPY(T) should evaluate to true if T(t) <==> memcpy
+// BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) should evaluate to true if T(boost::move(t)) <==> memcpy
// BOOST_HAS_TRIVIAL_ASSIGN(T) should evaluate to true if t = u <==> memcpy
+// BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) should evaluate to true if t = boost::move(u) <==> memcpy
// BOOST_HAS_TRIVIAL_DESTRUCTOR(T) should evaluate to true if ~T() has no effect
// BOOST_HAS_NOTHROW_CONSTRUCTOR(T) should evaluate to true if "T x;" can not throw
// BOOST_HAS_NOTHROW_COPY(T) should evaluate to true if T(t) can not throw
// BOOST_HAS_VIRTUAL_DESTRUCTOR(T) should evaluate to true T has a virtual destructor
//
// The following can also be defined: when detected our implementation is greatly simplified.
-// Note that unlike the macros above these do not have default definitions, so we can use
-// #ifdef MACRONAME to detect when these are available.
//
// BOOST_IS_ABSTRACT(T) true if T is an abstract type
// BOOST_IS_BASE_OF(T,U) true if T is a base class of U
-// BOOST_IS_CLASS(T) true if T is a class type
+// BOOST_IS_CLASS(T) true if T is a class type (and not a union)
// BOOST_IS_CONVERTIBLE(T,U) true if T is convertible to U
// BOOST_IS_ENUM(T) true is T is an enum
// BOOST_IS_POLYMORPHIC(T) true if T is a polymorphic type
# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
#endif
-#if defined(BOOST_MSVC) && defined(BOOST_MSVC_FULL_VER) && (BOOST_MSVC_FULL_VER >=140050215)
+#if (defined(BOOST_MSVC) && defined(BOOST_MSVC_FULL_VER) && (BOOST_MSVC_FULL_VER >=140050215))\
+ || (defined(BOOST_INTEL) && defined(_MSC_VER) && (_MSC_VER >= 1500))
# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/is_function.hpp>
# define BOOST_IS_UNION(T) __is_union(T)
# define BOOST_IS_POD(T) (__is_pod(T) && __has_trivial_constructor(T))
# define BOOST_IS_EMPTY(T) __is_empty(T)
# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-# define BOOST_HAS_TRIVIAL_COPY(T) __has_trivial_copy(T)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
-# define BOOST_HAS_NOTHROW_COPY(T) __has_nothrow_copy(T)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) __has_nothrow_assign(T)
+# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T)|| ( ::boost::is_pod<T>::value && !::boost::is_volatile<T>::value))
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) || ( ::boost::is_pod<T>::value && ! ::boost::is_const<T>::value && !::boost::is_volatile<T>::value))
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || ::boost::is_pod<T>::value)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) || ::boost::has_trivial_constructor<T>::value)
+# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) || ::boost::has_trivial_copy<T>::value)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) || ::boost::has_trivial_assign<T>::value)
# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
# define BOOST_IS_CLASS(T) __is_class(T)
-// This one doesn't quite always do the right thing:
-// # define BOOST_IS_CONVERTIBLE(T,U) __is_convertible_to(T,U)
+# define BOOST_IS_CONVERTIBLE(T,U) ((__is_convertible_to(T,U) || (is_same<T,U>::value && !is_function<U>::value)) && !__is_abstract(U))
# define BOOST_IS_ENUM(T) __is_enum(T)
// This one doesn't quite always do the right thing:
// # define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
// This one fails if the default alignment has been changed with /Zp:
// # define BOOST_ALIGNMENT_OF(T) __alignof(T)
+# if defined(_MSC_VER) && (_MSC_VER >= 1700)
+# define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) ((__has_trivial_move_constructor(T) || ::boost::is_pod<T>::value) && !::boost::is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) ((__has_trivial_move_assign(T) || ::boost::is_pod<T>::value) && ! ::boost::is_const<T>::value && !::boost::is_volatile<T>::value)
+# endif
+
# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
#endif
# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
#endif
-#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) && !defined(__GCCXML__)))
+#if defined(BOOST_CLANG) && defined(__has_feature)
+# include <cstddef>
# include <boost/type_traits/is_same.hpp>
# include <boost/type_traits/is_reference.hpp>
# include <boost/type_traits/is_volatile.hpp>
+# if __has_feature(is_union)
+# define BOOST_IS_UNION(T) __is_union(T)
+# endif
+# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_pod)
+# define BOOST_IS_POD(T) __is_pod(T)
+# endif
+# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_empty)
+# define BOOST_IS_EMPTY(T) __is_empty(T)
+# endif
+# if __has_feature(has_trivial_constructor)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
+# endif
+# if __has_feature(has_trivial_copy)
+# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value && !is_volatile<T>::value)
+# endif
+# if __has_feature(has_trivial_assign)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
+# endif
+# if __has_feature(has_trivial_destructor)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
+# endif
+# if __has_feature(has_nothrow_constructor)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
+# endif
+# if __has_feature(has_nothrow_copy)
+# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
+# endif
+# if __has_feature(has_nothrow_assign)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
+# endif
+# if __has_feature(has_virtual_destructor)
+# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
+# endif
+# if __has_feature(is_abstract)
+# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
+# endif
+# if __has_feature(is_base_of)
+# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
+# endif
+# if __has_feature(is_class)
+# define BOOST_IS_CLASS(T) __is_class(T)
+# endif
+# if __has_feature(is_convertible_to)
+# include <boost/type_traits/is_abstract.hpp>
+# define BOOST_IS_CONVERTIBLE(T,U) (__is_convertible_to(T,U) && !::boost::is_abstract<U>::value)
+# endif
+# if __has_feature(is_enum)
+# define BOOST_IS_ENUM(T) __is_enum(T)
+# endif
+# if __has_feature(is_polymorphic)
+# define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
+# endif
+# if __has_feature(has_trivial_move_constructor)
+# define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) __has_trivial_move_constructor(T)
+# endif
+# if __has_feature(has_trivial_move_assign)
+# define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) __has_trivial_move_assign(T)
+# endif
+# define BOOST_ALIGNMENT_OF(T) __alignof(T)
+
+# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) && !defined(__GCCXML__))) && !defined(BOOST_CLANG)
+# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_volatile.hpp>
+
+#ifdef BOOST_INTEL
+# define BOOST_INTEL_TT_OPTS || is_pod<T>::value
+#else
+# define BOOST_INTEL_TT_OPTS
+#endif
+
# define BOOST_IS_UNION(T) __is_union(T)
# define BOOST_IS_POD(T) __is_pod(T)
# define BOOST_IS_EMPTY(T) __is_empty(T)
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
-# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) ((__has_trivial_constructor(T) BOOST_INTEL_TT_OPTS) && ! ::boost::is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_COPY(T) ((__has_trivial_copy(T) BOOST_INTEL_TT_OPTS) && !is_reference<T>::value && ! ::boost::is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) ((__has_trivial_assign(T) BOOST_INTEL_TT_OPTS) && ! ::boost::is_volatile<T>::value && ! ::boost::is_const<T>::value)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) BOOST_INTEL_TT_OPTS)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) BOOST_INTEL_TT_OPTS)
+# define BOOST_HAS_NOTHROW_COPY(T) ((__has_nothrow_copy(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_reference<T>::value)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) ((__has_nothrow_assign(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_const<T>::value)
# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
#endif
-# if defined(__CODEGEARC__)
+#if defined(__ghs__) && (__GHS_VERSION_NUMBER >= 600)
# include <boost/type_traits/is_same.hpp>
# include <boost/type_traits/is_reference.hpp>
# include <boost/type_traits/is_volatile.hpp>
-# include <boost/type_traits/is_void.hpp>
# define BOOST_IS_UNION(T) __is_union(T)
# define BOOST_IS_POD(T) __is_pod(T)
# define BOOST_IS_EMPTY(T) __is_empty(T)
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T) || is_void<T>::value)
-# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value || is_void<T>::value)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value || is_void<T>::value)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || is_void<T>::value)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T) || is_void<T>::value)
-# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value || is_void<T>::value)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value || is_void<T>::value)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
+# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value && !is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
+# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_void<T>::value && !is_void<U>::value)
+# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
# define BOOST_IS_CLASS(T) __is_class(T)
-# define BOOST_IS_CONVERTIBLE(T,U) (__is_convertible(T,U) || is_void<U>::value)
# define BOOST_IS_ENUM(T) __is_enum(T)
# define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-# define BOOST_ALIGNMENT_OF(T) alignof(T)
+# define BOOST_ALIGNMENT_OF(T) __alignof__(T)
# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
#endif
-#ifndef BOOST_IS_UNION
-# define BOOST_IS_UNION(T) false
-#endif
-
-#ifndef BOOST_IS_POD
-# define BOOST_IS_POD(T) false
-#endif
-
-#ifndef BOOST_IS_EMPTY
-# define BOOST_IS_EMPTY(T) false
-#endif
-
-#ifndef BOOST_HAS_TRIVIAL_CONSTRUCTOR
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) false
-#endif
-
-#ifndef BOOST_HAS_TRIVIAL_COPY
-# define BOOST_HAS_TRIVIAL_COPY(T) false
-#endif
-
-#ifndef BOOST_HAS_TRIVIAL_ASSIGN
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) false
-#endif
+# if defined(__CODEGEARC__)
+# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_volatile.hpp>
+# include <boost/type_traits/is_void.hpp>
-#ifndef BOOST_HAS_TRIVIAL_DESTRUCTOR
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) false
-#endif
+# define BOOST_IS_UNION(T) __is_union(T)
+# define BOOST_IS_POD(T) __is_pod(T)
+# define BOOST_IS_EMPTY(T) __is_empty(T)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T))
+# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T))
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T))
+# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
+# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-#ifndef BOOST_HAS_NOTHROW_CONSTRUCTOR
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) false
-#endif
+# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
+# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_void<T>::value && !is_void<U>::value)
+# define BOOST_IS_CLASS(T) __is_class(T)
+# define BOOST_IS_CONVERTIBLE(T,U) (__is_convertible(T,U) || is_void<U>::value)
+# define BOOST_IS_ENUM(T) __is_enum(T)
+# define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
+# define BOOST_ALIGNMENT_OF(T) alignof(T)
-#ifndef BOOST_HAS_NOTHROW_COPY
-# define BOOST_HAS_NOTHROW_COPY(T) false
+# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
#endif
-#ifndef BOOST_HAS_NOTHROW_ASSIGN
-# define BOOST_HAS_NOTHROW_ASSIGN(T) false
-#endif
+#endif // BOOST_TT_INTRINSICS_HPP_INCLUDED
-#ifndef BOOST_HAS_VIRTUAL_DESTRUCTOR
-# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) false
-#endif
-#endif // BOOST_TT_INTRINSICS_HPP_INCLUDED
// At this time supported by EDG (Intel C++ 7, Comeau 4.3.2) and VC7.1.
// - Adapted and added into Boost.Serialization library by Robert Ramey
// (starting with submission #10).
-// - Jan 2004: GCC 3.4 fixed to suport DR337 (Giovanni Bajo).
+// - Jan 2004: GCC 3.4 fixed to support DR337 (Giovanni Bajo).
// - Jan 2004: modified to be part of Boost.TypeTraits (Pavel Vozenilek).
// - Nov 2004: Christoph Ludwig found that the implementation did not work with
// template types and gcc-3.4 or VC7.1, fix due to Christoph Ludwig
// See http://www.boost.org/libs/type_traits for most recent version including documentation.
-// Some fixes for is_array are based on a newgroup posting by Jonathan Lundquist.
+// Some fixes for is_array are based on a newsgroup posting by Jonathan Lundquist.
#ifndef BOOST_TT_IS_ARRAY_HPP_INCLUDED
struct is_const_rvalue_filter
{
#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_const);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_const);
#else
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_const);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_const);
#endif
};
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template <class T>
struct is_const_rvalue_filter<T&&>
{
- BOOST_STATIC_CONSTANT(bool, value = false);
+ BOOST_STATIC_CONSTANT(bool, value = false);
};
#endif
}
template <bool is_ref, bool array>
struct is_const_helper
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
template <typename T>
struct is_const_impl
- : is_const_helper<
+ : public is_const_helper<
is_reference<T>::value
, is_array<T>::value
>::template result_<T>
#include <boost/type_traits/detail/yes_no_type.hpp>
#include <boost/type_traits/config.hpp>
#include <boost/type_traits/is_array.hpp>
-#include <boost/type_traits/add_reference.hpp>
#include <boost/type_traits/ice.hpp>
#include <boost/type_traits/is_arithmetic.hpp>
#include <boost/type_traits/is_void.hpp>
#ifndef BOOST_NO_IS_ABSTRACT
#include <boost/type_traits/is_abstract.hpp>
#endif
+#include <boost/type_traits/add_lvalue_reference.hpp>
+#include <boost/type_traits/add_rvalue_reference.hpp>
+#include <boost/type_traits/is_function.hpp>
#if defined(__MWERKS__)
-#include <boost/type_traits/is_function.hpp>
#include <boost/type_traits/remove_reference.hpp>
#endif
#ifndef BOOST_IS_CONVERTIBLE
-// is one type convertable to another?
+// is one type convertible to another?
//
// there are multiple versions of the is_convertible
// template, almost every compiler seems to require its
{
static no_type BOOST_TT_DECL _m_check(...);
static yes_type BOOST_TT_DECL _m_check(To);
- static From _m_from;
+ static typename add_lvalue_reference<From>::type _m_from;
enum { value = sizeof( _m_check(_m_from) ) == sizeof(yes_type) };
};
};
template <typename From, typename To>
struct is_convertible_basic_impl
- : does_conversion_exist<From>::template result_<To>
+ : public does_conversion_exist<From>::template result_<To>
{
};
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(T);
};
- static From _m_from;
+ static typename add_lvalue_reference<From>::type _m_from;
static bool const value = sizeof( checker<To>::_m_check(_m_from) )
== sizeof(::boost::type_traits::yes_type);
#pragma option pop
struct any_conversion
{
template <typename T> any_conversion(const volatile T&);
+ template <typename T> any_conversion(const T&);
+ template <typename T> any_conversion(volatile T&);
template <typename T> any_conversion(T&);
};
template <typename From, typename To>
struct is_convertible_basic_impl
{
- static From _m_from;
- static bool const value = sizeof( boost::detail::checker<To>::_m_check(_m_from, 0) )
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
+ static lvalue_type _m_from;
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6)))
+ static bool const value =
+ sizeof( boost::detail::checker<To>::_m_check(static_cast<rvalue_type>(_m_from), 0) )
+ == sizeof(::boost::type_traits::yes_type);
+#else
+ static bool const value =
+ sizeof( boost::detail::checker<To>::_m_check(_m_from, 0) )
== sizeof(::boost::type_traits::yes_type);
+#endif
};
#elif (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 245) && !defined(__ICL)) \
struct any_conversion
{
template <typename T> any_conversion(const volatile T&);
+ template <typename T> any_conversion(const T&);
+ template <typename T> any_conversion(volatile T&);
// we need this constructor to catch references to functions
// (which can not be cv-qualified):
template <typename T> any_conversion(T&);
{
static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
- static From _m_from;
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
+ static lvalue_type _m_from;
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0) ) == sizeof(::boost::type_traits::yes_type)
+ );
+#else
BOOST_STATIC_CONSTANT(bool, value =
sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
);
+#endif
};
#elif defined(__DMC__)
struct any_conversion
{
template <typename T> any_conversion(const volatile T&);
+ template <typename T> any_conversion(const T&);
+ template <typename T> any_conversion(volatile T&);
// we need this constructor to catch references to functions
// (which can not be cv-qualified):
template <typename T> any_conversion(T&);
template <class T>
static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion, float, T);
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int, int);
- static From _m_from;
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
+ static lvalue_type _m_from;
// Static constants sometime cause the conversion of _m_from to To to be
// called. This doesn't happen with an enum.
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+ enum { value =
+ sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0, 0) ) == sizeof(::boost::type_traits::yes_type)
+ };
+#else
enum { value =
sizeof( _m_check(_m_from, 0, 0) ) == sizeof(::boost::type_traits::yes_type)
};
+#endif
};
#elif defined(__MWERKS__)
struct any_conversion
{
template <typename T> any_conversion(const volatile T&);
+ template <typename T> any_conversion(const T&);
+ template <typename T> any_conversion(volatile T&);
+ template <typename T> any_conversion(T&);
};
template <typename From, typename To>
{
static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
- static From _m_from;
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
+ static lvalue_type _m_from;
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0) ) == sizeof(::boost::type_traits::yes_type)
+ );
+#else
BOOST_STATIC_CONSTANT(bool, value =
sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
);
+#endif
};
template <typename From, typename To>
{
static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
- static From _m_from;
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
+ static lvalue_type _m_from;
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof( _m_check(static_cast<rvalue_type>(_m_from)) ) == sizeof(::boost::type_traits::yes_type)
+ );
+#else
BOOST_STATIC_CONSTANT(bool, value =
sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
);
+#endif
};
template <typename From, typename To>
{};
#else
-
//
// This version seems to work pretty well for a wide spectrum of compilers,
// however it does rely on undefined behaviour by passing UDT's through (...).
{
static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
- static From _m_from;
+ typedef typename add_lvalue_reference<From>::type lvalue_type;
+ typedef typename add_rvalue_reference<From>::type rvalue_type;
+ static lvalue_type _m_from;
#ifdef BOOST_MSVC
#pragma warning(push)
#pragma warning(disable:4244)
#pragma warning(disable:6334)
#endif
#endif
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof( _m_check(static_cast<rvalue_type>(_m_from)) ) == sizeof(::boost::type_traits::yes_type)
+ );
+#else
BOOST_STATIC_CONSTANT(bool, value =
sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
);
+#endif
#ifdef BOOST_MSVC
#pragma warning(pop)
#endif
template <typename From, typename To>
struct is_convertible_impl
{
- typedef typename add_reference<From>::type ref_type;
enum { value =
(::boost::type_traits::ice_and<
::boost::type_traits::ice_or<
- ::boost::detail::is_convertible_basic_impl<ref_type,To>::value,
+ ::boost::detail::is_convertible_basic_impl<From,To>::value,
::boost::is_void<To>::value
>::value,
::boost::type_traits::ice_not<
::boost::is_array<To>::value
+ >::value,
+ ::boost::type_traits::ice_not<
+ ::boost::is_function<To>::value
>::value
>::value) };
};
template <typename From, typename To>
struct is_convertible_impl
{
- typedef typename add_reference<From>::type ref_type;
BOOST_STATIC_CONSTANT(bool, value =
(::boost::type_traits::ice_and<
::boost::type_traits::ice_or<
- ::boost::detail::is_convertible_basic_impl<ref_type,To>::value,
+ ::boost::detail::is_convertible_basic_impl<From,To>::value,
::boost::is_void<To>::value
>::value,
::boost::type_traits::ice_not<
::boost::is_array<To>::value
+ >::value,
+ ::boost::type_traits::ice_not<
+ ::boost::is_function<To>::value
>::value
>::value)
);
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void,To,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void,false)
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const,To,false)
BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void volatile,To,false)
BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const volatile,To,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void volatile,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const volatile,false)
#endif
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
--- /dev/null
+// (C) Copyright Antony Polukhin 2013.
+//
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_COPY_CONSTRUCTIBLE_HPP_INCLUDED
+#define BOOST_TT_IS_COPY_CONSTRUCTIBLE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/type_traits/is_base_and_derived.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/is_rvalue_reference.hpp>
+#include <boost/utility/declval.hpp>
+#include <boost/noncopyable.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail{
+
+template <bool DerivedFromNoncopyable, class T>
+struct is_copy_constructible_impl2 {
+
+// Intel compiler has problems with SFINAE for copy constructors and deleted functions:
+//
+// error: function *function_name* cannot be referenced -- it is a deleted function
+// static boost::type_traits::yes_type test(T1&, decltype(T1(boost::declval<T1&>()))* = 0);
+// ^
+#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) && !defined(BOOST_INTEL_CXX_VERSION)
+
+#ifdef BOOST_NO_CXX11_DECLTYPE
+ template <class T1>
+ static boost::type_traits::yes_type test(T1&, boost::mpl::int_<sizeof(T1(boost::declval<T1&>()))>* = 0);
+#else
+ template <class T1>
+ static boost::type_traits::yes_type test(T1&, decltype(T1(boost::declval<T1&>()))* = 0);
+#endif
+
+ static boost::type_traits::no_type test(...);
+#else
+ template <class T1>
+ static boost::type_traits::no_type test(T1&, typename T1::boost_move_no_copy_constructor_or_assign* = 0);
+ static boost::type_traits::yes_type test(...);
+#endif
+
+ // If you see errors like this:
+ //
+ // `'T::T(const T&)' is private`
+ // `boost/type_traits/is_copy_constructible.hpp:68:5: error: within this context`
+ //
+ // then you are trying to call that macro for a structure defined like that:
+ //
+ // struct T {
+ // ...
+ // private:
+ // T(const T &);
+ // ...
+ // };
+ //
+ // To fix that you must modify your structure:
+ //
+ // // C++03 and C++11 version
+ // struct T: private boost::noncopyable {
+ // ...
+ // private:
+ // T(const T &);
+ // ...
+ // };
+ //
+ // // C++11 version
+ // struct T {
+ // ...
+ // private:
+ // T(const T &) = delete;
+ // ...
+ // };
+ BOOST_STATIC_CONSTANT(bool, value = (
+ sizeof(test(
+ boost::declval<BOOST_DEDUCED_TYPENAME boost::add_reference<T>::type>()
+ )) == sizeof(boost::type_traits::yes_type)
+ ||
+ boost::is_rvalue_reference<T>::value
+ ));
+};
+
+template <class T>
+struct is_copy_constructible_impl2<true, T> {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template <class T>
+struct is_copy_constructible_impl {
+
+ BOOST_STATIC_CONSTANT(bool, value = (
+ boost::detail::is_copy_constructible_impl2<
+ boost::is_base_and_derived<boost::noncopyable, T>::value,
+ T
+ >::value
+ ));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_copy_constructible,T,::boost::detail::is_copy_constructible_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_copy_constructible,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_copy_constructible,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_copy_constructible,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_copy_constructible,void volatile,false)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_COPY_CONSTRUCTIBLE_HPP_INCLUDED
// should be always the last #include directive
#include <boost/type_traits/detail/bool_trait_def.hpp>
+#ifndef BOOST_INTERNAL_IS_EMPTY
+#define BOOST_INTERNAL_IS_EMPTY(T) false
+#else
+#define BOOST_INTERNAL_IS_EMPTY(T) BOOST_IS_EMPTY(T)
+#endif
+
namespace boost {
namespace detail {
bool, value = (
::boost::type_traits::ice_or<
::boost::detail::empty_helper<cvt,::boost::is_class<T>::value>::value
- , BOOST_IS_EMPTY(cvt)
+ , BOOST_INTERNAL_IS_EMPTY(cvt)
>::value
));
};
, ::boost::is_class<T>::value
, ::boost::is_convertible< r_type,int>::value
>::value
- , BOOST_IS_EMPTY(cvt)
+ , BOOST_INTERNAL_IS_EMPTY(cvt)
>::value));
};
typedef typename result::type eh_type;
BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<eh_type::value, BOOST_IS_EMPTY(T)>::value));
+ (::boost::type_traits::ice_or<eh_type::value, BOOST_INTERNAL_IS_EMPTY(T)>::value));
};
#else
template <typename T> struct is_empty_impl
{
- BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_EMPTY(T));
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_INTERNAL_IS_EMPTY(T));
};
#endif // BOOST_MSVC6_MEMBER_TEMPLATES
#include <boost/type_traits/detail/bool_trait_undef.hpp>
+#undef BOOST_INTERNAL_IS_EMPTY
+
#endif // BOOST_TT_IS_EMPTY_HPP_INCLUDED
struct is_enum_helper<false>
{
template <typename T> struct type
- : ::boost::is_convertible<typename boost::add_reference<T>::type,::boost::detail::int_convertible>
+ : public ::boost::is_convertible<typename boost::add_reference<T>::type,::boost::detail::int_convertible>
{
};
};
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
template<bool is_ref = true>
struct is_function_chooser
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
struct is_function_chooser<false>
{
template< typename T > struct result_
- : ::boost::type_traits::is_function_ptr_helper<T*>
+ : public ::boost::type_traits::is_function_ptr_helper<T*>
{
};
};
template <typename T>
struct is_function_impl
- : is_function_chooser< ::boost::is_reference<T>::value >
+ : public is_function_chooser< ::boost::is_reference<T>::value >
::BOOST_NESTED_TEMPLATE result_<T>
{
};
template <typename T>
struct is_function_impl<T&> : public false_type
{};
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+template <typename T>
+struct is_function_impl<T&&> : public false_type
+{};
+#endif
#endif
#endif
BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,__is_function(T))
#else
BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,::boost::detail::is_function_impl<T>::value)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_function,T&&,false)
#endif
#endif
template <typename T>
struct is_fundamental_impl
- : ::boost::type_traits::ice_or<
+ : public ::boost::type_traits::ice_or<
::boost::is_arithmetic<T>::value
, ::boost::is_void<T>::value
>
namespace boost {
//* is a type T an [cv-qualified-] integral type described in the standard (3.9.1p3)
-// as an extention we include long long, as this is likely to be added to the
+// as an extension we include long long, as this is likely to be added to the
// standard at a later date
#if defined( __CODEGEARC__ )
BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_integral,T,__is_integral(T))
BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int64,true)
BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int64,true)
#endif
+
+#ifdef BOOST_HAS_INT128
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,boost::int128_type,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,boost::uint128_type,true)
+#endif
+#ifndef BOOST_NO_CXX11_CHAR16_T
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,char16_t,true)
+#endif
+#ifndef BOOST_NO_CXX11_CHAR32_T
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,char32_t,true)
+#endif
#endif // non-CodeGear implementation
template <bool>
struct is_mem_fun_pointer_select
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
template <typename T>
struct is_member_function_pointer_impl
- : is_mem_fun_pointer_select<
+ : public is_mem_fun_pointer_select<
::boost::type_traits::ice_or<
::boost::is_reference<T>::value
, ::boost::is_array<T>::value
template <bool>
struct is_member_pointer_select
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
template <typename T>
struct is_member_pointer_impl
- : is_member_pointer_select<
+ : public is_member_pointer_select<
::boost::type_traits::ice_or<
::boost::is_reference<T>::value
, ::boost::is_array<T>::value
--- /dev/null
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// (C) Copyright Eric Friedman 2002-2003.
+// (C) Copyright Antony Polukhin 2013.
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_NOTHROW_MOVE_ASSIGNABLE_HPP_INCLUDED
+#define BOOST_TT_IS_NOTHROW_MOVE_ASSIGNABLE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/type_traits/has_trivial_move_assign.hpp>
+#include <boost/type_traits/has_nothrow_assign.hpp>
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/utility/declval.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail{
+
+#ifndef BOOST_NO_CXX11_NOEXCEPT
+
+template <class T, class Enable = void>
+struct false_or_cpp11_noexcept_move_assignable: public ::boost::false_type {};
+
+template <class T>
+struct false_or_cpp11_noexcept_move_assignable <
+ T,
+ typename ::boost::enable_if_c<sizeof(T) && BOOST_NOEXCEPT_EXPR(::boost::declval<T&>() = ::boost::declval<T>())>::type
+ > : public ::boost::integral_constant<bool, BOOST_NOEXCEPT_EXPR(::boost::declval<T&>() = ::boost::declval<T>())>
+{};
+
+template <class T>
+struct is_nothrow_move_assignable_imp{
+ BOOST_STATIC_CONSTANT(bool, value = (
+ ::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_reference<T>::value >::value,
+ ::boost::detail::false_or_cpp11_noexcept_move_assignable<T>::value
+ >::value));
+};
+
+#else
+
+template <class T>
+struct is_nothrow_move_assignable_imp{
+ BOOST_STATIC_CONSTANT(bool, value = (
+ ::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_or<
+ ::boost::has_trivial_move_assign<T>::value,
+ ::boost::has_nothrow_assign<T>::value
+ >::value,
+ ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value
+ >::value));
+};
+
+#endif
+
+}
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_nothrow_move_assignable,T,::boost::detail::is_nothrow_move_assignable_imp<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_nothrow_move_assignable,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_nothrow_move_assignable,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_nothrow_move_assignable,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_nothrow_move_assignable,void volatile,false)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_NOTHROW_MOVE_ASSIGNABLE_HPP_INCLUDED
--- /dev/null
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// (C) Copyright Eric Friedman 2002-2003.
+// (C) Copyright Antony Polukhin 2013.
+// Use, modification and distribution are subject to 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).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_NOTHROW_MOVE_CONSTRUCTIBLE_HPP_INCLUDED
+#define BOOST_TT_IS_NOTHROW_MOVE_CONSTRUCTIBLE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/type_traits/has_trivial_move_constructor.hpp>
+#include <boost/type_traits/has_nothrow_copy.hpp>
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/utility/declval.hpp>
+#include <boost/utility/enable_if.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail{
+
+#ifndef BOOST_NO_CXX11_NOEXCEPT
+
+template <class T, class Enable = void>
+struct false_or_cpp11_noexcept_move_constructible: public ::boost::false_type {};
+
+template <class T>
+struct false_or_cpp11_noexcept_move_constructible <
+ T,
+ typename ::boost::enable_if_c<sizeof(T) && BOOST_NOEXCEPT_EXPR(T(::boost::declval<T>()))>::type
+ > : public ::boost::integral_constant<bool, BOOST_NOEXCEPT_EXPR(T(::boost::declval<T>()))>
+{};
+
+template <class T>
+struct is_nothrow_move_constructible_imp{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_reference<T>::value >::value,
+ ::boost::detail::false_or_cpp11_noexcept_move_constructible<T>::value
+ >::value));
+};
+
+#else
+
+template <class T>
+struct is_nothrow_move_constructible_imp{
+ BOOST_STATIC_CONSTANT(bool, value =(
+ ::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_or<
+ ::boost::has_trivial_move_constructor<T>::value,
+ ::boost::has_nothrow_copy<T>::value
+ >::value,
+ ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value
+ >::value));
+};
+
+#endif
+
+}
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_nothrow_move_constructible,T,::boost::detail::is_nothrow_move_constructible_imp<T>::value)
+
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_nothrow_move_constructible,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_nothrow_move_constructible,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_nothrow_move_constructible,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_nothrow_move_constructible,void volatile,false)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_NOTHROW_MOVE_CONSTRUCTIBLE_HPP_INCLUDED
// should be the last #include
#include <boost/type_traits/detail/bool_trait_def.hpp>
+#ifndef BOOST_IS_POD
+#define BOOST_INTERNAL_IS_POD(T) false
+#else
+#define BOOST_INTERNAL_IS_POD(T) BOOST_IS_POD(T)
+#endif
+
namespace boost {
// forward declaration, needed by 'is_pod_array_helper' template below
(::boost::type_traits::ice_or<
::boost::is_scalar<T>::value,
::boost::is_void<T>::value,
- BOOST_IS_POD(T)
+ BOOST_INTERNAL_IS_POD(T)
>::value));
};
#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
template <typename T, std::size_t sz>
struct is_pod_impl<T[sz]>
- : is_pod_impl<T>
+ : public is_pod_impl<T>
{
};
#endif
(::boost::type_traits::ice_or<
::boost::is_scalar<T>::value,
::boost::is_void<T>::value,
- BOOST_IS_POD(T)
+ BOOST_INTERNAL_IS_POD(T)
>::value));
};
};
} // namespace detail
-BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_POD,T,::boost::detail::is_pod_impl<T>::value)
BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pod,T,::boost::detail::is_pod_impl<T>::value)
+// is_POD is the old depricated name for this trait, do not use this as it may
+// be removed in future without warning!!
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_POD,T,::boost::is_pod<T>::value)
} // namespace boost
#include <boost/type_traits/detail/bool_trait_undef.hpp>
+#undef BOOST_INTERNAL_IS_POD
+
#endif // BOOST_TT_IS_POD_HPP_INCLUDED
template <bool>
struct is_pointer_select
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
template <typename T>
struct is_pointer_impl
- : is_pointer_select<
+ : public is_pointer_select<
::boost::type_traits::ice_or<
::boost::is_reference<T>::value
, ::boost::is_array<T>::value
namespace boost {
BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_rvalue_reference,T,false)
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_rvalue_reference,T&&,true)
#endif
namespace detail{
-#if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238)
+#if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) && !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
template <class T>
struct is_signed_values
{
+ //
+ // Note that we cannot use BOOST_STATIC_CONSTANT here, using enum's
+ // rather than "real" static constants simply doesn't work or give
+ // the correct answer.
+ //
typedef typename remove_cv<T>::type no_cv_t;
- BOOST_STATIC_CONSTANT(no_cv_t, minus_one = (static_cast<no_cv_t>(-1)));
- BOOST_STATIC_CONSTANT(no_cv_t, zero = (static_cast<no_cv_t>(0)));
+ static const no_cv_t minus_one = (static_cast<no_cv_t>(-1));
+ static const no_cv_t zero = (static_cast<no_cv_t>(0));
};
template <class T>
template <typename T> struct is_union_impl
{
typedef typename remove_cv<T>::type cvt;
+#ifdef BOOST_IS_UNION
BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(cvt));
+#else
+ BOOST_STATIC_CONSTANT(bool, value = false);
+#endif
};
#else
//
//
template <typename T> struct is_union_impl
{
+#ifdef BOOST_IS_UNION
BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(T));
+#else
+ BOOST_STATIC_CONSTANT(bool, value = false);
+#endif
};
#endif
} // namespace detail
namespace detail{
-#if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238)
+#if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) && !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
template <class T>
struct is_unsigned_values
{
+ //
+ // Note that we cannot use BOOST_STATIC_CONSTANT here, using enum's
+ // rather than "real" static constants simply doesn't work or give
+ // the correct answer.
+ //
typedef typename remove_cv<T>::type no_cv_t;
- BOOST_STATIC_CONSTANT(no_cv_t, minus_one = (static_cast<no_cv_t>(-1)));
- BOOST_STATIC_CONSTANT(no_cv_t, zero = (static_cast<no_cv_t>(0)));
+ static const no_cv_t minus_one = (static_cast<no_cv_t>(-1));
+ static const no_cv_t zero = (static_cast<no_cv_t>(0));
};
template <class T>
template <> struct is_unsigned_imp<volatile char> : public true_type{};
template <> struct is_unsigned_imp<const volatile char> : public true_type{};
#endif
-#if defined(WCHAR_MIN) && (WCHAR_MIN == 0)
+#if defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
template <> struct is_unsigned_imp<wchar_t> : public true_type{};
template <> struct is_unsigned_imp<const wchar_t> : public true_type{};
template <> struct is_unsigned_imp<volatile wchar_t> : public true_type{};
#ifdef BOOST_MSVC
#pragma warning( push )
-#pragma warning( disable : 4584 )
-#elif defined __GNUC__
+#pragma warning( disable : 4584 4250)
+#elif defined(__GNUC__) && (__GNUC__ >= 4)
#pragma GCC system_header
#endif
struct is_virtual_base_of_impl<Base, Derived, mpl::true_>
{
#ifdef __BORLANDC__
- struct X : public virtual Derived, public virtual Base
+ struct boost_type_traits_internal_struct_X : public virtual Derived, public virtual Base
{
- X();
- X(const X&);
- X& operator=(const X&);
- ~X()throw();
+ boost_type_traits_internal_struct_X();
+ boost_type_traits_internal_struct_X(const boost_type_traits_internal_struct_X&);
+ boost_type_traits_internal_struct_X& operator=(const boost_type_traits_internal_struct_X&);
+ ~boost_type_traits_internal_struct_X()throw();
};
- struct Y : public virtual Derived
+ struct boost_type_traits_internal_struct_Y : public virtual Derived
{
- Y();
- Y(const Y&);
- Y& operator=(const Y&);
- ~Y()throw();
+ boost_type_traits_internal_struct_Y();
+ boost_type_traits_internal_struct_Y(const boost_type_traits_internal_struct_Y&);
+ boost_type_traits_internal_struct_Y& operator=(const boost_type_traits_internal_struct_Y&);
+ ~boost_type_traits_internal_struct_Y()throw();
};
#else
- struct X : Derived, virtual Base
+ struct boost_type_traits_internal_struct_X : public Derived, virtual Base
{
- X();
- X(const X&);
- X& operator=(const X&);
- ~X()throw();
+ boost_type_traits_internal_struct_X();
+ boost_type_traits_internal_struct_X(const boost_type_traits_internal_struct_X&);
+ boost_type_traits_internal_struct_X& operator=(const boost_type_traits_internal_struct_X&);
+ ~boost_type_traits_internal_struct_X()throw();
};
- struct Y : Derived
+ struct boost_type_traits_internal_struct_Y : public Derived
{
- Y();
- Y(const Y&);
- Y& operator=(const Y&);
- ~Y()throw();
+ boost_type_traits_internal_struct_Y();
+ boost_type_traits_internal_struct_Y(const boost_type_traits_internal_struct_Y&);
+ boost_type_traits_internal_struct_Y& operator=(const boost_type_traits_internal_struct_Y&);
+ ~boost_type_traits_internal_struct_Y()throw();
};
#endif
- BOOST_STATIC_CONSTANT(bool, value = (sizeof(X)==sizeof(Y)));
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(boost_type_traits_internal_struct_X)==sizeof(boost_type_traits_internal_struct_Y)));
};
template<typename Base, typename Derived>
struct is_volatile_rval_filter
{
#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_volatile);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_volatile);
#else
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_volatile);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_volatile);
#endif
};
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
//
// We can't filter out rvalue_references at the same level as
// references or we get ambiguities from msvc:
template <class T>
struct is_volatile_rval_filter<T&&>
{
- BOOST_STATIC_CONSTANT(bool, value = false);
+ BOOST_STATIC_CONSTANT(bool, value = false);
};
#endif
}
template <bool is_ref, bool array>
struct is_volatile_helper
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
template <typename T>
struct is_volatile_impl
- : is_volatile_helper<
+ : public is_volatile_helper<
is_reference<T>::value
, is_array<T>::value
>::template result_<T>
is_same<t_no_cv, unsigned long>,
long,
#if defined(BOOST_HAS_LONG_LONG)
+#ifdef BOOST_HAS_INT128
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(boost::long_long_type),
+ boost::long_long_type,
+ boost::int128_type
+ >::type
+#else
boost::long_long_type
+#endif
#elif defined(BOOST_HAS_MS_INT64)
__int64
#else
sizeof(t_no_cv) == sizeof(unsigned long),
long,
#if defined(BOOST_HAS_LONG_LONG)
+#ifdef BOOST_HAS_INT128
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(boost::long_long_type),
+ boost::long_long_type,
+ boost::int128_type
+ >::type
+#else
boost::long_long_type
+#endif
#elif defined(BOOST_HAS_MS_INT64)
__int64
#else
is_same<t_no_cv, long>,
unsigned long,
#if defined(BOOST_HAS_LONG_LONG)
+#ifdef BOOST_HAS_INT128
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(boost::ulong_long_type),
+ boost::ulong_long_type,
+ boost::uint128_type
+ >::type
+#else
boost::ulong_long_type
+#endif
#elif defined(BOOST_HAS_MS_INT64)
unsigned __int64
#else
sizeof(t_no_cv) == sizeof(unsigned long),
unsigned long,
#if defined(BOOST_HAS_LONG_LONG)
+#ifdef BOOST_HAS_INT128
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(boost::ulong_long_type),
+ boost::ulong_long_type,
+ boost::uint128_type
+ >::type
+#else
boost::ulong_long_type
+#endif
#elif defined(BOOST_HAS_MS_INT64)
unsigned __int64
#else
};
template<typename T, typename ID>
- struct msvc_register_type : msvc_extract_type<ID>
+ struct msvc_register_type : public msvc_extract_type<ID>
{
template<>
struct id2type_impl<true> //VC7.0 specific bugfeature
};
template<typename T, typename ID>
- struct msvc_register_type : msvc_extract_type<ID>
+ struct msvc_register_type : public msvc_extract_type<ID>
{
typedef msvc_extract_type<ID> base_type;
struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature
template<class T>
struct promote_impl
- : integral_promotion<
+ : public integral_promotion<
BOOST_DEDUCED_TYPENAME floating_point_promotion<T>::type
>
{
>::type type;
};
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
//
// We can't filter out rvalue_references at the same level as
// references or we get ambiguities from msvc:
namespace boost {
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
namespace detail{
template <class T>
struct rvalue_ref_filter_rem_cv
{
- typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type;
+ typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type;
};
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
//
// We can't filter out rvalue_references at the same level as
// references or we get ambiguities from msvc:
template <class T>
struct rvalue_ref_filter_rem_cv<T&&>
{
- typedef T&& type;
+ typedef T&& type;
};
#endif
}
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// convert a type T to a non-cv-qualified type - remove_cv<T>
BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename boost::detail::rvalue_ref_filter_rem_cv<T>::type)
#ifndef BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
#define BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
-#include <boost/type_traits/broken_compiler_spec.hpp>
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/type_traits/broken_compiler_spec.hpp>
+#endif
#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
#include <boost/type_traits/msvc/remove_pointer.hpp>
+#elif defined(BOOST_MSVC)
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_pointer.hpp>
#endif
// should be the last #include
namespace boost {
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#ifdef BOOST_MSVC
+
+namespace detail{
+
+ //
+ // We need all this crazy indirection because a type such as:
+ //
+ // T (*const)(U)
+ //
+ // Does not bind to a <T*> or <T*const> partial specialization with VC10 and earlier
+ //
+ template <class T>
+ struct remove_pointer_imp
+ {
+ typedef T type;
+ };
+
+ template <class T>
+ struct remove_pointer_imp<T*>
+ {
+ typedef T type;
+ };
+
+ template <class T, bool b>
+ struct remove_pointer_imp3
+ {
+ typedef typename remove_pointer_imp<typename boost::remove_cv<T>::type>::type type;
+ };
+
+ template <class T>
+ struct remove_pointer_imp3<T, false>
+ {
+ typedef T type;
+ };
+
+ template <class T>
+ struct remove_pointer_imp2
+ {
+ typedef typename remove_pointer_imp3<T, ::boost::is_pointer<T>::value>::type type;
+ };
+}
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_pointer,T,typename boost::detail::remove_pointer_imp2<T>::type)
+
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_pointer,T,T)
BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T*,T)
template <class T>
struct remove_rvalue_ref
{
- typedef T type;
+ typedef T type;
};
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template <class T>
struct remove_rvalue_ref<T&&>
{
- typedef T type;
+ typedef T type;
};
#endif
// We can't filter out rvalue_references at the same level as
// references or we get ambiguities from msvc:
//
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
template <typename T>
struct remove_volatile_impl<T&&>
{
{
template <std::size_t target, class TestType>
struct apply
- : mpl::if_c<(alignment_of<TestType>::value == target), TestType, char>
+ : public mpl::if_c<(alignment_of<TestType>::value == target), TestType, char>
{
enum { value = (alignment_of<TestType>::value == target) };
};
template <bool found, std::size_t target, class TestType>
struct lower_alignment_helper
- : lower_alignment_helper_impl<found>::template apply<target,TestType>
+ : public lower_alignment_helper_impl<found>::template apply<target,TestType>
{
};
#else
struct __attribute__((__aligned__(8))) a8 {};
struct __attribute__((__aligned__(16))) a16 {};
struct __attribute__((__aligned__(32))) a32 {};
+struct __attribute__((__aligned__(64))) a64 {};
+struct __attribute__((__aligned__(128))) a128 {};
}
template<> class type_with_alignment<1> { public: typedef char type; };
template<> class type_with_alignment<8> { public: typedef align::a8 type; };
template<> class type_with_alignment<16> { public: typedef align::a16 type; };
template<> class type_with_alignment<32> { public: typedef align::a32 type; };
+template<> class type_with_alignment<64> { public: typedef align::a64 type; };
+template<> class type_with_alignment<128> { public: typedef align::a128 type; };
namespace detail {
BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a2,true)
BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a8,true)
BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a16,true)
BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a32,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a64,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a128,true)
}
#endif
#if (defined(BOOST_MSVC) || (defined(BOOST_INTEL) && defined(_MSC_VER))) && _MSC_VER >= 1300
--- /dev/null
+// Copyright (C) 2007 Peder Holt
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
+# define BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
+
+# include <boost/config.hpp>
+# include <boost/detail/workaround.hpp>
+# include <boost/mpl/int.hpp>
+
+namespace boost
+{
+ namespace type_of
+ {
+
+ template<int N> struct encode_counter : encode_counter<N - 1> {};
+ template<> struct encode_counter<0> {};
+
+ char (*encode_index(...))[1];
+
+# define BOOST_TYPEOF_INDEX(T) (sizeof(*boost::type_of::encode_index((boost::type_of::encode_counter<1000>*)0)))
+# define BOOST_TYPEOF_NEXT_INDEX(next) friend char (*encode_index(encode_counter<next>*))[next];
+
+
+ //Typeof code
+
+ template<typename ID>
+ struct msvc_extract_type
+ {
+ struct id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID>
+ {
+ typedef msvc_extract_type<ID> base_type;
+ struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature, also works for Digital Mars
+ {
+ typedef T type;
+ };
+ };
+
+
+ template<int ID>
+ struct msvc_typeid_wrapper {
+ typedef typename msvc_extract_type<mpl::int_<ID> >::id2type id2type;
+ typedef typename id2type::type type;
+ };
+
+ //Tie it all together
+ template<typename T>
+ struct encode_type
+ {
+ //Get the next available compile time constants index
+ BOOST_STATIC_CONSTANT(unsigned,value=BOOST_TYPEOF_INDEX(T));
+ //Instantiate the template
+ typedef typename msvc_register_type<T,mpl::int_<value> >::id2type type;
+ //Set the next compile time constants index
+ BOOST_STATIC_CONSTANT(unsigned,next=value+1);
+ //Increment the compile time constant (only needed when extensions are not active
+ BOOST_TYPEOF_NEXT_INDEX(next);
+ };
+
+ template<class T>
+ struct sizer
+ {
+ typedef char(*type)[encode_type<T>::value];
+ };
+
+ template<typename T>
+ typename sizer<T>::type encode_start(T const&);
+
+ template<typename Organizer, typename T>
+ msvc_register_type<T,Organizer> typeof_register_type(const T&,Organizer* =0);
+
+# define BOOST_TYPEOF(expr) \
+ boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(expr))>::type
+
+# define BOOST_TYPEOF_TPL(expr) typename BOOST_TYPEOF(expr)
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+ struct name {\
+ BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
+ typedef typename boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef typename id2type::type type;\
+ };
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+ struct name {\
+ BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
+ typedef boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef id2type::type type;\
+ };
+
+ }
+}
+
+#endif//BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+
+// 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)
+
+// boostinspect:nounnamed
+
+#ifndef BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
+#define BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
+
+#include <boost/mpl/deref.hpp>
+#include <boost/mpl/next.hpp>
+
+#ifndef BOOST_TYPEOF_SUPPRESS_UNNAMED_NAMESPACE
+
+# define BOOST_TYPEOF_BEGIN_ENCODE_NS namespace { namespace boost_typeof {
+# define BOOST_TYPEOF_END_ENCODE_NS }}
+# define BOOST_TYPEOF_ENCODE_NS_QUALIFIER boost_typeof
+
+#else
+
+# define BOOST_TYPEOF_BEGIN_ENCODE_NS namespace boost { namespace type_of {
+# define BOOST_TYPEOF_END_ENCODE_NS }}
+# define BOOST_TYPEOF_ENCODE_NS_QUALIFIER boost::type_of
+
+# define BOOST_TYPEOF_TEXT "unnamed namespace is off"
+# include <boost/typeof/message.hpp>
+
+#endif
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+template<class V, class Type_Not_Registered_With_Typeof_System>
+struct encode_type_impl;
+
+template<class T, class Iter>
+struct decode_type_impl
+{
+ typedef int type; // MSVC ETI workaround
+};
+
+template<class T>
+struct decode_nested_template_helper_impl;
+
+BOOST_TYPEOF_END_ENCODE_NS
+
+namespace boost { namespace type_of {
+
+ template<class V, class T>
+ struct encode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_type_impl<V, T>
+ {};
+
+ template<class Iter>
+ struct decode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::decode_type_impl<
+ typename Iter::type,
+ typename Iter::next
+ >
+ {};
+}}
+
+#endif//BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2005 Arkadiy Vertleyb
+// 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)
+
+#ifndef BOOST_TYPEOF_ENCODE_DECODE_PARAMS_HPP_INCLUDED
+#define BOOST_TYPEOF_ENCODE_DECODE_PARAMS_HPP_INCLUDED
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+// Assumes iter0 contains initial iterator
+
+#define BOOST_TYPEOF_DECODE_PARAM(z, n, text) \
+ typedef boost::type_of::decode_type<iter##n> decode##n; \
+ typedef typename decode##n::type p##n; \
+ typedef typename decode##n::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_DECODE_PARAMS(n)\
+ BOOST_PP_REPEAT(n, BOOST_TYPEOF_DECODE_PARAM, ~)
+
+// The P0, P1, ... PN are encoded and added to V
+
+#define BOOST_TYPEOF_ENCODE_PARAMS_BEGIN(z, n, text)\
+ typename boost::type_of::encode_type<
+
+#define BOOST_TYPEOF_ENCODE_PARAMS_END(z, n, text)\
+ , BOOST_PP_CAT(P, n)>::type
+
+#define BOOST_TYPEOF_ENCODE_PARAMS(n, ID) \
+ BOOST_PP_REPEAT(n, BOOST_TYPEOF_ENCODE_PARAMS_BEGIN, ~) \
+ typename boost::type_of::push_back<V, boost::mpl::size_t<ID> >::type \
+ BOOST_PP_REPEAT(n, BOOST_TYPEOF_ENCODE_PARAMS_END, ~)
+
+#endif//BOOST_TYPEOF_ENCODE_DECODE_PARAMS_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_INT_ENCODING_HPP_INCLUDED
+#define BOOST_TYPEOF_INT_ENCODING_HPP_INCLUDED
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/size_t.hpp>
+#include <boost/config.hpp>
+
+namespace boost { namespace type_of {
+
+ template<class T> struct get_unsigned
+ {
+ typedef T type;
+ };
+ template<> struct get_unsigned<signed char>
+ {
+ typedef unsigned char type;
+ };
+ template<> struct get_unsigned<char>
+ {
+ typedef unsigned char type;
+ };
+ template<> struct get_unsigned<short>
+ {
+ typedef unsigned short type;
+ };
+ template<> struct get_unsigned<int>
+ {
+ typedef unsigned int type;
+ };
+ template<> struct get_unsigned<long>
+ {
+ typedef unsigned long type;
+ };
+
+ //////////////////////////
+
+ template<std::size_t n, bool Overflow>
+ struct pack
+ {
+ BOOST_STATIC_CONSTANT(std::size_t , value=((n + 1) * 2 + (Overflow ? 1 : 0)));
+ };
+
+ template<std::size_t m>
+ struct unpack
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = (m / 2) - 1);
+ BOOST_STATIC_CONSTANT(std::size_t, overflow = (m % 2 == 1));
+ };
+
+ ////////////////////////////////
+
+ template<class V, std::size_t n, bool overflow = (n >= 0x3fffffff)>
+ struct encode_size_t : push_back<
+ V,
+ boost::mpl::size_t<pack<n, false>::value>
+ >
+ {};
+
+ template<class V, std::size_t n>
+ struct encode_size_t<V, n, true> : push_back<typename push_back<
+ V,
+ boost::mpl::size_t<pack<n % 0x3ffffffe, true>::value> >::type,
+ boost::mpl::size_t<n / 0x3ffffffe>
+ >
+ {};
+
+ template<class V, class T, T n>
+ struct encode_integral : encode_size_t< V, (typename get_unsigned<T>::type)n,(((typename get_unsigned<T>::type)n)>=0x3fffffff) >
+ {};
+
+ template<class V, bool b>
+ struct encode_integral<V, bool, b> : encode_size_t< V, b?1:0, false>
+ {};
+ ///////////////////////////
+
+ template<std::size_t n, class Iter, bool overflow>
+ struct decode_size_t;
+
+ template<std::size_t n, class Iter>
+ struct decode_size_t<n, Iter, false>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t,value = n);
+ typedef Iter iter;
+ };
+
+ template<std::size_t n, class Iter>
+ struct decode_size_t<n, Iter, true>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t,m = Iter::type::value);
+
+ BOOST_STATIC_CONSTANT(std::size_t,value = (std::size_t)m * 0x3ffffffe + n);
+ typedef typename Iter::next iter;
+ };
+
+ template<class T, class Iter>
+ struct decode_integral
+ {
+ typedef decode_integral<T,Iter> self_t;
+ BOOST_STATIC_CONSTANT(std::size_t,m = Iter::type::value);
+
+ BOOST_STATIC_CONSTANT(std::size_t,n = unpack<m>::value);
+
+ BOOST_STATIC_CONSTANT(std::size_t,overflow = unpack<m>::overflow);
+
+ typedef typename Iter::next nextpos;
+
+ static const T value = (T)(std::size_t)decode_size_t<n, nextpos, overflow>::value;
+
+ typedef typename decode_size_t<self_t::n, nextpos, self_t::overflow>::iter iter;
+ };
+
+}}//namespace
+
+#endif//BOOST_TYPEOF_INT_ENCODING_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2005 Arkadiy Vertleyb
+// 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)
+
+#ifndef BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
+#define BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
+
+#define BOOST_TYPEOF_unsigned (unsigned)
+#define BOOST_TYPEOF_signed (signed)
+
+#define char_BOOST_TYPEOF (char)
+#define short_BOOST_TYPEOF (short)
+#define int_BOOST_TYPEOF (int)
+#define long_BOOST_TYPEOF (long)
+
+#define BOOST_TYPEOF_char_BOOST_TYPEOF (char)
+#define BOOST_TYPEOF_short_BOOST_TYPEOF (short)
+#define BOOST_TYPEOF_int_BOOST_TYPEOF (int)
+#define BOOST_TYPEOF_long_BOOST_TYPEOF (long)
+#define BOOST_TYPEOF_bool_BOOST_TYPEOF (bool)
+#define BOOST_TYPEOF_unsigned_BOOST_TYPEOF (unsigned)
+#define BOOST_TYPEOF_size_t_BOOST_TYPEOF (size_t)
+
+#define BOOST_TYPEOF_MAKE_OBJ_char BOOST_TYPEOF_INTEGRAL_PARAM(char)
+#define BOOST_TYPEOF_MAKE_OBJ_short BOOST_TYPEOF_INTEGRAL_PARAM(short)
+#define BOOST_TYPEOF_MAKE_OBJ_int BOOST_TYPEOF_INTEGRAL_PARAM(int)
+#define BOOST_TYPEOF_MAKE_OBJ_long BOOST_TYPEOF_INTEGRAL_PARAM(long)
+#define BOOST_TYPEOF_MAKE_OBJ_bool BOOST_TYPEOF_INTEGRAL_PARAM(bool)
+#define BOOST_TYPEOF_MAKE_OBJ_unsigned BOOST_TYPEOF_INTEGRAL_PARAM(unsigned)
+#define BOOST_TYPEOF_MAKE_OBJ_size_t BOOST_TYPEOF_INTEGRAL_PARAM(size_t)
+#define BOOST_TYPEOF_MAKE_OBJ_unsignedchar BOOST_TYPEOF_INTEGRAL_PARAM(unsigned char)
+#define BOOST_TYPEOF_MAKE_OBJ_unsignedshort BOOST_TYPEOF_INTEGRAL_PARAM(unsigned short)
+#define BOOST_TYPEOF_MAKE_OBJ_unsignedint BOOST_TYPEOF_INTEGRAL_PARAM(unsigned int)
+#define BOOST_TYPEOF_MAKE_OBJ_unsignedlong BOOST_TYPEOF_INTEGRAL_PARAM(unsigned long)
+#define BOOST_TYPEOF_MAKE_OBJ_signedchar BOOST_TYPEOF_INTEGRAL_PARAM(signed char)
+#define BOOST_TYPEOF_MAKE_OBJ_signedshort BOOST_TYPEOF_INTEGRAL_PARAM(signed short)
+#define BOOST_TYPEOF_MAKE_OBJ_signedint BOOST_TYPEOF_INTEGRAL_PARAM(signed int)
+#define BOOST_TYPEOF_MAKE_OBJ_signedlong BOOST_TYPEOF_INTEGRAL_PARAM(signed long)
+#define BOOST_TYPEOF_MAKE_OBJ_integral(x) BOOST_TYPEOF_INTEGRAL_PARAM(x)
+
+#define BOOST_TYPEOF_INTEGRAL(X) integral(X) BOOST_TYPEOF_EAT
+#define BOOST_TYPEOF_EAT_BOOST_TYPEOF
+#define BOOST_TYPEOF_integral(X) (integral(X))
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM(Type)\
+ (INTEGRAL_PARAM)\
+ (Type)
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param)\
+ BOOST_PP_SEQ_ELEM(1, Param)
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_EXPANDTYPE(Param)\
+ BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param)
+
+// INTEGRAL_PARAM "virtual functions" implementation
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_ENCODE(This, n)\
+ typedef typename boost::type_of::encode_integral<\
+ BOOST_PP_CAT(V, n),\
+ BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(This),\
+ BOOST_PP_CAT(P, n)\
+ >::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_DECODE(This, n)\
+ typedef boost::type_of::decode_integral<BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(This), BOOST_PP_CAT(iter, n)> BOOST_PP_CAT(d, n);\
+ static const BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(This) BOOST_PP_CAT(P, n) = BOOST_PP_CAT(d, n)::value;\
+ typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_PLACEHOLDER(Param)\
+ (BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param))0
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_DECLARATION_TYPE(Param)\
+ BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param)
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_PLACEHOLDER_TYPES(Param, n)\
+ BOOST_PP_CAT(T,n)
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_ISTEMPLATE 0
+
+#endif//BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#if defined(_MSC_VER) && defined BOOST_TYPEOF_MESSAGES
+# pragma message(BOOST_TYPEOF_TEXT)
+#endif
+#undef BOOST_TYPEOF_TEXT
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+// 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)
+
+#ifndef BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED
+#define BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED
+
+#include <boost/typeof/encode_decode.hpp>
+#include <boost/preprocessor/facilities/identity.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+// modifiers
+
+#define BOOST_TYPEOF_modifier_support(ID, Fun)\
+ template<class V, class T> struct encode_type_impl<V, Fun(T)>\
+ {\
+ typedef\
+ typename boost::type_of::encode_type<\
+ typename boost::type_of::push_back<\
+ V\
+ , boost::mpl::size_t<ID> >::type\
+ , T>::type\
+ type;\
+ };\
+ template<class Iter> struct decode_type_impl<boost::mpl::size_t<ID>, Iter>\
+ {\
+ typedef boost::type_of::decode_type<Iter> d1;\
+ typedef Fun(typename d1::type) type;\
+ typedef typename d1::iter iter;\
+ }
+
+
+#define BOOST_TYPEOF_const_fun(T) const T
+#define BOOST_TYPEOF_volatile_fun(T) volatile T
+#define BOOST_TYPEOF_volatile_const_fun(T) volatile const T
+#define BOOST_TYPEOF_pointer_fun(T) T*
+#define BOOST_TYPEOF_reference_fun(T) T&
+
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+//Borland incorrectly handles T const, T const volatile and T volatile.
+//It drops the decoration no matter what, so we need to try to handle T* const etc. without loosing the top modifier.
+#define BOOST_TYPEOF_const_pointer_fun(T) T const *
+#define BOOST_TYPEOF_const_reference_fun(T) T const &
+#define BOOST_TYPEOF_volatile_pointer_fun(T) T volatile*
+#define BOOST_TYPEOF_volatile_reference_fun(T) T volatile&
+#define BOOST_TYPEOF_volatile_const_pointer_fun(T) T volatile const *
+#define BOOST_TYPEOF_volatile_const_reference_fun(T) T volatile const &
+#endif
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_pointer_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_reference_fun);
+
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_pointer_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_reference_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_pointer_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_reference_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_pointer_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_reference_fun);
+#endif
+
+BOOST_TYPEOF_END_ENCODE_NS
+
+#undef BOOST_TYPEOF_modifier_support
+#undef BOOST_TYPEOF_const_fun
+#undef BOOST_TYPEOF_volatile_fun
+#undef BOOST_TYPEOF_volatile_const_fun
+#undef BOOST_TYPEOF_pointer_fun
+#undef BOOST_TYPEOF_reference_fun
+
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+#undef BOOST_TYPEOF_const_pointer_fun
+#undef BOOST_TYPEOF_const_reference_fun
+#undef BOOST_TYPEOF_volatile_pointer_fun
+#undef BOOST_TYPEOF_volatile_reference_fun
+#undef BOOST_TYPEOF_volatile_const_pointer_fun
+#undef BOOST_TYPEOF_volatile_const_reference_fun
+#endif
+
+// arrays
+
+#define BOOST_TYPEOF_array_support(ID, Qualifier)\
+ template<class V, class T, int N>\
+ struct encode_type_impl<V, Qualifier() T[N]>\
+ {\
+ typedef\
+ typename boost::type_of::encode_type<\
+ typename boost::type_of::push_back<\
+ typename boost::type_of::push_back<\
+ V\
+ , boost::mpl::size_t<ID> >::type\
+ , boost::mpl::size_t<N> >::type\
+ , T>::type\
+ type;\
+ };\
+ template<class Iter>\
+ struct decode_type_impl<boost::mpl::size_t<ID>, Iter>\
+ {\
+ enum{n = Iter::type::value};\
+ typedef boost::type_of::decode_type<typename Iter::next> d;\
+ typedef typename d::type Qualifier() type[n];\
+ typedef typename d::iter iter;\
+ }
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_EMPTY);
+BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(const));
+BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(volatile));
+BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(volatile const));
+BOOST_TYPEOF_END_ENCODE_NS
+
+#undef BOOST_TYPEOF_array_support
+
+#endif//BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED
--- /dev/null
+
+// Copyright (C) 2005 Igor Chesnokov, mailto:ichesnokov@gmail.com (VC 6.5,VC 7.1 + counter code)
+// Copyright (C) 2005-2007 Peder Holt (VC 7.0 + framework)
+// Copyright (C) 2006 Steven Watanabe (VC 8.0)
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
+# define BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
+
+# include <boost/config.hpp>
+# include <boost/detail/workaround.hpp>
+# include <boost/mpl/int.hpp>
+# include <boost/type_traits/is_function.hpp>
+# include <boost/utility/enable_if.hpp>
+
+# if BOOST_WORKAROUND(BOOST_MSVC,>=1310)
+# include <typeinfo>
+# endif
+
+namespace boost
+{
+ namespace type_of
+ {
+
+ //Compile time constant code
+# if BOOST_WORKAROUND(BOOST_MSVC,>=1300) && defined(_MSC_EXTENSIONS)
+ template<int N> struct the_counter;
+
+ template<typename T,int N = 5/*for similarity*/>
+ struct encode_counter
+ {
+ __if_exists(the_counter<N + 256>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 257>::count));
+ }
+ __if_not_exists(the_counter<N + 256>)
+ {
+ __if_exists(the_counter<N + 64>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 65>::count));
+ }
+ __if_not_exists(the_counter<N + 64>)
+ {
+ __if_exists(the_counter<N + 16>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 17>::count));
+ }
+ __if_not_exists(the_counter<N + 16>)
+ {
+ __if_exists(the_counter<N + 4>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 5>::count));
+ }
+ __if_not_exists(the_counter<N + 4>)
+ {
+ __if_exists(the_counter<N>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 1>::count));
+ }
+ __if_not_exists(the_counter<N>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=N);
+ typedef the_counter<N> type;
+ }
+ }
+ }
+ }
+ }
+ };
+
+# define BOOST_TYPEOF_INDEX(T) (encode_counter<T>::count)
+# define BOOST_TYPEOF_NEXT_INDEX(next)
+# else
+ template<int N> struct encode_counter : encode_counter<N - 1> {};
+ template<> struct encode_counter<0> {};
+
+ //Need to default to a larger value than 4, as due to MSVC's ETI errors. (sizeof(int)==4)
+ char (*encode_index(...))[5];
+
+# define BOOST_TYPEOF_INDEX(T) (sizeof(*boost::type_of::encode_index((boost::type_of::encode_counter<1005>*)0)))
+# define BOOST_TYPEOF_NEXT_INDEX(next) friend char (*encode_index(encode_counter<next>*))[next];
+# endif
+
+ //Typeof code
+
+# if BOOST_WORKAROUND(BOOST_MSVC,==1300)
+ template<typename ID>
+ struct msvc_extract_type
+ {
+ template<bool>
+ struct id2type_impl;
+
+ typedef id2type_impl<true> id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID>
+ {
+ template<>
+ struct id2type_impl<true> //VC7.0 specific bugfeature
+ {
+ typedef T type;
+ };
+ };
+#elif BOOST_WORKAROUND(BOOST_MSVC,>=1400)
+ struct msvc_extract_type_default_param {};
+
+ template<typename ID, typename T = msvc_extract_type_default_param>
+ struct msvc_extract_type;
+
+ template<typename ID>
+ struct msvc_extract_type<ID, msvc_extract_type_default_param> {
+ template<bool>
+ struct id2type_impl;
+
+ typedef id2type_impl<true> id2type;
+ };
+
+ template<typename ID, typename T>
+ struct msvc_extract_type : msvc_extract_type<ID,msvc_extract_type_default_param>
+ {
+ template<>
+ struct id2type_impl<true> //VC8.0 specific bugfeature
+ {
+ typedef T type;
+ };
+ template<bool>
+ struct id2type_impl;
+
+ typedef id2type_impl<true> id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID, T>
+ {
+ };
+# else
+ template<typename ID>
+ struct msvc_extract_type
+ {
+ struct id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID>
+ {
+ typedef msvc_extract_type<ID> base_type;
+ struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature
+ {
+ typedef T type;
+ };
+ };
+# endif
+// EAN: preprocess this block out on advice of Peder Holt
+// to eliminate errors in type_traits/common_type.hpp
+# if 0 //BOOST_WORKAROUND(BOOST_MSVC,==1310)
+ template<const std::type_info& ref_type_info>
+ struct msvc_typeid_wrapper {
+ typedef typename msvc_extract_type<msvc_typeid_wrapper>::id2type id2type;
+ typedef typename id2type::type wrapped_type;
+ typedef typename wrapped_type::type type;
+ };
+ //This class is used for registering the type T. encode_type<T> is mapped against typeid(encode_type<T>).
+ //msvc_typeid_wrapper<typeid(encode_type<T>)> will now have a type typedef that equals encode_type<T>.
+ template<typename T>
+ struct encode_type
+ {
+ typedef encode_type<T> input_type;
+ //Invoke registration of encode_type<T>. typeid(encode_type<T>) is now mapped to encode_type<T>. Do not use registered_type for anything.
+ //The reason for registering encode_type<T> rather than T, is that VC handles typeid(function reference) poorly. By adding another
+ //level of indirection, we solve this problem.
+ typedef typename msvc_register_type<input_type,msvc_typeid_wrapper<typeid(input_type)> >::id2type registered_type;
+ typedef T type;
+ };
+
+ template<typename T> typename disable_if<
+ typename is_function<T>::type,
+ typename encode_type<T>::input_type>::type encode_start(T const&);
+
+ template<typename T> typename enable_if<
+ typename is_function<T>::type,
+ typename encode_type<T>::input_type>::type encode_start(T&);
+
+ template<typename Organizer, typename T>
+ msvc_register_type<T,Organizer> typeof_register_type(const T&);
+
+
+# define BOOST_TYPEOF(expr) \
+ boost::type_of::msvc_typeid_wrapper<typeid(boost::type_of::encode_start(expr))>::type
+
+# define BOOST_TYPEOF_TPL(expr) typename BOOST_TYPEOF(expr)
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+struct name {\
+ enum {_typeof_register_value=sizeof(typeid(boost::type_of::typeof_register_type<name>(expr)))};\
+ typedef typename boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef typename id2type::type type;\
+};
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+struct name {\
+ enum {_typeof_register_value=sizeof(typeid(boost::type_of::typeof_register_type<name>(expr)))};\
+ typedef boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef id2type::type type;\
+};
+
+# else
+ template<int ID>
+ struct msvc_typeid_wrapper {
+ typedef typename msvc_extract_type<mpl::int_<ID> >::id2type id2type;
+ typedef typename id2type::type type;
+ };
+ //Workaround for ETI-bug for VC6 and VC7
+ template<>
+ struct msvc_typeid_wrapper<1> {
+ typedef msvc_typeid_wrapper<1> type;
+ };
+ //Workaround for ETI-bug for VC7.1
+ template<>
+ struct msvc_typeid_wrapper<4> {
+ typedef msvc_typeid_wrapper<4> type;
+ };
+
+ //Tie it all together
+ template<typename T>
+ struct encode_type
+ {
+ //Get the next available compile time constants index
+ BOOST_STATIC_CONSTANT(unsigned,value=BOOST_TYPEOF_INDEX(T));
+ //Instantiate the template
+ typedef typename msvc_register_type<T,mpl::int_<value> >::id2type type;
+ //Set the next compile time constants index
+ BOOST_STATIC_CONSTANT(unsigned,next=value+1);
+ //Increment the compile time constant (only needed when extensions are not active
+ BOOST_TYPEOF_NEXT_INDEX(next);
+ };
+
+ template<class T>
+ struct sizer
+ {
+ typedef char(*type)[encode_type<T>::value];
+ };
+# if BOOST_WORKAROUND(BOOST_MSVC,>=1310)
+ template<typename T> typename disable_if<
+ typename is_function<T>::type,
+ typename sizer<T>::type>::type encode_start(T const&);
+
+ template<typename T> typename enable_if<
+ typename is_function<T>::type,
+ typename sizer<T>::type>::type encode_start(T&);
+# else
+ template<typename T>
+ typename sizer<T>::type encode_start(T const&);
+# endif
+ template<typename Organizer, typename T>
+ msvc_register_type<T,Organizer> typeof_register_type(const T&,Organizer* =0);
+
+# define BOOST_TYPEOF(expr) \
+ boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(expr))>::type
+
+# define BOOST_TYPEOF_TPL(expr) typename BOOST_TYPEOF(expr)
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+ struct name {\
+ BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
+ typedef typename boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef typename id2type::type type;\
+ };
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+ struct name {\
+ BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
+ typedef boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef id2type::type type;\
+ };
+
+#endif
+ }
+}
+
+#endif//BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2006 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_NATIVE_HPP_INCLUDED
+#define BOOST_TYPEOF_NATIVE_HPP_INCLUDED
+
+#ifndef MSVC_TYPEOF_HACK
+
+#ifdef BOOST_NO_SFINAE
+
+namespace boost { namespace type_of {
+
+ template<class T>
+ T& ensure_obj(const T&);
+
+}}
+
+#else
+
+#include <boost/type_traits/is_function.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace type_of {
+# ifdef BOOST_NO_SFINAE
+ template<class T>
+ T& ensure_obj(const T&);
+# else
+ template<typename T>
+ typename enable_if<is_function<T>, T&>::type
+ ensure_obj(T&);
+
+ template<typename T>
+ typename disable_if<is_function<T>, T&>::type
+ ensure_obj(const T&);
+# endif
+}}
+
+#endif//BOOST_NO_SFINAE
+
+#define BOOST_TYPEOF(expr) BOOST_TYPEOF_KEYWORD(boost::type_of::ensure_obj(expr))
+#define BOOST_TYPEOF_TPL BOOST_TYPEOF
+
+#define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+ struct name {\
+ typedef BOOST_TYPEOF_TPL(expr) type;\
+ };
+
+#define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+ struct name {\
+ typedef BOOST_TYPEOF(expr) type;\
+ };
+
+#endif//MSVC_TYPEOF_HACK
+
+#define BOOST_TYPEOF_REGISTER_TYPE(x)
+#define BOOST_TYPEOF_REGISTER_TEMPLATE(x, params)
+
+#endif//BOOST_TYPEOF_NATIVE_HPP_INCLUDED
+
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED
+#define BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED
+
+#include <boost/typeof/encode_decode_params.hpp>
+#include <boost/typeof/encode_decode.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+enum {PTR_DATA_MEM_ID = BOOST_TYPEOF_UNIQUE_ID()};
+
+template<class V, class P0, class P1>
+struct encode_type_impl<V, P0 P1::*>
+{
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(2, PTR_DATA_MEM_ID) type;
+};
+
+template<class Iter>
+struct decode_type_impl<boost::mpl::size_t<PTR_DATA_MEM_ID>, Iter>
+{
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(2)
+
+ template<class T> struct workaround{
+ typedef p0 T::* type;
+ };
+ typedef typename decode_type_impl<boost::mpl::size_t<PTR_DATA_MEM_ID>, Iter>::template workaround<p1>::type type;
+ typedef iter2 iter;
+};
+
+BOOST_TYPEOF_END_ENCODE_NS
+
+#endif//BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_REGISTER_FUNCTIONS_HPP_INCLUDED
+#define BOOST_TYPEOF_REGISTER_FUNCTIONS_HPP_INCLUDED
+
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/if.hpp>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+#ifndef BOOST_TYPEOF_LIMIT_FUNCTION_ARITY
+#define BOOST_TYPEOF_LIMIT_FUNCTION_ARITY 10
+#endif
+
+enum
+{
+ FUN_ID = BOOST_TYPEOF_UNIQUE_ID(),
+ FUN_PTR_ID = FUN_ID + 1 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ FUN_REF_ID = FUN_ID + 2 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ MEM_FUN_ID = FUN_ID + 3 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ CONST_MEM_FUN_ID = FUN_ID + 4 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ VOLATILE_MEM_FUN_ID = FUN_ID + 5 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ VOLATILE_CONST_MEM_FUN_ID = FUN_ID + 6 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ FUN_VAR_ID = FUN_ID + 7 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ FUN_VAR_PTR_ID = FUN_ID + 8 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ FUN_VAR_REF_ID = FUN_ID + 9 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ MEM_FUN_VAR_ID = FUN_ID + 10 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ CONST_MEM_FUN_VAR_ID = FUN_ID + 11 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ VOLATILE_MEM_FUN_VAR_ID = FUN_ID + 12 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ VOLATILE_CONST_MEM_FUN_VAR_ID = FUN_ID + 13 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY)
+};
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+# define BOOST_PP_ITERATION_LIMITS (0, BOOST_TYPEOF_LIMIT_FUNCTION_ARITY)
+# define BOOST_PP_FILENAME_1 <boost/typeof/register_functions_iterate.hpp>
+# include BOOST_PP_ITERATE()
+
+BOOST_TYPEOF_END_ENCODE_NS
+
+#endif//BOOST_TYPEOF_REGISTER_FUNCTIONS_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+// 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)
+
+#include <boost/typeof/encode_decode_params.hpp>
+
+#define n BOOST_PP_ITERATION()
+
+// function pointers
+
+template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+struct encode_type_impl<V, R(*)(BOOST_PP_ENUM_PARAMS(n, P))>
+{
+ typedef R BOOST_PP_CAT(P, n);
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_PTR_ID + n) type;
+};
+
+template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+struct encode_type_impl<V, R(*)(BOOST_PP_ENUM_PARAMS(n, P) ...)>
+{
+ typedef R BOOST_PP_CAT(P, n);
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_VAR_PTR_ID + n) type;
+};
+
+template<class Iter>
+struct decode_type_impl<boost::mpl::size_t<FUN_PTR_ID + n>, Iter>
+{
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
+ typedef BOOST_PP_CAT(p, n)(*type)(BOOST_PP_ENUM_PARAMS(n, p));
+ typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
+};
+
+template<class Iter>
+struct decode_type_impl<boost::mpl::size_t<FUN_VAR_PTR_ID + n>, Iter>
+{
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
+ typedef BOOST_PP_CAT(p, n)(*type)(BOOST_PP_ENUM_PARAMS(n, p) ...);
+ typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
+};
+
+#ifndef BOOST_TYPEOF_NO_FUNCTION_TYPES
+
+ // function references
+
+ template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+ struct encode_type_impl<V, R(&)(BOOST_PP_ENUM_PARAMS(n, P))>
+ {
+ typedef R BOOST_PP_CAT(P, n);
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_REF_ID + n) type;
+ };
+
+ template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+ struct encode_type_impl<V, R(&)(BOOST_PP_ENUM_PARAMS(n, P) ...)>
+ {
+ typedef R BOOST_PP_CAT(P, n);
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_VAR_REF_ID + n) type;
+ };
+
+ template<class Iter>
+ struct decode_type_impl<boost::mpl::size_t<FUN_REF_ID + n>, Iter>
+ {
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
+ typedef BOOST_PP_CAT(p, n)(&type)(BOOST_PP_ENUM_PARAMS(n, p));
+ typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
+ };
+
+ template<class Iter>
+ struct decode_type_impl<boost::mpl::size_t<FUN_VAR_REF_ID + n>, Iter>
+ {
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
+ typedef BOOST_PP_CAT(p, n)(&type)(BOOST_PP_ENUM_PARAMS(n, p) ...);
+ typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
+ };
+
+ // functions
+
+ template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+ struct encode_type_impl<V, R(BOOST_PP_ENUM_PARAMS(n, P))>
+ {
+ typedef R BOOST_PP_CAT(P, n);
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_ID + n) type;
+ };
+
+ template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+ struct encode_type_impl<V, R(BOOST_PP_ENUM_PARAMS(n, P) ...)>
+ {
+ typedef R BOOST_PP_CAT(P, n);
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_VAR_ID + n) type;
+ };
+
+ template<class Iter>
+ struct decode_type_impl<boost::mpl::size_t<FUN_ID + n>, Iter>
+ {
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
+ typedef BOOST_PP_CAT(p, n)(type)(BOOST_PP_ENUM_PARAMS(n, p));
+ typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
+ };
+
+ template<class Iter>
+ struct decode_type_impl<boost::mpl::size_t<FUN_VAR_ID + n>, Iter>
+ {
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
+ typedef BOOST_PP_CAT(p, n)(type)(BOOST_PP_ENUM_PARAMS(n, p) ...);
+ typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
+ };
+
+#endif//BOOST_TYPEOF_NO_FUNCTION_TYPES
+
+#ifndef BOOST_TYPEOF_NO_MEMBER_FUNCTION_TYPES
+// member functions
+
+#define BOOST_TYPEOF_qualifier
+#define BOOST_TYPEOF_id MEM_FUN_ID
+#include <boost/typeof/register_mem_functions.hpp>
+
+#define BOOST_TYPEOF_qualifier const
+#define BOOST_TYPEOF_id CONST_MEM_FUN_ID
+#include <boost/typeof/register_mem_functions.hpp>
+
+#define BOOST_TYPEOF_qualifier volatile
+#define BOOST_TYPEOF_id VOLATILE_MEM_FUN_ID
+#include <boost/typeof/register_mem_functions.hpp>
+
+#define BOOST_TYPEOF_qualifier volatile const
+#define BOOST_TYPEOF_id VOLATILE_CONST_MEM_FUN_ID
+#include <boost/typeof/register_mem_functions.hpp>
+
+#undef n
+#endif
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED
+#define BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(unsigned char)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned short)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned int)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned long)
+
+BOOST_TYPEOF_REGISTER_TYPE(signed char)
+BOOST_TYPEOF_REGISTER_TYPE(signed short)
+BOOST_TYPEOF_REGISTER_TYPE(signed int)
+BOOST_TYPEOF_REGISTER_TYPE(signed long)
+
+BOOST_TYPEOF_REGISTER_TYPE(bool)
+BOOST_TYPEOF_REGISTER_TYPE(char)
+
+BOOST_TYPEOF_REGISTER_TYPE(float)
+BOOST_TYPEOF_REGISTER_TYPE(double)
+BOOST_TYPEOF_REGISTER_TYPE(long double)
+
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+// If the following line fails to compile and you're using the Intel
+// compiler, see http://lists.boost.org/MailArchives/boost-users/msg06567.php,
+// and define BOOST_NO_INTRINSIC_WCHAR_T on the command line.
+BOOST_TYPEOF_REGISTER_TYPE(wchar_t)
+#endif
+
+#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1200)) \
+ || (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \
+ || (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER == 1200))
+BOOST_TYPEOF_REGISTER_TYPE(unsigned __int8)
+BOOST_TYPEOF_REGISTER_TYPE(__int8)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned __int16)
+BOOST_TYPEOF_REGISTER_TYPE(__int16)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned __int32)
+BOOST_TYPEOF_REGISTER_TYPE(__int32)
+#ifdef __BORLANDC__
+BOOST_TYPEOF_REGISTER_TYPE(unsigned __int64)
+BOOST_TYPEOF_REGISTER_TYPE(__int64)
+#endif
+#endif
+
+# if defined(BOOST_HAS_LONG_LONG)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ulong_long_type)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::long_long_type)
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned __int64)
+BOOST_TYPEOF_REGISTER_TYPE(__int64)
+#endif
+
+BOOST_TYPEOF_REGISTER_TYPE(void)
+
+#endif//BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/typeof/encode_decode_params.hpp>
+
+// member functions
+
+template<class V, class T, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+struct encode_type_impl<V, R(T::*)(BOOST_PP_ENUM_PARAMS(n, P)) BOOST_TYPEOF_qualifier>
+{
+ typedef R BOOST_PP_CAT(P, n);
+ typedef T BOOST_PP_CAT(P, BOOST_PP_INC(n));
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_ADD(n, 2), BOOST_TYPEOF_id + n) type;
+};
+
+template<class Iter>
+struct decode_type_impl<boost::mpl::size_t<BOOST_TYPEOF_id + n>, Iter>
+{
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_ADD(n, 2))
+ template<class T> struct workaround{
+ typedef BOOST_PP_CAT(p, n)(T::*type)(BOOST_PP_ENUM_PARAMS(n, p)) BOOST_TYPEOF_qualifier;
+ };
+ typedef typename workaround<BOOST_PP_CAT(p, BOOST_PP_INC(n))>::type type;
+ typedef BOOST_PP_CAT(iter, BOOST_PP_ADD(n, 2)) iter;
+};
+
+// undef parameters
+
+#undef BOOST_TYPEOF_id
+#undef BOOST_TYPEOF_qualifier
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+// 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)
+
+#ifndef BOOST_TYPEOF_TEMPLATE_ENCODING_HPP_INCLUDED
+#define BOOST_TYPEOF_TEMPLATE_ENCODING_HPP_INCLUDED
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/detail/is_unary.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+#include <boost/preprocessor/seq/transform.hpp>
+#include <boost/preprocessor/seq/for_each_i.hpp>
+#include <boost/preprocessor/seq/cat.hpp>
+
+#include <boost/typeof/encode_decode.hpp>
+#include <boost/typeof/int_encoding.hpp>
+
+#include <boost/typeof/type_template_param.hpp>
+#include <boost/typeof/integral_template_param.hpp>
+#include <boost/typeof/template_template_param.hpp>
+
+#ifdef __BORLANDC__
+#define BOOST_TYPEOF_QUALIFY(P) self_t::P
+#else
+#define BOOST_TYPEOF_QUALIFY(P) P
+#endif
+// The template parameter description, entered by the user,
+// is converted into a polymorphic "object"
+// that is used to generate the code responsible for
+// encoding/decoding the parameter, etc.
+
+// make sure to cat the sequence first, and only then add the prefix.
+#define BOOST_TYPEOF_MAKE_OBJ(elem) BOOST_PP_CAT(\
+ BOOST_TYPEOF_MAKE_OBJ,\
+ BOOST_PP_SEQ_CAT((_) BOOST_TYPEOF_TO_SEQ(elem))\
+ )
+
+#define BOOST_TYPEOF_TO_SEQ(tokens) BOOST_TYPEOF_ ## tokens ## _BOOST_TYPEOF
+
+// BOOST_TYPEOF_REGISTER_TEMPLATE
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_EXPLICIT_ID(Name, Params, Id)\
+ BOOST_TYPEOF_REGISTER_TEMPLATE_IMPL(\
+ Name,\
+ BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TOSEQ(Params)),\
+ BOOST_PP_SEQ_SIZE(BOOST_TYPEOF_TOSEQ(Params)),\
+ Id)
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE(Name, Params)\
+ BOOST_TYPEOF_REGISTER_TEMPLATE_EXPLICIT_ID(Name, Params, BOOST_TYPEOF_UNIQUE_ID())
+
+#define BOOST_TYPEOF_OBJECT_MAKER(s, data, elem)\
+ BOOST_TYPEOF_MAKE_OBJ(elem)
+
+#define BOOST_TYPEOF_MAKE_OBJS(Params)\
+ BOOST_PP_SEQ_TRANSFORM(BOOST_TYPEOF_OBJECT_MAKER, ~, Params)
+
+// As suggested by Paul Mensonides:
+
+#define BOOST_TYPEOF_TOSEQ(x)\
+ BOOST_PP_IIF(\
+ BOOST_PP_IS_UNARY(x),\
+ x BOOST_PP_TUPLE_EAT(3), BOOST_PP_REPEAT\
+ )(x, BOOST_TYPEOF_TOSEQ_2, ~)
+
+#define BOOST_TYPEOF_TOSEQ_2(z, n, _) (class)
+
+// BOOST_TYPEOF_VIRTUAL
+
+#define BOOST_TYPEOF_CAT_4(a, b, c, d) BOOST_TYPEOF_CAT_4_I(a, b, c, d)
+#define BOOST_TYPEOF_CAT_4_I(a, b, c, d) a ## b ## c ## d
+
+#define BOOST_TYPEOF_VIRTUAL(Fun, Obj)\
+ BOOST_TYPEOF_CAT_4(BOOST_TYPEOF_, BOOST_PP_SEQ_HEAD(Obj), _, Fun)
+
+// BOOST_TYPEOF_SEQ_ENUM[_TRAILING][_1]
+// Two versions provided due to reentrancy issue
+
+#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT(z,n,seq)\
+ BOOST_PP_SEQ_ELEM(0,seq) (z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq)))
+
+#define BOOST_TYPEOF_SEQ_ENUM(seq,macro)\
+ BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq))
+
+#define BOOST_TYPEOF_SEQ_ENUM_TRAILING(seq,macro)\
+ BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq))
+
+#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1(z,n,seq)\
+ BOOST_PP_SEQ_ELEM(0,seq) (z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq)))
+
+#define BOOST_TYPEOF_SEQ_ENUM_1(seq,macro)\
+ BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1,(macro)(seq))
+
+#define BOOST_TYPEOF_SEQ_ENUM_TRAILING_1(seq,macro)\
+ BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1,(macro)(seq))
+
+//
+
+#define BOOST_TYPEOF_PLACEHOLDER(z, n, elem)\
+ BOOST_TYPEOF_VIRTUAL(PLACEHOLDER, elem)(elem)
+
+#define BOOST_TYPEOF_PLACEHOLDER_TYPES(z, n, elem)\
+ BOOST_TYPEOF_VIRTUAL(PLACEHOLDER_TYPES, elem)(elem, n)
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_ENCODE_PARAM(r, data, n, elem)\
+ BOOST_TYPEOF_VIRTUAL(ENCODE, elem)(elem, n)
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_DECODE_PARAM(r, data, n, elem)\
+ BOOST_TYPEOF_VIRTUAL(DECODE, elem)(elem, n)
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR(z, n, elem) \
+ BOOST_TYPEOF_VIRTUAL(EXPANDTYPE, elem)(elem) BOOST_PP_CAT(P, n)
+
+#define BOOST_TYPEOF_REGISTER_DEFAULT_TEMPLATE_TYPE(Name,Params,ID)\
+ Name< BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params), P) >
+
+//Since we are creating an internal decode struct, we need to use different template names, T instead of P.
+#define BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR(z,n,elem) \
+ BOOST_TYPEOF_VIRTUAL(EXPANDTYPE, elem)(elem) BOOST_PP_CAT(T, n)
+
+//Default template param decoding
+
+#define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TYPE(Name,Params)\
+ typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),BOOST_TYPEOF_QUALIFY(P))> type;
+
+//Branch the decoding
+#define BOOST_TYPEOF_TYPEDEF_DECODED_TYPE(Name,Params)\
+ BOOST_PP_IF(BOOST_TYPEOF_HAS_TEMPLATES(Params),\
+ BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE,\
+ BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TYPE)(Name,Params)
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_IMPL(Name, Params, Size, ID)\
+ BOOST_TYPEOF_BEGIN_ENCODE_NS\
+ BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name, Params, ID)\
+ template<class V\
+ BOOST_TYPEOF_SEQ_ENUM_TRAILING(Params, BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR)\
+ >\
+ struct encode_type_impl<V, Name<BOOST_PP_ENUM_PARAMS(Size, P)> >\
+ {\
+ typedef typename boost::type_of::push_back<V, boost::mpl::size_t<ID> >::type V0;\
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_TYPEOF_REGISTER_TEMPLATE_ENCODE_PARAM, ~, Params)\
+ typedef BOOST_PP_CAT(V, Size) type;\
+ };\
+ template<class Iter>\
+ struct decode_type_impl<boost::mpl::size_t<ID>, Iter>\
+ {\
+ typedef decode_type_impl<boost::mpl::size_t<ID>, Iter> self_t;\
+ typedef boost::mpl::size_t<ID> self_id;\
+ typedef Iter iter0;\
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_TYPEOF_REGISTER_TEMPLATE_DECODE_PARAM, ~, Params)\
+ BOOST_TYPEOF_TYPEDEF_DECODED_TYPE(Name, Params)\
+ typedef BOOST_PP_CAT(iter, Size) iter;\
+ };\
+ BOOST_TYPEOF_END_ENCODE_NS
+
+#endif//BOOST_TYPEOF_TEMPLATE_ENCODING_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2005 Peder Holt
+// Copyright (C) 2005 Arkadiy Vertleyb
+// 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)
+
+#ifndef BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
+#define BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
+
+#include <boost/preprocessor/logical/or.hpp>
+#include <boost/preprocessor/seq/fold_left.hpp>
+#include <boost/preprocessor/seq/enum.hpp>
+
+#define BOOST_TYPEOF_MAKE_OBJ_template(x) BOOST_TYPEOF_TEMPLATE_PARAM(x)
+#define BOOST_TYPEOF_TEMPLATE(X) template(X) BOOST_TYPEOF_EAT
+#define BOOST_TYPEOF_template(X) (template(X))
+
+#define BOOST_TYPEOF_TEMPLATE_PARAM(Params)\
+ (TEMPLATE_PARAM)\
+ (Params)
+
+#define BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)\
+ BOOST_TYPEOF_TOSEQ(BOOST_PP_SEQ_ELEM(1, This))
+
+//Encode / decode this
+#define BOOST_TYPEOF_TEMPLATE_PARAM_ENCODE(This, n)\
+ typedef typename boost::type_of::encode_template<BOOST_PP_CAT(V, n),\
+ BOOST_PP_CAT(P, n)<BOOST_TYPEOF_SEQ_ENUM(BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)),BOOST_TYPEOF_PLACEHOLDER) >\
+ >::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_TEMPLATE_PARAM_DECODE(This, n)\
+ typedef boost::type_of::decode_template< BOOST_PP_CAT(iter, n) > BOOST_PP_CAT(d, n);\
+ typedef typename BOOST_PP_CAT(d, n)::type BOOST_PP_CAT(P, n);\
+ typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter,BOOST_PP_INC(n));
+
+// template<class, unsigned int, ...> class
+#define BOOST_TYPEOF_TEMPLATE_PARAM_EXPANDTYPE(This) \
+ template <BOOST_PP_SEQ_ENUM(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)) > class
+
+#define BOOST_TYPEOF_TEMPLATE_PARAM_PLACEHOLDER(Param)\
+ Nested_Template_Template_Arguments_Not_Supported
+
+//'template<class,int> class' is reduced to 'class'
+#define BOOST_TYPEOF_TEMPLATE_PARAM_DECLARATION_TYPE(Param) class
+
+// T3<int, (unsigned int)0, ...>
+#define BOOST_TYPEOF_TEMPLATE_PARAM_PLACEHOLDER_TYPES(Param, n)\
+ BOOST_PP_CAT(T,n)<BOOST_TYPEOF_SEQ_ENUM_1(BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(Param)),BOOST_TYPEOF_PLACEHOLDER) >
+
+#define BOOST_TYPEOF_TEMPLATE_PARAM_ISTEMPLATE 1
+
+////////////////////////////
+// move to encode_decode?
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+template<class V, class Type_Not_Registered_With_Typeof_System> struct encode_template_impl;
+template<class T, class Iter> struct decode_template_impl;
+
+BOOST_TYPEOF_END_ENCODE_NS
+
+namespace boost { namespace type_of {
+
+ template<class V, class T> struct encode_template
+ : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_template_impl<V, T>
+ {};
+
+ template<class Iter> struct decode_template
+ : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::decode_template_impl<typename Iter::type, typename Iter::next>
+ {};
+}}
+
+////////////////////////////
+// move to template_encoding.hpp?
+
+//Template template registration
+#define BOOST_TYPEOF_REGISTER_TYPE_FOR_TEMPLATE_TEMPLATE(Name,Params,ID)\
+ template<class V\
+ BOOST_TYPEOF_SEQ_ENUM_TRAILING(Params,BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR)\
+ >\
+ struct encode_template_impl<V,Name<\
+ BOOST_PP_ENUM_PARAMS(\
+ BOOST_PP_SEQ_SIZE(Params),\
+ P)> >\
+ : boost::type_of::push_back<V, boost::mpl::size_t<ID> >\
+ {\
+ };\
+ template<class Iter> struct decode_template_impl<boost::mpl::size_t<ID>, Iter>\
+ {\
+ BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(Params),BOOST_TYPEOF_TYPEDEF_INT_PN,_)\
+ typedef Name<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER) > type;\
+ typedef Iter iter;\
+ };
+
+#define BOOST_TYPEOF_TYPEDEF_INT_PN(z,n,Params) typedef int BOOST_PP_CAT(P,n);
+
+#ifdef __BORLANDC__
+#define BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME BOOST_PP_CAT(\
+ BOOST_PP_CAT(\
+ BOOST_PP_CAT(\
+ decode_nested_template_helper,\
+ BOOST_TYPEOF_REGISTRATION_GROUP\
+ ),0x10000\
+ ),__LINE__\
+ )
+#define BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL(Name,Params,ID)\
+ struct BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME {\
+ template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR) >\
+ struct decode_params;\
+ template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR) >\
+ struct decode_params<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER_TYPES) >\
+ {\
+ typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),T)> type;\
+ };\
+ };
+//Template template param decoding
+#define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE(Name,Params)\
+ typedef typename BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME::decode_params<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),P)>::type type;
+
+#else
+#define BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL(Name,Params,ID)
+
+//Template template param decoding
+#define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE(Name,Params)\
+ template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR) >\
+ struct decode_params;\
+ template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR) >\
+ struct decode_params<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER_TYPES) >\
+ {\
+ typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),T)> type;\
+ };\
+ typedef typename decode_params<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),P)>::type type;
+#endif
+#define BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR(z,n,elem) \
+ BOOST_TYPEOF_VIRTUAL(DECLARATION_TYPE, elem)(elem) BOOST_PP_CAT(T, n)
+
+// BOOST_TYPEOF_HAS_TEMPLATES
+#define BOOST_TYPEOF_HAS_TEMPLATES(Params)\
+ BOOST_PP_SEQ_FOLD_LEFT(BOOST_TYPEOF_HAS_TEMPLATES_OP, 0, Params)
+
+#define BOOST_TYPEOF_HAS_TEMPLATES_OP(s, state, elem)\
+ BOOST_PP_OR(state, BOOST_TYPEOF_VIRTUAL(ISTEMPLATE, elem))
+
+//Define template template arguments
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name,Params,ID)\
+ BOOST_PP_IF(BOOST_TYPEOF_HAS_TEMPLATES(Params),\
+ BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL,\
+ BOOST_TYPEOF_REGISTER_TYPE_FOR_TEMPLATE_TEMPLATE)(Name,Params,ID)
+
+#endif //BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+// 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)
+
+#ifndef BOOST_TYPEOF_TYPE_ENCODING_HPP_INCLUDED
+#define BOOST_TYPEOF_TYPE_ENCODING_HPP_INCLUDED
+
+#define BOOST_TYPEOF_REGISTER_TYPE_IMPL(T, Id) \
+ \
+ template<class V> struct encode_type_impl<V, T > \
+ : boost::type_of::push_back<V, boost::mpl::size_t<Id> > \
+ {}; \
+ template<class Iter> struct decode_type_impl<boost::mpl::size_t<Id>, Iter> \
+ { \
+ typedef T type; \
+ typedef Iter iter; \
+ };
+
+#define BOOST_TYPEOF_REGISTER_TYPE_EXPLICIT_ID(Type, Id) \
+ BOOST_TYPEOF_BEGIN_ENCODE_NS \
+ BOOST_TYPEOF_REGISTER_TYPE_IMPL(Type, Id) \
+ BOOST_TYPEOF_END_ENCODE_NS
+
+#define BOOST_TYPEOF_REGISTER_TYPE(Type) \
+ BOOST_TYPEOF_REGISTER_TYPE_EXPLICIT_ID(Type, BOOST_TYPEOF_UNIQUE_ID())
+
+#endif//BOOST_TYPEOF_TYPE_ENCODING_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2005 Arkadiy Vertleyb
+// 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)
+
+#ifndef BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
+#define BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
+
+#define BOOST_TYPEOF_class_BOOST_TYPEOF (class)
+#define BOOST_TYPEOF_typename_BOOST_TYPEOF (typename)
+
+#define BOOST_TYPEOF_MAKE_OBJ_class BOOST_TYPEOF_TYPE_PARAM
+#define BOOST_TYPEOF_MAKE_OBJ_typename BOOST_TYPEOF_TYPE_PARAM
+
+#define BOOST_TYPEOF_TYPE_PARAM\
+ (TYPE_PARAM)
+
+#define BOOST_TYPEOF_TYPE_PARAM_EXPANDTYPE(Param) class
+
+// TYPE_PARAM "virtual functions" implementation
+
+#define BOOST_TYPEOF_TYPE_PARAM_ENCODE(This, n)\
+ typedef typename boost::type_of::encode_type<\
+ BOOST_PP_CAT(V, n),\
+ BOOST_PP_CAT(P, n)\
+ >::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_TYPE_PARAM_DECODE(This, n)\
+ typedef boost::type_of::decode_type< BOOST_PP_CAT(iter, n) > BOOST_PP_CAT(d, n);\
+ typedef typename BOOST_PP_CAT(d, n)::type BOOST_PP_CAT(P, n);\
+ typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER(Param) int
+#define BOOST_TYPEOF_TYPE_PARAM_DECLARATION_TYPE(Param) class
+#define BOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER_TYPES(Param, n) BOOST_PP_CAT(T,n)
+#define BOOST_TYPEOF_TYPE_PARAM_ISTEMPLATE 0
+
+#endif//BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2004 Arkadiy Vertleyb
+// 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)
+
+#ifndef BOOST_TYPEOF_TYPEOF_HPP_INCLUDED
+#define BOOST_TYPEOF_TYPEOF_HPP_INCLUDED
+
+#if defined(BOOST_TYPEOF_COMPLIANT)
+# define BOOST_TYPEOF_EMULATION
+#endif
+
+#if defined(BOOST_TYPEOF_EMULATION) && defined(BOOST_TYPEOF_NATIVE)
+# error both typeof emulation and native mode requested
+#endif
+
+#if defined(__COMO__)
+# ifdef __GNUG__
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD typeof
+# endif
+# else
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+# endif
+
+#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
+# ifdef __GNUC__
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# endif
+# else
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+# endif
+
+#elif defined(__GNUC__)
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# endif
+
+#elif defined(__MWERKS__)
+# if(__MWERKS__ <= 0x3003) // 8.x
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# else
+# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
+# endif
+# else // 9.x
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# endif
+# endif
+#elif defined __CODEGEARC__
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
+# endif
+# else
+# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
+# endif
+#elif defined __BORLANDC__
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
+# endif
+# else
+# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
+# endif
+#elif defined __DMC__
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# include <boost/typeof/dmc/typeof_impl.hpp>
+# define MSVC_TYPEOF_HACK
+# endif
+#elif defined(_MSC_VER)
+# if (_MSC_VER <= 1300) // 6.5, 7.0
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# include <boost/typeof/msvc/typeof_impl.hpp>
+# define MSVC_TYPEOF_HACK
+# else
+# error typeof emulation is not supported
+# endif
+# elif (_MSC_VER >= 1310) // 7.1 ->
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef _MSC_EXTENSIONS
+# define BOOST_TYPEOF_EMULATION
+# else
+# define BOOST_TYPEOF_NATIVE
+# endif
+# endif
+# endif
+# ifdef BOOST_TYPEOF_NATIVE
+# include <boost/typeof/msvc/typeof_impl.hpp>
+# define MSVC_TYPEOF_HACK
+# endif
+# endif
+#elif defined(__HP_aCC)
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+
+#elif defined(__DECCXX)
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+
+#elif defined(__BORLANDC__)
+# if (__BORLANDC__ < 0x590)
+# define BOOST_TYPEOF_NO_FUNCTION_TYPES
+# define BOOST_TYPEOF_NO_MEMBER_FUNCTION_TYPES
+# endif
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+#elif defined(__SUNPRO_CC)
+# if (__SUNPRO_CC < 0x590 )
+# ifdef BOOST_TYPEOF_NATIVE
+# error native typeof is not supported
+# endif
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# endif
+# endif
+#else //unknown compiler
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# ifndef BOOST_TYPEOF_KEYWORD
+# define BOOST_TYPEOF_KEYWORD typeof
+# endif
+# endif
+
+#endif
+
+#define BOOST_TYPEOF_UNIQUE_ID()\
+ BOOST_TYPEOF_REGISTRATION_GROUP * 0x10000 + __LINE__
+
+#define BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()\
+ <boost/typeof/incr_registration_group.hpp>
+
+#ifdef BOOST_TYPEOF_EMULATION_UNSUPPORTED
+# include <boost/typeof/unsupported.hpp>
+#elif defined BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_TEXT "using typeof emulation"
+# include <boost/typeof/message.hpp>
+# include <boost/typeof/typeof_impl.hpp>
+# include <boost/typeof/type_encoding.hpp>
+# include <boost/typeof/template_encoding.hpp>
+# include <boost/typeof/modifiers.hpp>
+# include <boost/typeof/pointers_data_members.hpp>
+# include <boost/typeof/register_functions.hpp>
+# include <boost/typeof/register_fundamental.hpp>
+
+#elif defined(BOOST_TYPEOF_NATIVE)
+# define BOOST_TYPEOF_TEXT "using native typeof"
+# include <boost/typeof/message.hpp>
+# include <boost/typeof/native.hpp>
+#else
+# error typeof configuration error
+#endif
+
+// auto
+#define BOOST_AUTO(Var, Expr) BOOST_TYPEOF(Expr) Var = Expr
+#define BOOST_AUTO_TPL(Var, Expr) BOOST_TYPEOF_TPL(Expr) Var = Expr
+
+#endif//BOOST_TYPEOF_TYPEOF_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2004, 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+// 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)
+
+#ifndef BOOST_TYPEOF_TYPEOF_IMPL_HPP_INCLUDED
+#define BOOST_TYPEOF_TYPEOF_IMPL_HPP_INCLUDED
+
+#include <boost/mpl/size_t.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/typeof/encode_decode.hpp>
+#include <boost/typeof/vector.hpp>
+#include <boost/type_traits/is_function.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#define BOOST_TYPEOF_VECTOR(n) BOOST_PP_CAT(boost::type_of::vector, n)
+
+#define BOOST_TYPEOF_sizer_item(z, n, _)\
+ char item ## n[V::item ## n ::value];
+
+namespace boost { namespace type_of {
+ template<class V>
+ struct sizer
+ {
+ // char item0[V::item0::value];
+ // char item1[V::item1::value];
+ // ...
+
+ BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~)
+ };
+}}
+
+#undef BOOST_TYPEOF_sizer_item
+
+//
+namespace boost { namespace type_of {
+# ifdef BOOST_NO_SFINAE
+ template<class V, class T>
+ sizer<typename encode_type<V, T>::type> encode(const T&);
+# else
+ template<class V, class T>
+ typename enable_if<
+ typename is_function<T>::type,
+ sizer<typename encode_type<V, T>::type> >::type encode(T&);
+
+ template<class V, class T>
+ typename disable_if<
+ typename is_function<T>::type,
+ sizer<typename encode_type<V, T>::type> >::type encode(const T&);
+# endif
+}}
+//
+namespace boost { namespace type_of {
+
+ template<class V>
+ struct decode_begin
+ {
+ typedef typename decode_type<typename V::begin>::type type;
+ };
+}}
+
+#define BOOST_TYPEOF_TYPEITEM(z, n, expr)\
+ boost::mpl::size_t<sizeof(boost::type_of::encode<BOOST_TYPEOF_VECTOR(0)<> >(expr).item ## n)>
+
+#define BOOST_TYPEOF_ENCODED_VECTOR(Expr) \
+ BOOST_TYPEOF_VECTOR(BOOST_TYPEOF_LIMIT_SIZE)< \
+ BOOST_PP_ENUM(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_TYPEITEM, Expr) \
+ >
+
+#define BOOST_TYPEOF(Expr)\
+ boost::type_of::decode_begin<BOOST_TYPEOF_ENCODED_VECTOR(Expr) >::type
+
+#define BOOST_TYPEOF_TPL typename BOOST_TYPEOF
+
+//offset_vector is used to delay the insertion of data into the vector in order to allow
+//encoding to be done in many steps
+namespace boost { namespace type_of {
+ template<typename V,typename Offset>
+ struct offset_vector {
+ };
+
+ template<class V,class Offset,class T>
+ struct push_back<boost::type_of::offset_vector<V,Offset>,T> {
+ typedef offset_vector<V,typename Offset::prior> type;
+ };
+
+ template<class V,class T>
+ struct push_back<boost::type_of::offset_vector<V,mpl::size_t<0> >,T> {
+ typedef typename push_back<V,T>::type type;
+ };
+}}
+
+#define BOOST_TYPEOF_NESTED_TYPEITEM(z, n, expr)\
+ BOOST_STATIC_CONSTANT(int,BOOST_PP_CAT(value,n) = sizeof(boost::type_of::encode<_typeof_start_vector>(expr).item ## n));\
+ typedef boost::mpl::size_t<BOOST_PP_CAT(self_t::value,n)> BOOST_PP_CAT(item,n);
+
+#ifdef __DMC__
+#define BOOST_TYPEOF_NESTED_TYPEITEM_2(z,n,expr)\
+ typedef typename _typeof_encode_fraction<iteration>::BOOST_PP_CAT(item,n) BOOST_PP_CAT(item,n);
+
+#define BOOST_TYPEOF_FRACTIONTYPE()\
+ BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE,BOOST_TYPEOF_NESTED_TYPEITEM_2,_)\
+ typedef _typeof_fraction_iter<Pos> fraction_type;
+#else
+#define BOOST_TYPEOF_FRACTIONTYPE()\
+ typedef _typeof_encode_fraction<self_t::iteration> fraction_type;
+#endif
+
+#ifdef __BORLANDC__
+namespace boost { namespace type_of {
+ template<typename Pos,typename Iter>
+ struct generic_typeof_fraction_iter {
+ typedef generic_typeof_fraction_iter<Pos,Iter> self_t;
+ static const int pos=(Pos::value);
+ static const int iteration=(pos/5);
+ static const int where=pos%5;
+ typedef typename Iter::template _apply_next<self_t::iteration>::type fraction_type;
+ typedef generic_typeof_fraction_iter<typename Pos::next,Iter> next;
+ typedef typename v_iter<fraction_type,mpl::int_<self_t::where> >::type type;
+ };
+}}
+#define BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr) \
+ template<int _Typeof_Iteration>\
+ struct _typeof_encode_fraction {\
+ typedef _typeof_encode_fraction<_Typeof_Iteration> self_t;\
+ BOOST_STATIC_CONSTANT(int,_typeof_encode_offset = (_Typeof_Iteration*BOOST_TYPEOF_LIMIT_SIZE));\
+ typedef boost::type_of::offset_vector<BOOST_TYPEOF_VECTOR(0)<>,boost::mpl::size_t<self_t::_typeof_encode_offset> > _typeof_start_vector;\
+ BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE,BOOST_TYPEOF_NESTED_TYPEITEM,expr)\
+ template<int Next>\
+ struct _apply_next {\
+ typedef _typeof_encode_fraction<Next> type;\
+ };\
+ };\
+ template<typename Pos>\
+ struct _typeof_fraction_iter {\
+ typedef boost::type_of::generic_typeof_fraction_iter<Pos,_typeof_encode_fraction<0> > self_t;\
+ typedef typename self_t::next next;\
+ typedef typename self_t::type type;\
+ };
+#else
+#define BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr) \
+ template<int _Typeof_Iteration>\
+ struct _typeof_encode_fraction {\
+ typedef _typeof_encode_fraction<_Typeof_Iteration> self_t;\
+ BOOST_STATIC_CONSTANT(int,_typeof_encode_offset = (_Typeof_Iteration*BOOST_TYPEOF_LIMIT_SIZE));\
+ typedef boost::type_of::offset_vector<BOOST_TYPEOF_VECTOR(0)<>,boost::mpl::size_t<self_t::_typeof_encode_offset> > _typeof_start_vector;\
+ BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE,BOOST_TYPEOF_NESTED_TYPEITEM,expr)\
+ };\
+ template<typename Pos>\
+ struct _typeof_fraction_iter {\
+ typedef _typeof_fraction_iter<Pos> self_t;\
+ BOOST_STATIC_CONSTANT(int,pos=(Pos::value));\
+ BOOST_STATIC_CONSTANT(int,iteration=(pos/BOOST_TYPEOF_LIMIT_SIZE));\
+ BOOST_STATIC_CONSTANT(int,where=pos%BOOST_TYPEOF_LIMIT_SIZE);\
+ BOOST_TYPEOF_FRACTIONTYPE()\
+ typedef typename boost::type_of::v_iter<fraction_type,boost::mpl::int_<self_t::where> >::type type;\
+ typedef _typeof_fraction_iter<typename Pos::next> next;\
+ };
+#endif
+#ifdef __MWERKS__
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+template<typename T>\
+struct BOOST_PP_CAT(_typeof_template_,name) {\
+ BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\
+ typedef typename boost::type_of::decode_type<_typeof_fraction_iter<boost::mpl::size_t<0> > >::type type;\
+};\
+typedef BOOST_PP_CAT(_typeof_template_,name)<int> name;
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) BOOST_TYPEOF_NESTED_TYPEDEF(name,expr)
+
+#else
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+ struct name {\
+ BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\
+ typedef typename boost::type_of::decode_type<_typeof_fraction_iter<boost::mpl::size_t<0> > >::type type;\
+ };
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+ struct name {\
+ BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\
+ typedef boost::type_of::decode_type<_typeof_fraction_iter<boost::mpl::size_t<0> > >::type type;\
+ };
+#endif
+
+#endif//BOOST_TYPEOF_COMPLIANT_TYPEOF_IMPL_HPP_INCLUDED
--- /dev/null
+// Copyright (C) 2010 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_UNSUPPORTED_HPP_INCLUDED
+#define BOOST_TYPEOF_UNSUPPORTED_HPP_INCLUDED
+
+namespace boost { namespace type_of {
+ struct typeof_emulation_is_unsupported_on_this_compiler {};
+}}
+
+#define BOOST_TYPEOF(expr) boost::type_of::typeof_emulation_is_unsupported_on_this_compiler
+#define BOOST_TYPEOF_TPL BOOST_TYPEOF
+
+#define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+struct name {\
+ typedef BOOST_TYPEOF_TPL(expr) type;\
+};
+
+#define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+struct name {\
+ typedef BOOST_TYPEOF(expr) type;\
+};
+
+
+#define BOOST_TYPEOF_REGISTER_TYPE(x)
+#define BOOST_TYPEOF_REGISTER_TEMPLATE(x, params)
+
+#endif
\ No newline at end of file
--- /dev/null
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+//
+// Copyright (C) 2006 Tobias Schwinger
+//
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_VECTOR_HPP_INCLUDED
+
+#include <boost/mpl/int.hpp>
+#include <boost/preprocessor/iteration/self.hpp>
+
+#ifndef BOOST_TYPEOF_LIMIT_SIZE
+# define BOOST_TYPEOF_LIMIT_SIZE 50
+#endif
+
+//
+// To recreate the preprocessed versions of this file preprocess and run
+//
+// $(BOOST_ROOT)/libs/typeof/tools/preprocess.pl
+//
+
+#if defined(BOOST_TYPEOF_PP_INCLUDE_EXTERNAL)
+
+# undef BOOST_TYPEOF_PP_INCLUDE_EXTERNAL
+
+#elif !defined(BOOST_TYPEOF_PREPROCESSING_MODE) && !BOOST_PP_IS_SELFISH
+
+# define BOOST_PP_INDIRECT_SELF <boost/typeof/vector.hpp>
+# if BOOST_TYPEOF_LIMIT_SIZE < 50
+# include BOOST_PP_INCLUDE_SELF()
+# elif BOOST_TYPEOF_LIMIT_SIZE < 100
+# include <boost/typeof/vector50.hpp>
+# define BOOST_TYPEOF_PP_START_SIZE 51
+# include BOOST_PP_INCLUDE_SELF()
+# elif BOOST_TYPEOF_LIMIT_SIZE < 150
+# include <boost/typeof/vector100.hpp>
+# define BOOST_TYPEOF_PP_START_SIZE 101
+# include BOOST_PP_INCLUDE_SELF()
+# elif BOOST_TYPEOF_LIMIT_SIZE < 200
+# include <boost/typeof/vector150.hpp>
+# define BOOST_TYPEOF_PP_START_SIZE 151
+# include BOOST_PP_INCLUDE_SELF()
+# elif BOOST_TYPEOF_LIMIT_SIZE <= 250
+# include <boost/typeof/vector200.hpp>
+# define BOOST_TYPEOF_PP_START_SIZE 201
+# include BOOST_PP_INCLUDE_SELF()
+# else
+# error "BOOST_TYPEOF_LIMIT_SIZE too high"
+# endif
+
+#else// defined(BOOST_TYPEOF_PREPROCESSING_MODE) || BOOST_PP_IS_SELFISH
+
+# ifndef BOOST_TYPEOF_PP_NEXT_SIZE
+# define BOOST_TYPEOF_PP_NEXT_SIZE BOOST_TYPEOF_LIMIT_SIZE
+# endif
+# ifndef BOOST_TYPEOF_PP_START_SIZE
+# define BOOST_TYPEOF_PP_START_SIZE 0
+# endif
+
+# if BOOST_TYPEOF_PP_START_SIZE <= BOOST_TYPEOF_LIMIT_SIZE
+
+# include <boost/preprocessor/enum_params.hpp>
+# include <boost/preprocessor/repeat.hpp>
+# include <boost/preprocessor/repeat_from_to.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/dec.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/iteration/local.hpp>
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/logical/not.hpp>
+
+// iterator
+
+# define BOOST_TYPEOF_spec_iter(n)\
+ template<class V>\
+ struct v_iter<V, mpl::int_<n> >\
+ {\
+ typedef typename V::item ## n type;\
+ typedef v_iter<V, mpl::int_<n + 1> > next;\
+ };
+
+namespace boost { namespace type_of {
+
+ template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter; // not defined
+# define BOOST_PP_LOCAL_MACRO BOOST_TYPEOF_spec_iter
+# define BOOST_PP_LOCAL_LIMITS \
+ (BOOST_PP_DEC(BOOST_TYPEOF_PP_START_SIZE), \
+ BOOST_PP_DEC(BOOST_TYPEOF_LIMIT_SIZE))
+# include BOOST_PP_LOCAL_ITERATE()
+
+}}
+
+# undef BOOST_TYPEOF_spec_iter
+
+// vector
+
+# define BOOST_TYPEOF_typedef_item(z, n, _)\
+ typedef P ## n item ## n;
+
+# define BOOST_TYPEOF_typedef_fake_item(z, n, _)\
+ typedef mpl::int_<1> item ## n;
+
+# define BOOST_TYPEOF_define_vector(n)\
+ template<BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IIF(BOOST_PP_NOT(n), class T = void)>\
+ struct vector ## n\
+ {\
+ typedef v_iter<vector ## n<BOOST_PP_ENUM_PARAMS(n,P)>, boost::mpl::int_<0> > begin;\
+ BOOST_PP_REPEAT(n, BOOST_TYPEOF_typedef_item, ~)\
+ BOOST_PP_REPEAT_FROM_TO(n, BOOST_TYPEOF_PP_NEXT_SIZE, BOOST_TYPEOF_typedef_fake_item, ~)\
+ };
+
+namespace boost { namespace type_of {
+
+# define BOOST_PP_LOCAL_MACRO BOOST_TYPEOF_define_vector
+# define BOOST_PP_LOCAL_LIMITS \
+ (BOOST_TYPEOF_PP_START_SIZE,BOOST_TYPEOF_LIMIT_SIZE)
+# include BOOST_PP_LOCAL_ITERATE()
+
+}}
+
+# undef BOOST_TYPEOF_typedef_item
+# undef BOOST_TYPEOF_typedef_fake_item
+# undef BOOST_TYPEOF_define_vector
+
+// push_back
+
+# define BOOST_TYPEOF_spec_push_back(n)\
+ template<BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_COMMA_IF(n) class T>\
+ struct push_back<BOOST_PP_CAT(boost::type_of::vector, n)<BOOST_PP_ENUM_PARAMS(n, P)>, T>\
+ {\
+ typedef BOOST_PP_CAT(boost::type_of::vector, BOOST_PP_INC(n))<\
+ BOOST_PP_ENUM_PARAMS(n, P) BOOST_PP_COMMA_IF(n) T\
+ > type;\
+ };
+
+namespace boost { namespace type_of {
+
+# if BOOST_TYPEOF_LIMIT_SIZE < 50
+ template<class V, class T> struct push_back {
+ typedef V type;
+ };
+# endif
+ //default behaviour is to let push_back ignore T, and return the input vector.
+ //This is to let BOOST_TYPEOF_NESTED_TYPEDEF work properly with the default vector.
+# define BOOST_PP_LOCAL_MACRO BOOST_TYPEOF_spec_push_back
+# define BOOST_PP_LOCAL_LIMITS \
+ (BOOST_PP_DEC(BOOST_TYPEOF_PP_START_SIZE), \
+ BOOST_PP_DEC(BOOST_TYPEOF_LIMIT_SIZE))
+# include BOOST_PP_LOCAL_ITERATE()
+
+}}
+
+# undef BOOST_TYPEOF_spec_push_back
+
+# endif//BOOST_TYPEOF_PP_START_SIZE<=BOOST_TYPEOF_LIMIT_SIZE
+# undef BOOST_TYPEOF_PP_START_SIZE
+# undef BOOST_TYPEOF_PP_NEXT_SIZE
+
+#endif//BOOST_TYPEOF_PREPROCESSING_MODE || BOOST_PP_IS_SELFISH
+
+#define BOOST_TYPEOF_VECTOR_HPP_INCLUDED
+#endif//BOOST_TYPEOF_VECTOR_HPP_INCLUDED
+
--- /dev/null
+
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+// Preprocessed code, do not edit manually !
+
+
+namespace boost { namespace type_of {
+ template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter;
+ template<class V> struct v_iter<V, mpl::int_<0> > { typedef typename V::item0 type; typedef v_iter<V, mpl::int_<0 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<1> > { typedef typename V::item1 type; typedef v_iter<V, mpl::int_<1 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<2> > { typedef typename V::item2 type; typedef v_iter<V, mpl::int_<2 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<3> > { typedef typename V::item3 type; typedef v_iter<V, mpl::int_<3 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<4> > { typedef typename V::item4 type; typedef v_iter<V, mpl::int_<4 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<5> > { typedef typename V::item5 type; typedef v_iter<V, mpl::int_<5 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<6> > { typedef typename V::item6 type; typedef v_iter<V, mpl::int_<6 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<7> > { typedef typename V::item7 type; typedef v_iter<V, mpl::int_<7 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<8> > { typedef typename V::item8 type; typedef v_iter<V, mpl::int_<8 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<9> > { typedef typename V::item9 type; typedef v_iter<V, mpl::int_<9 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<10> > { typedef typename V::item10 type; typedef v_iter<V, mpl::int_<10 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<11> > { typedef typename V::item11 type; typedef v_iter<V, mpl::int_<11 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<12> > { typedef typename V::item12 type; typedef v_iter<V, mpl::int_<12 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<13> > { typedef typename V::item13 type; typedef v_iter<V, mpl::int_<13 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<14> > { typedef typename V::item14 type; typedef v_iter<V, mpl::int_<14 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<15> > { typedef typename V::item15 type; typedef v_iter<V, mpl::int_<15 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<16> > { typedef typename V::item16 type; typedef v_iter<V, mpl::int_<16 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<17> > { typedef typename V::item17 type; typedef v_iter<V, mpl::int_<17 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<18> > { typedef typename V::item18 type; typedef v_iter<V, mpl::int_<18 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<19> > { typedef typename V::item19 type; typedef v_iter<V, mpl::int_<19 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<20> > { typedef typename V::item20 type; typedef v_iter<V, mpl::int_<20 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<21> > { typedef typename V::item21 type; typedef v_iter<V, mpl::int_<21 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<22> > { typedef typename V::item22 type; typedef v_iter<V, mpl::int_<22 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<23> > { typedef typename V::item23 type; typedef v_iter<V, mpl::int_<23 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<24> > { typedef typename V::item24 type; typedef v_iter<V, mpl::int_<24 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<25> > { typedef typename V::item25 type; typedef v_iter<V, mpl::int_<25 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<26> > { typedef typename V::item26 type; typedef v_iter<V, mpl::int_<26 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<27> > { typedef typename V::item27 type; typedef v_iter<V, mpl::int_<27 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<28> > { typedef typename V::item28 type; typedef v_iter<V, mpl::int_<28 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<29> > { typedef typename V::item29 type; typedef v_iter<V, mpl::int_<29 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<30> > { typedef typename V::item30 type; typedef v_iter<V, mpl::int_<30 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<31> > { typedef typename V::item31 type; typedef v_iter<V, mpl::int_<31 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<32> > { typedef typename V::item32 type; typedef v_iter<V, mpl::int_<32 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<33> > { typedef typename V::item33 type; typedef v_iter<V, mpl::int_<33 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<34> > { typedef typename V::item34 type; typedef v_iter<V, mpl::int_<34 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<35> > { typedef typename V::item35 type; typedef v_iter<V, mpl::int_<35 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<36> > { typedef typename V::item36 type; typedef v_iter<V, mpl::int_<36 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<37> > { typedef typename V::item37 type; typedef v_iter<V, mpl::int_<37 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<38> > { typedef typename V::item38 type; typedef v_iter<V, mpl::int_<38 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<39> > { typedef typename V::item39 type; typedef v_iter<V, mpl::int_<39 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<40> > { typedef typename V::item40 type; typedef v_iter<V, mpl::int_<40 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<41> > { typedef typename V::item41 type; typedef v_iter<V, mpl::int_<41 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<42> > { typedef typename V::item42 type; typedef v_iter<V, mpl::int_<42 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<43> > { typedef typename V::item43 type; typedef v_iter<V, mpl::int_<43 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<44> > { typedef typename V::item44 type; typedef v_iter<V, mpl::int_<44 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<45> > { typedef typename V::item45 type; typedef v_iter<V, mpl::int_<45 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<46> > { typedef typename V::item46 type; typedef v_iter<V, mpl::int_<46 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<47> > { typedef typename V::item47 type; typedef v_iter<V, mpl::int_<47 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<48> > { typedef typename V::item48 type; typedef v_iter<V, mpl::int_<48 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<49> > { typedef typename V::item49 type; typedef v_iter<V, mpl::int_<49 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<50> > { typedef typename V::item50 type; typedef v_iter<V, mpl::int_<50 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<51> > { typedef typename V::item51 type; typedef v_iter<V, mpl::int_<51 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<52> > { typedef typename V::item52 type; typedef v_iter<V, mpl::int_<52 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<53> > { typedef typename V::item53 type; typedef v_iter<V, mpl::int_<53 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<54> > { typedef typename V::item54 type; typedef v_iter<V, mpl::int_<54 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<55> > { typedef typename V::item55 type; typedef v_iter<V, mpl::int_<55 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<56> > { typedef typename V::item56 type; typedef v_iter<V, mpl::int_<56 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<57> > { typedef typename V::item57 type; typedef v_iter<V, mpl::int_<57 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<58> > { typedef typename V::item58 type; typedef v_iter<V, mpl::int_<58 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<59> > { typedef typename V::item59 type; typedef v_iter<V, mpl::int_<59 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<60> > { typedef typename V::item60 type; typedef v_iter<V, mpl::int_<60 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<61> > { typedef typename V::item61 type; typedef v_iter<V, mpl::int_<61 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<62> > { typedef typename V::item62 type; typedef v_iter<V, mpl::int_<62 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<63> > { typedef typename V::item63 type; typedef v_iter<V, mpl::int_<63 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<64> > { typedef typename V::item64 type; typedef v_iter<V, mpl::int_<64 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<65> > { typedef typename V::item65 type; typedef v_iter<V, mpl::int_<65 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<66> > { typedef typename V::item66 type; typedef v_iter<V, mpl::int_<66 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<67> > { typedef typename V::item67 type; typedef v_iter<V, mpl::int_<67 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<68> > { typedef typename V::item68 type; typedef v_iter<V, mpl::int_<68 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<69> > { typedef typename V::item69 type; typedef v_iter<V, mpl::int_<69 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<70> > { typedef typename V::item70 type; typedef v_iter<V, mpl::int_<70 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<71> > { typedef typename V::item71 type; typedef v_iter<V, mpl::int_<71 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<72> > { typedef typename V::item72 type; typedef v_iter<V, mpl::int_<72 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<73> > { typedef typename V::item73 type; typedef v_iter<V, mpl::int_<73 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<74> > { typedef typename V::item74 type; typedef v_iter<V, mpl::int_<74 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<75> > { typedef typename V::item75 type; typedef v_iter<V, mpl::int_<75 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<76> > { typedef typename V::item76 type; typedef v_iter<V, mpl::int_<76 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<77> > { typedef typename V::item77 type; typedef v_iter<V, mpl::int_<77 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<78> > { typedef typename V::item78 type; typedef v_iter<V, mpl::int_<78 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<79> > { typedef typename V::item79 type; typedef v_iter<V, mpl::int_<79 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<80> > { typedef typename V::item80 type; typedef v_iter<V, mpl::int_<80 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<81> > { typedef typename V::item81 type; typedef v_iter<V, mpl::int_<81 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<82> > { typedef typename V::item82 type; typedef v_iter<V, mpl::int_<82 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<83> > { typedef typename V::item83 type; typedef v_iter<V, mpl::int_<83 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<84> > { typedef typename V::item84 type; typedef v_iter<V, mpl::int_<84 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<85> > { typedef typename V::item85 type; typedef v_iter<V, mpl::int_<85 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<86> > { typedef typename V::item86 type; typedef v_iter<V, mpl::int_<86 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<87> > { typedef typename V::item87 type; typedef v_iter<V, mpl::int_<87 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<88> > { typedef typename V::item88 type; typedef v_iter<V, mpl::int_<88 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<89> > { typedef typename V::item89 type; typedef v_iter<V, mpl::int_<89 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<90> > { typedef typename V::item90 type; typedef v_iter<V, mpl::int_<90 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<91> > { typedef typename V::item91 type; typedef v_iter<V, mpl::int_<91 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<92> > { typedef typename V::item92 type; typedef v_iter<V, mpl::int_<92 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<93> > { typedef typename V::item93 type; typedef v_iter<V, mpl::int_<93 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<94> > { typedef typename V::item94 type; typedef v_iter<V, mpl::int_<94 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<95> > { typedef typename V::item95 type; typedef v_iter<V, mpl::int_<95 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<96> > { typedef typename V::item96 type; typedef v_iter<V, mpl::int_<96 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<97> > { typedef typename V::item97 type; typedef v_iter<V, mpl::int_<97 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<98> > { typedef typename V::item98 type; typedef v_iter<V, mpl::int_<98 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<99> > { typedef typename V::item99 type; typedef v_iter<V, mpl::int_<99 + 1> > next; };
+}}
+namespace boost { namespace type_of {
+ template< class T = void> struct vector0 { typedef v_iter<vector0<>, boost::mpl::int_<0> > begin; typedef mpl::int_<1> item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 > struct vector1 { typedef v_iter<vector1< P0>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 > struct vector2 { typedef v_iter<vector2< P0 , P1>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 > struct vector3 { typedef v_iter<vector3< P0 , P1 , P2>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 > struct vector4 { typedef v_iter<vector4< P0 , P1 , P2 , P3>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 > struct vector5 { typedef v_iter<vector5< P0 , P1 , P2 , P3 , P4>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 > struct vector6 { typedef v_iter<vector6< P0 , P1 , P2 , P3 , P4 , P5>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 > struct vector7 { typedef v_iter<vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 > struct vector8 { typedef v_iter<vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 > struct vector9 { typedef v_iter<vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 > struct vector10 { typedef v_iter<vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 > struct vector11 { typedef v_iter<vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 > struct vector12 { typedef v_iter<vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 > struct vector13 { typedef v_iter<vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 > struct vector14 { typedef v_iter<vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 > struct vector15 { typedef v_iter<vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 > struct vector16 { typedef v_iter<vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 > struct vector17 { typedef v_iter<vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 > struct vector18 { typedef v_iter<vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 > struct vector19 { typedef v_iter<vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 > struct vector20 { typedef v_iter<vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 > struct vector21 { typedef v_iter<vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 > struct vector22 { typedef v_iter<vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 > struct vector23 { typedef v_iter<vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 > struct vector24 { typedef v_iter<vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 > struct vector25 { typedef v_iter<vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 > struct vector26 { typedef v_iter<vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 > struct vector27 { typedef v_iter<vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 > struct vector28 { typedef v_iter<vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 > struct vector29 { typedef v_iter<vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 > struct vector30 { typedef v_iter<vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 > struct vector31 { typedef v_iter<vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 > struct vector32 { typedef v_iter<vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 > struct vector33 { typedef v_iter<vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 > struct vector34 { typedef v_iter<vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 > struct vector35 { typedef v_iter<vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 > struct vector36 { typedef v_iter<vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 > struct vector37 { typedef v_iter<vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 > struct vector38 { typedef v_iter<vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 > struct vector39 { typedef v_iter<vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 > struct vector40 { typedef v_iter<vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 > struct vector41 { typedef v_iter<vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 > struct vector42 { typedef v_iter<vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 > struct vector43 { typedef v_iter<vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 > struct vector44 { typedef v_iter<vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 > struct vector45 { typedef v_iter<vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 > struct vector46 { typedef v_iter<vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 > struct vector47 { typedef v_iter<vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 > struct vector48 { typedef v_iter<vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 > struct vector49 { typedef v_iter<vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 > struct vector50 { typedef v_iter<vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 > struct vector51 { typedef v_iter<vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 > struct vector52 { typedef v_iter<vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 > struct vector53 { typedef v_iter<vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 > struct vector54 { typedef v_iter<vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 > struct vector55 { typedef v_iter<vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 > struct vector56 { typedef v_iter<vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 > struct vector57 { typedef v_iter<vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 > struct vector58 { typedef v_iter<vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 > struct vector59 { typedef v_iter<vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 > struct vector60 { typedef v_iter<vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 > struct vector61 { typedef v_iter<vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 > struct vector62 { typedef v_iter<vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 > struct vector63 { typedef v_iter<vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 > struct vector64 { typedef v_iter<vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 > struct vector65 { typedef v_iter<vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 > struct vector66 { typedef v_iter<vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 > struct vector67 { typedef v_iter<vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 > struct vector68 { typedef v_iter<vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 > struct vector69 { typedef v_iter<vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 > struct vector70 { typedef v_iter<vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 > struct vector71 { typedef v_iter<vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 > struct vector72 { typedef v_iter<vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 > struct vector73 { typedef v_iter<vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 > struct vector74 { typedef v_iter<vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 > struct vector75 { typedef v_iter<vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 > struct vector76 { typedef v_iter<vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 > struct vector77 { typedef v_iter<vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 > struct vector78 { typedef v_iter<vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 > struct vector79 { typedef v_iter<vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 > struct vector80 { typedef v_iter<vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 > struct vector81 { typedef v_iter<vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 > struct vector82 { typedef v_iter<vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 > struct vector83 { typedef v_iter<vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 > struct vector84 { typedef v_iter<vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 > struct vector85 { typedef v_iter<vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 > struct vector86 { typedef v_iter<vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 > struct vector87 { typedef v_iter<vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 > struct vector88 { typedef v_iter<vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 > struct vector89 { typedef v_iter<vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 > struct vector90 { typedef v_iter<vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 > struct vector91 { typedef v_iter<vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 > struct vector92 { typedef v_iter<vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 > struct vector93 { typedef v_iter<vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 > struct vector94 { typedef v_iter<vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 > struct vector95 { typedef v_iter<vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 > struct vector96 { typedef v_iter<vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 > struct vector97 { typedef v_iter<vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 > struct vector98 { typedef v_iter<vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 > struct vector99 { typedef v_iter<vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 > struct vector100 { typedef v_iter<vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+}}
+namespace boost { namespace type_of {
+ template<class V, class T> struct push_back {
+ typedef V type;
+ };
+ template< class T> struct push_back<boost::type_of::vector0<>, T> { typedef boost::type_of::vector1< T > type; };
+ template< class P0 , class T> struct push_back<boost::type_of::vector1< P0>, T> { typedef boost::type_of::vector2< P0 , T > type; };
+ template< class P0 , class P1 , class T> struct push_back<boost::type_of::vector2< P0 , P1>, T> { typedef boost::type_of::vector3< P0 , P1 , T > type; };
+ template< class P0 , class P1 , class P2 , class T> struct push_back<boost::type_of::vector3< P0 , P1 , P2>, T> { typedef boost::type_of::vector4< P0 , P1 , P2 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class T> struct push_back<boost::type_of::vector4< P0 , P1 , P2 , P3>, T> { typedef boost::type_of::vector5< P0 , P1 , P2 , P3 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class T> struct push_back<boost::type_of::vector5< P0 , P1 , P2 , P3 , P4>, T> { typedef boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class T> struct push_back<boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , P5>, T> { typedef boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class T> struct push_back<boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, T> { typedef boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class T> struct push_back<boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, T> { typedef boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class T> struct push_back<boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, T> { typedef boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class T> struct push_back<boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, T> { typedef boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class T> struct push_back<boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, T> { typedef boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class T> struct push_back<boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, T> { typedef boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class T> struct push_back<boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, T> { typedef boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class T> struct push_back<boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, T> { typedef boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class T> struct push_back<boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, T> { typedef boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class T> struct push_back<boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, T> { typedef boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class T> struct push_back<boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, T> { typedef boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class T> struct push_back<boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, T> { typedef boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class T> struct push_back<boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, T> { typedef boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class T> struct push_back<boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, T> { typedef boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class T> struct push_back<boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, T> { typedef boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class T> struct push_back<boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, T> { typedef boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class T> struct push_back<boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, T> { typedef boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class T> struct push_back<boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, T> { typedef boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class T> struct push_back<boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, T> { typedef boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class T> struct push_back<boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, T> { typedef boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class T> struct push_back<boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, T> { typedef boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class T> struct push_back<boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, T> { typedef boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class T> struct push_back<boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, T> { typedef boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class T> struct push_back<boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, T> { typedef boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class T> struct push_back<boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, T> { typedef boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class T> struct push_back<boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, T> { typedef boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class T> struct push_back<boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, T> { typedef boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class T> struct push_back<boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, T> { typedef boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class T> struct push_back<boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, T> { typedef boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class T> struct push_back<boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, T> { typedef boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class T> struct push_back<boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, T> { typedef boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class T> struct push_back<boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, T> { typedef boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class T> struct push_back<boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, T> { typedef boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class T> struct push_back<boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, T> { typedef boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class T> struct push_back<boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, T> { typedef boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class T> struct push_back<boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, T> { typedef boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class T> struct push_back<boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, T> { typedef boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class T> struct push_back<boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, T> { typedef boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class T> struct push_back<boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, T> { typedef boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class T> struct push_back<boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, T> { typedef boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class T> struct push_back<boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, T> { typedef boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class T> struct push_back<boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, T> { typedef boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class T> struct push_back<boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, T> { typedef boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class T> struct push_back<boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, T> { typedef boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class T> struct push_back<boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, T> { typedef boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class T> struct push_back<boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, T> { typedef boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class T> struct push_back<boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, T> { typedef boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class T> struct push_back<boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, T> { typedef boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class T> struct push_back<boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, T> { typedef boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class T> struct push_back<boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, T> { typedef boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class T> struct push_back<boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, T> { typedef boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class T> struct push_back<boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, T> { typedef boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class T> struct push_back<boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, T> { typedef boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class T> struct push_back<boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, T> { typedef boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class T> struct push_back<boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, T> { typedef boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class T> struct push_back<boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, T> { typedef boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class T> struct push_back<boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, T> { typedef boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class T> struct push_back<boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, T> { typedef boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class T> struct push_back<boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, T> { typedef boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class T> struct push_back<boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, T> { typedef boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class T> struct push_back<boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, T> { typedef boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class T> struct push_back<boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, T> { typedef boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class T> struct push_back<boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, T> { typedef boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class T> struct push_back<boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, T> { typedef boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class T> struct push_back<boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, T> { typedef boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class T> struct push_back<boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, T> { typedef boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class T> struct push_back<boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, T> { typedef boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class T> struct push_back<boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, T> { typedef boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class T> struct push_back<boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, T> { typedef boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class T> struct push_back<boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, T> { typedef boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class T> struct push_back<boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, T> { typedef boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class T> struct push_back<boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, T> { typedef boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class T> struct push_back<boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, T> { typedef boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class T> struct push_back<boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, T> { typedef boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class T> struct push_back<boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, T> { typedef boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class T> struct push_back<boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, T> { typedef boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class T> struct push_back<boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, T> { typedef boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class T> struct push_back<boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, T> { typedef boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class T> struct push_back<boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, T> { typedef boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class T> struct push_back<boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, T> { typedef boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class T> struct push_back<boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, T> { typedef boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class T> struct push_back<boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, T> { typedef boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class T> struct push_back<boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, T> { typedef boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class T> struct push_back<boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, T> { typedef boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class T> struct push_back<boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, T> { typedef boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class T> struct push_back<boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, T> { typedef boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class T> struct push_back<boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, T> { typedef boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class T> struct push_back<boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, T> { typedef boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class T> struct push_back<boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, T> { typedef boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class T> struct push_back<boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, T> { typedef boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class T> struct push_back<boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, T> { typedef boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class T> struct push_back<boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, T> { typedef boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class T> struct push_back<boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, T> { typedef boost::type_of::vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , T > type; };
+}}
--- /dev/null
+
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+// Preprocessed code, do not edit manually !
+
+
+namespace boost { namespace type_of {
+ template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter;
+ template<class V> struct v_iter<V, mpl::int_<0> > { typedef typename V::item0 type; typedef v_iter<V, mpl::int_<0 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<1> > { typedef typename V::item1 type; typedef v_iter<V, mpl::int_<1 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<2> > { typedef typename V::item2 type; typedef v_iter<V, mpl::int_<2 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<3> > { typedef typename V::item3 type; typedef v_iter<V, mpl::int_<3 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<4> > { typedef typename V::item4 type; typedef v_iter<V, mpl::int_<4 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<5> > { typedef typename V::item5 type; typedef v_iter<V, mpl::int_<5 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<6> > { typedef typename V::item6 type; typedef v_iter<V, mpl::int_<6 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<7> > { typedef typename V::item7 type; typedef v_iter<V, mpl::int_<7 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<8> > { typedef typename V::item8 type; typedef v_iter<V, mpl::int_<8 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<9> > { typedef typename V::item9 type; typedef v_iter<V, mpl::int_<9 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<10> > { typedef typename V::item10 type; typedef v_iter<V, mpl::int_<10 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<11> > { typedef typename V::item11 type; typedef v_iter<V, mpl::int_<11 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<12> > { typedef typename V::item12 type; typedef v_iter<V, mpl::int_<12 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<13> > { typedef typename V::item13 type; typedef v_iter<V, mpl::int_<13 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<14> > { typedef typename V::item14 type; typedef v_iter<V, mpl::int_<14 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<15> > { typedef typename V::item15 type; typedef v_iter<V, mpl::int_<15 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<16> > { typedef typename V::item16 type; typedef v_iter<V, mpl::int_<16 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<17> > { typedef typename V::item17 type; typedef v_iter<V, mpl::int_<17 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<18> > { typedef typename V::item18 type; typedef v_iter<V, mpl::int_<18 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<19> > { typedef typename V::item19 type; typedef v_iter<V, mpl::int_<19 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<20> > { typedef typename V::item20 type; typedef v_iter<V, mpl::int_<20 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<21> > { typedef typename V::item21 type; typedef v_iter<V, mpl::int_<21 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<22> > { typedef typename V::item22 type; typedef v_iter<V, mpl::int_<22 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<23> > { typedef typename V::item23 type; typedef v_iter<V, mpl::int_<23 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<24> > { typedef typename V::item24 type; typedef v_iter<V, mpl::int_<24 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<25> > { typedef typename V::item25 type; typedef v_iter<V, mpl::int_<25 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<26> > { typedef typename V::item26 type; typedef v_iter<V, mpl::int_<26 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<27> > { typedef typename V::item27 type; typedef v_iter<V, mpl::int_<27 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<28> > { typedef typename V::item28 type; typedef v_iter<V, mpl::int_<28 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<29> > { typedef typename V::item29 type; typedef v_iter<V, mpl::int_<29 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<30> > { typedef typename V::item30 type; typedef v_iter<V, mpl::int_<30 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<31> > { typedef typename V::item31 type; typedef v_iter<V, mpl::int_<31 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<32> > { typedef typename V::item32 type; typedef v_iter<V, mpl::int_<32 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<33> > { typedef typename V::item33 type; typedef v_iter<V, mpl::int_<33 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<34> > { typedef typename V::item34 type; typedef v_iter<V, mpl::int_<34 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<35> > { typedef typename V::item35 type; typedef v_iter<V, mpl::int_<35 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<36> > { typedef typename V::item36 type; typedef v_iter<V, mpl::int_<36 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<37> > { typedef typename V::item37 type; typedef v_iter<V, mpl::int_<37 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<38> > { typedef typename V::item38 type; typedef v_iter<V, mpl::int_<38 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<39> > { typedef typename V::item39 type; typedef v_iter<V, mpl::int_<39 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<40> > { typedef typename V::item40 type; typedef v_iter<V, mpl::int_<40 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<41> > { typedef typename V::item41 type; typedef v_iter<V, mpl::int_<41 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<42> > { typedef typename V::item42 type; typedef v_iter<V, mpl::int_<42 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<43> > { typedef typename V::item43 type; typedef v_iter<V, mpl::int_<43 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<44> > { typedef typename V::item44 type; typedef v_iter<V, mpl::int_<44 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<45> > { typedef typename V::item45 type; typedef v_iter<V, mpl::int_<45 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<46> > { typedef typename V::item46 type; typedef v_iter<V, mpl::int_<46 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<47> > { typedef typename V::item47 type; typedef v_iter<V, mpl::int_<47 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<48> > { typedef typename V::item48 type; typedef v_iter<V, mpl::int_<48 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<49> > { typedef typename V::item49 type; typedef v_iter<V, mpl::int_<49 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<50> > { typedef typename V::item50 type; typedef v_iter<V, mpl::int_<50 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<51> > { typedef typename V::item51 type; typedef v_iter<V, mpl::int_<51 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<52> > { typedef typename V::item52 type; typedef v_iter<V, mpl::int_<52 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<53> > { typedef typename V::item53 type; typedef v_iter<V, mpl::int_<53 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<54> > { typedef typename V::item54 type; typedef v_iter<V, mpl::int_<54 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<55> > { typedef typename V::item55 type; typedef v_iter<V, mpl::int_<55 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<56> > { typedef typename V::item56 type; typedef v_iter<V, mpl::int_<56 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<57> > { typedef typename V::item57 type; typedef v_iter<V, mpl::int_<57 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<58> > { typedef typename V::item58 type; typedef v_iter<V, mpl::int_<58 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<59> > { typedef typename V::item59 type; typedef v_iter<V, mpl::int_<59 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<60> > { typedef typename V::item60 type; typedef v_iter<V, mpl::int_<60 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<61> > { typedef typename V::item61 type; typedef v_iter<V, mpl::int_<61 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<62> > { typedef typename V::item62 type; typedef v_iter<V, mpl::int_<62 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<63> > { typedef typename V::item63 type; typedef v_iter<V, mpl::int_<63 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<64> > { typedef typename V::item64 type; typedef v_iter<V, mpl::int_<64 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<65> > { typedef typename V::item65 type; typedef v_iter<V, mpl::int_<65 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<66> > { typedef typename V::item66 type; typedef v_iter<V, mpl::int_<66 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<67> > { typedef typename V::item67 type; typedef v_iter<V, mpl::int_<67 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<68> > { typedef typename V::item68 type; typedef v_iter<V, mpl::int_<68 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<69> > { typedef typename V::item69 type; typedef v_iter<V, mpl::int_<69 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<70> > { typedef typename V::item70 type; typedef v_iter<V, mpl::int_<70 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<71> > { typedef typename V::item71 type; typedef v_iter<V, mpl::int_<71 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<72> > { typedef typename V::item72 type; typedef v_iter<V, mpl::int_<72 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<73> > { typedef typename V::item73 type; typedef v_iter<V, mpl::int_<73 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<74> > { typedef typename V::item74 type; typedef v_iter<V, mpl::int_<74 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<75> > { typedef typename V::item75 type; typedef v_iter<V, mpl::int_<75 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<76> > { typedef typename V::item76 type; typedef v_iter<V, mpl::int_<76 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<77> > { typedef typename V::item77 type; typedef v_iter<V, mpl::int_<77 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<78> > { typedef typename V::item78 type; typedef v_iter<V, mpl::int_<78 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<79> > { typedef typename V::item79 type; typedef v_iter<V, mpl::int_<79 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<80> > { typedef typename V::item80 type; typedef v_iter<V, mpl::int_<80 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<81> > { typedef typename V::item81 type; typedef v_iter<V, mpl::int_<81 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<82> > { typedef typename V::item82 type; typedef v_iter<V, mpl::int_<82 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<83> > { typedef typename V::item83 type; typedef v_iter<V, mpl::int_<83 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<84> > { typedef typename V::item84 type; typedef v_iter<V, mpl::int_<84 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<85> > { typedef typename V::item85 type; typedef v_iter<V, mpl::int_<85 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<86> > { typedef typename V::item86 type; typedef v_iter<V, mpl::int_<86 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<87> > { typedef typename V::item87 type; typedef v_iter<V, mpl::int_<87 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<88> > { typedef typename V::item88 type; typedef v_iter<V, mpl::int_<88 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<89> > { typedef typename V::item89 type; typedef v_iter<V, mpl::int_<89 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<90> > { typedef typename V::item90 type; typedef v_iter<V, mpl::int_<90 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<91> > { typedef typename V::item91 type; typedef v_iter<V, mpl::int_<91 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<92> > { typedef typename V::item92 type; typedef v_iter<V, mpl::int_<92 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<93> > { typedef typename V::item93 type; typedef v_iter<V, mpl::int_<93 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<94> > { typedef typename V::item94 type; typedef v_iter<V, mpl::int_<94 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<95> > { typedef typename V::item95 type; typedef v_iter<V, mpl::int_<95 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<96> > { typedef typename V::item96 type; typedef v_iter<V, mpl::int_<96 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<97> > { typedef typename V::item97 type; typedef v_iter<V, mpl::int_<97 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<98> > { typedef typename V::item98 type; typedef v_iter<V, mpl::int_<98 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<99> > { typedef typename V::item99 type; typedef v_iter<V, mpl::int_<99 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<100> > { typedef typename V::item100 type; typedef v_iter<V, mpl::int_<100 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<101> > { typedef typename V::item101 type; typedef v_iter<V, mpl::int_<101 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<102> > { typedef typename V::item102 type; typedef v_iter<V, mpl::int_<102 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<103> > { typedef typename V::item103 type; typedef v_iter<V, mpl::int_<103 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<104> > { typedef typename V::item104 type; typedef v_iter<V, mpl::int_<104 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<105> > { typedef typename V::item105 type; typedef v_iter<V, mpl::int_<105 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<106> > { typedef typename V::item106 type; typedef v_iter<V, mpl::int_<106 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<107> > { typedef typename V::item107 type; typedef v_iter<V, mpl::int_<107 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<108> > { typedef typename V::item108 type; typedef v_iter<V, mpl::int_<108 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<109> > { typedef typename V::item109 type; typedef v_iter<V, mpl::int_<109 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<110> > { typedef typename V::item110 type; typedef v_iter<V, mpl::int_<110 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<111> > { typedef typename V::item111 type; typedef v_iter<V, mpl::int_<111 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<112> > { typedef typename V::item112 type; typedef v_iter<V, mpl::int_<112 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<113> > { typedef typename V::item113 type; typedef v_iter<V, mpl::int_<113 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<114> > { typedef typename V::item114 type; typedef v_iter<V, mpl::int_<114 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<115> > { typedef typename V::item115 type; typedef v_iter<V, mpl::int_<115 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<116> > { typedef typename V::item116 type; typedef v_iter<V, mpl::int_<116 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<117> > { typedef typename V::item117 type; typedef v_iter<V, mpl::int_<117 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<118> > { typedef typename V::item118 type; typedef v_iter<V, mpl::int_<118 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<119> > { typedef typename V::item119 type; typedef v_iter<V, mpl::int_<119 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<120> > { typedef typename V::item120 type; typedef v_iter<V, mpl::int_<120 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<121> > { typedef typename V::item121 type; typedef v_iter<V, mpl::int_<121 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<122> > { typedef typename V::item122 type; typedef v_iter<V, mpl::int_<122 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<123> > { typedef typename V::item123 type; typedef v_iter<V, mpl::int_<123 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<124> > { typedef typename V::item124 type; typedef v_iter<V, mpl::int_<124 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<125> > { typedef typename V::item125 type; typedef v_iter<V, mpl::int_<125 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<126> > { typedef typename V::item126 type; typedef v_iter<V, mpl::int_<126 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<127> > { typedef typename V::item127 type; typedef v_iter<V, mpl::int_<127 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<128> > { typedef typename V::item128 type; typedef v_iter<V, mpl::int_<128 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<129> > { typedef typename V::item129 type; typedef v_iter<V, mpl::int_<129 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<130> > { typedef typename V::item130 type; typedef v_iter<V, mpl::int_<130 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<131> > { typedef typename V::item131 type; typedef v_iter<V, mpl::int_<131 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<132> > { typedef typename V::item132 type; typedef v_iter<V, mpl::int_<132 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<133> > { typedef typename V::item133 type; typedef v_iter<V, mpl::int_<133 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<134> > { typedef typename V::item134 type; typedef v_iter<V, mpl::int_<134 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<135> > { typedef typename V::item135 type; typedef v_iter<V, mpl::int_<135 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<136> > { typedef typename V::item136 type; typedef v_iter<V, mpl::int_<136 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<137> > { typedef typename V::item137 type; typedef v_iter<V, mpl::int_<137 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<138> > { typedef typename V::item138 type; typedef v_iter<V, mpl::int_<138 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<139> > { typedef typename V::item139 type; typedef v_iter<V, mpl::int_<139 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<140> > { typedef typename V::item140 type; typedef v_iter<V, mpl::int_<140 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<141> > { typedef typename V::item141 type; typedef v_iter<V, mpl::int_<141 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<142> > { typedef typename V::item142 type; typedef v_iter<V, mpl::int_<142 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<143> > { typedef typename V::item143 type; typedef v_iter<V, mpl::int_<143 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<144> > { typedef typename V::item144 type; typedef v_iter<V, mpl::int_<144 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<145> > { typedef typename V::item145 type; typedef v_iter<V, mpl::int_<145 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<146> > { typedef typename V::item146 type; typedef v_iter<V, mpl::int_<146 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<147> > { typedef typename V::item147 type; typedef v_iter<V, mpl::int_<147 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<148> > { typedef typename V::item148 type; typedef v_iter<V, mpl::int_<148 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<149> > { typedef typename V::item149 type; typedef v_iter<V, mpl::int_<149 + 1> > next; };
+}}
+namespace boost { namespace type_of {
+ template< class T = void> struct vector0 { typedef v_iter<vector0<>, boost::mpl::int_<0> > begin; typedef mpl::int_<1> item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 > struct vector1 { typedef v_iter<vector1< P0>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 > struct vector2 { typedef v_iter<vector2< P0 , P1>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 > struct vector3 { typedef v_iter<vector3< P0 , P1 , P2>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 > struct vector4 { typedef v_iter<vector4< P0 , P1 , P2 , P3>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 > struct vector5 { typedef v_iter<vector5< P0 , P1 , P2 , P3 , P4>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 > struct vector6 { typedef v_iter<vector6< P0 , P1 , P2 , P3 , P4 , P5>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 > struct vector7 { typedef v_iter<vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 > struct vector8 { typedef v_iter<vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 > struct vector9 { typedef v_iter<vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 > struct vector10 { typedef v_iter<vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 > struct vector11 { typedef v_iter<vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 > struct vector12 { typedef v_iter<vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 > struct vector13 { typedef v_iter<vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 > struct vector14 { typedef v_iter<vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 > struct vector15 { typedef v_iter<vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 > struct vector16 { typedef v_iter<vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 > struct vector17 { typedef v_iter<vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 > struct vector18 { typedef v_iter<vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 > struct vector19 { typedef v_iter<vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 > struct vector20 { typedef v_iter<vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 > struct vector21 { typedef v_iter<vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 > struct vector22 { typedef v_iter<vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 > struct vector23 { typedef v_iter<vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 > struct vector24 { typedef v_iter<vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 > struct vector25 { typedef v_iter<vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 > struct vector26 { typedef v_iter<vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 > struct vector27 { typedef v_iter<vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 > struct vector28 { typedef v_iter<vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 > struct vector29 { typedef v_iter<vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 > struct vector30 { typedef v_iter<vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 > struct vector31 { typedef v_iter<vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 > struct vector32 { typedef v_iter<vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 > struct vector33 { typedef v_iter<vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 > struct vector34 { typedef v_iter<vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 > struct vector35 { typedef v_iter<vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 > struct vector36 { typedef v_iter<vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 > struct vector37 { typedef v_iter<vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 > struct vector38 { typedef v_iter<vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 > struct vector39 { typedef v_iter<vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 > struct vector40 { typedef v_iter<vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 > struct vector41 { typedef v_iter<vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 > struct vector42 { typedef v_iter<vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 > struct vector43 { typedef v_iter<vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 > struct vector44 { typedef v_iter<vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 > struct vector45 { typedef v_iter<vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 > struct vector46 { typedef v_iter<vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 > struct vector47 { typedef v_iter<vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 > struct vector48 { typedef v_iter<vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 > struct vector49 { typedef v_iter<vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 > struct vector50 { typedef v_iter<vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 > struct vector51 { typedef v_iter<vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 > struct vector52 { typedef v_iter<vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 > struct vector53 { typedef v_iter<vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 > struct vector54 { typedef v_iter<vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 > struct vector55 { typedef v_iter<vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 > struct vector56 { typedef v_iter<vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 > struct vector57 { typedef v_iter<vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 > struct vector58 { typedef v_iter<vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 > struct vector59 { typedef v_iter<vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 > struct vector60 { typedef v_iter<vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 > struct vector61 { typedef v_iter<vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 > struct vector62 { typedef v_iter<vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 > struct vector63 { typedef v_iter<vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 > struct vector64 { typedef v_iter<vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 > struct vector65 { typedef v_iter<vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 > struct vector66 { typedef v_iter<vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 > struct vector67 { typedef v_iter<vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 > struct vector68 { typedef v_iter<vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 > struct vector69 { typedef v_iter<vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 > struct vector70 { typedef v_iter<vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 > struct vector71 { typedef v_iter<vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 > struct vector72 { typedef v_iter<vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 > struct vector73 { typedef v_iter<vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 > struct vector74 { typedef v_iter<vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 > struct vector75 { typedef v_iter<vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 > struct vector76 { typedef v_iter<vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 > struct vector77 { typedef v_iter<vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 > struct vector78 { typedef v_iter<vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 > struct vector79 { typedef v_iter<vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 > struct vector80 { typedef v_iter<vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 > struct vector81 { typedef v_iter<vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 > struct vector82 { typedef v_iter<vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 > struct vector83 { typedef v_iter<vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 > struct vector84 { typedef v_iter<vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 > struct vector85 { typedef v_iter<vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 > struct vector86 { typedef v_iter<vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 > struct vector87 { typedef v_iter<vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 > struct vector88 { typedef v_iter<vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 > struct vector89 { typedef v_iter<vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 > struct vector90 { typedef v_iter<vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 > struct vector91 { typedef v_iter<vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 > struct vector92 { typedef v_iter<vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 > struct vector93 { typedef v_iter<vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 > struct vector94 { typedef v_iter<vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 > struct vector95 { typedef v_iter<vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 > struct vector96 { typedef v_iter<vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 > struct vector97 { typedef v_iter<vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 > struct vector98 { typedef v_iter<vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 > struct vector99 { typedef v_iter<vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 > struct vector100 { typedef v_iter<vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 > struct vector101 { typedef v_iter<vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 > struct vector102 { typedef v_iter<vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 > struct vector103 { typedef v_iter<vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 > struct vector104 { typedef v_iter<vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 > struct vector105 { typedef v_iter<vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 > struct vector106 { typedef v_iter<vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 > struct vector107 { typedef v_iter<vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 > struct vector108 { typedef v_iter<vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 > struct vector109 { typedef v_iter<vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 > struct vector110 { typedef v_iter<vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 > struct vector111 { typedef v_iter<vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 > struct vector112 { typedef v_iter<vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 > struct vector113 { typedef v_iter<vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 > struct vector114 { typedef v_iter<vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 > struct vector115 { typedef v_iter<vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 > struct vector116 { typedef v_iter<vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 > struct vector117 { typedef v_iter<vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 > struct vector118 { typedef v_iter<vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 > struct vector119 { typedef v_iter<vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 > struct vector120 { typedef v_iter<vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 > struct vector121 { typedef v_iter<vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 > struct vector122 { typedef v_iter<vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 > struct vector123 { typedef v_iter<vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 > struct vector124 { typedef v_iter<vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 > struct vector125 { typedef v_iter<vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 > struct vector126 { typedef v_iter<vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 > struct vector127 { typedef v_iter<vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 > struct vector128 { typedef v_iter<vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 > struct vector129 { typedef v_iter<vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 > struct vector130 { typedef v_iter<vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 > struct vector131 { typedef v_iter<vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 > struct vector132 { typedef v_iter<vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 > struct vector133 { typedef v_iter<vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 > struct vector134 { typedef v_iter<vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 > struct vector135 { typedef v_iter<vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 > struct vector136 { typedef v_iter<vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 > struct vector137 { typedef v_iter<vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 > struct vector138 { typedef v_iter<vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 > struct vector139 { typedef v_iter<vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 > struct vector140 { typedef v_iter<vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 > struct vector141 { typedef v_iter<vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 > struct vector142 { typedef v_iter<vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 > struct vector143 { typedef v_iter<vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 > struct vector144 { typedef v_iter<vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 > struct vector145 { typedef v_iter<vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 > struct vector146 { typedef v_iter<vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 > struct vector147 { typedef v_iter<vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 > struct vector148 { typedef v_iter<vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 > struct vector149 { typedef v_iter<vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 > struct vector150 { typedef v_iter<vector150< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+}}
+namespace boost { namespace type_of {
+ template<class V, class T> struct push_back {
+ typedef V type;
+ };
+ template< class T> struct push_back<boost::type_of::vector0<>, T> { typedef boost::type_of::vector1< T > type; };
+ template< class P0 , class T> struct push_back<boost::type_of::vector1< P0>, T> { typedef boost::type_of::vector2< P0 , T > type; };
+ template< class P0 , class P1 , class T> struct push_back<boost::type_of::vector2< P0 , P1>, T> { typedef boost::type_of::vector3< P0 , P1 , T > type; };
+ template< class P0 , class P1 , class P2 , class T> struct push_back<boost::type_of::vector3< P0 , P1 , P2>, T> { typedef boost::type_of::vector4< P0 , P1 , P2 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class T> struct push_back<boost::type_of::vector4< P0 , P1 , P2 , P3>, T> { typedef boost::type_of::vector5< P0 , P1 , P2 , P3 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class T> struct push_back<boost::type_of::vector5< P0 , P1 , P2 , P3 , P4>, T> { typedef boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class T> struct push_back<boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , P5>, T> { typedef boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class T> struct push_back<boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, T> { typedef boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class T> struct push_back<boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, T> { typedef boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class T> struct push_back<boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, T> { typedef boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class T> struct push_back<boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, T> { typedef boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class T> struct push_back<boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, T> { typedef boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class T> struct push_back<boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, T> { typedef boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class T> struct push_back<boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, T> { typedef boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class T> struct push_back<boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, T> { typedef boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class T> struct push_back<boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, T> { typedef boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class T> struct push_back<boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, T> { typedef boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class T> struct push_back<boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, T> { typedef boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class T> struct push_back<boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, T> { typedef boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class T> struct push_back<boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, T> { typedef boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class T> struct push_back<boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, T> { typedef boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class T> struct push_back<boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, T> { typedef boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class T> struct push_back<boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, T> { typedef boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class T> struct push_back<boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, T> { typedef boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class T> struct push_back<boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, T> { typedef boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class T> struct push_back<boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, T> { typedef boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class T> struct push_back<boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, T> { typedef boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class T> struct push_back<boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, T> { typedef boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class T> struct push_back<boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, T> { typedef boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class T> struct push_back<boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, T> { typedef boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class T> struct push_back<boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, T> { typedef boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class T> struct push_back<boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, T> { typedef boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class T> struct push_back<boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, T> { typedef boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class T> struct push_back<boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, T> { typedef boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class T> struct push_back<boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, T> { typedef boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class T> struct push_back<boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, T> { typedef boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class T> struct push_back<boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, T> { typedef boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class T> struct push_back<boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, T> { typedef boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class T> struct push_back<boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, T> { typedef boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class T> struct push_back<boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, T> { typedef boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class T> struct push_back<boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, T> { typedef boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class T> struct push_back<boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, T> { typedef boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class T> struct push_back<boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, T> { typedef boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class T> struct push_back<boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, T> { typedef boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class T> struct push_back<boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, T> { typedef boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class T> struct push_back<boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, T> { typedef boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class T> struct push_back<boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, T> { typedef boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class T> struct push_back<boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, T> { typedef boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class T> struct push_back<boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, T> { typedef boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class T> struct push_back<boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, T> { typedef boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class T> struct push_back<boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, T> { typedef boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class T> struct push_back<boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, T> { typedef boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class T> struct push_back<boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, T> { typedef boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class T> struct push_back<boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, T> { typedef boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class T> struct push_back<boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, T> { typedef boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class T> struct push_back<boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, T> { typedef boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class T> struct push_back<boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, T> { typedef boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class T> struct push_back<boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, T> { typedef boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class T> struct push_back<boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, T> { typedef boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class T> struct push_back<boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, T> { typedef boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class T> struct push_back<boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, T> { typedef boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class T> struct push_back<boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, T> { typedef boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class T> struct push_back<boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, T> { typedef boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class T> struct push_back<boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, T> { typedef boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class T> struct push_back<boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, T> { typedef boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class T> struct push_back<boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, T> { typedef boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class T> struct push_back<boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, T> { typedef boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class T> struct push_back<boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, T> { typedef boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class T> struct push_back<boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, T> { typedef boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class T> struct push_back<boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, T> { typedef boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class T> struct push_back<boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, T> { typedef boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class T> struct push_back<boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, T> { typedef boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class T> struct push_back<boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, T> { typedef boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class T> struct push_back<boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, T> { typedef boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class T> struct push_back<boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, T> { typedef boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class T> struct push_back<boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, T> { typedef boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class T> struct push_back<boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, T> { typedef boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class T> struct push_back<boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, T> { typedef boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class T> struct push_back<boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, T> { typedef boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class T> struct push_back<boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, T> { typedef boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class T> struct push_back<boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, T> { typedef boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class T> struct push_back<boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, T> { typedef boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class T> struct push_back<boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, T> { typedef boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class T> struct push_back<boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, T> { typedef boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class T> struct push_back<boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, T> { typedef boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class T> struct push_back<boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, T> { typedef boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class T> struct push_back<boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, T> { typedef boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class T> struct push_back<boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, T> { typedef boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class T> struct push_back<boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, T> { typedef boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class T> struct push_back<boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, T> { typedef boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class T> struct push_back<boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, T> { typedef boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class T> struct push_back<boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, T> { typedef boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class T> struct push_back<boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, T> { typedef boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class T> struct push_back<boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, T> { typedef boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class T> struct push_back<boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, T> { typedef boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class T> struct push_back<boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, T> { typedef boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class T> struct push_back<boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, T> { typedef boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class T> struct push_back<boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, T> { typedef boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class T> struct push_back<boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, T> { typedef boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class T> struct push_back<boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, T> { typedef boost::type_of::vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class T> struct push_back<boost::type_of::vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99>, T> { typedef boost::type_of::vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class T> struct push_back<boost::type_of::vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100>, T> { typedef boost::type_of::vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class T> struct push_back<boost::type_of::vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101>, T> { typedef boost::type_of::vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class T> struct push_back<boost::type_of::vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102>, T> { typedef boost::type_of::vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class T> struct push_back<boost::type_of::vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103>, T> { typedef boost::type_of::vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class T> struct push_back<boost::type_of::vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104>, T> { typedef boost::type_of::vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class T> struct push_back<boost::type_of::vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105>, T> { typedef boost::type_of::vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class T> struct push_back<boost::type_of::vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106>, T> { typedef boost::type_of::vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class T> struct push_back<boost::type_of::vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107>, T> { typedef boost::type_of::vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class T> struct push_back<boost::type_of::vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108>, T> { typedef boost::type_of::vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class T> struct push_back<boost::type_of::vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109>, T> { typedef boost::type_of::vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class T> struct push_back<boost::type_of::vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110>, T> { typedef boost::type_of::vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class T> struct push_back<boost::type_of::vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111>, T> { typedef boost::type_of::vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class T> struct push_back<boost::type_of::vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112>, T> { typedef boost::type_of::vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class T> struct push_back<boost::type_of::vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113>, T> { typedef boost::type_of::vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class T> struct push_back<boost::type_of::vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114>, T> { typedef boost::type_of::vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class T> struct push_back<boost::type_of::vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115>, T> { typedef boost::type_of::vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class T> struct push_back<boost::type_of::vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116>, T> { typedef boost::type_of::vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class T> struct push_back<boost::type_of::vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117>, T> { typedef boost::type_of::vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class T> struct push_back<boost::type_of::vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118>, T> { typedef boost::type_of::vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class T> struct push_back<boost::type_of::vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119>, T> { typedef boost::type_of::vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class T> struct push_back<boost::type_of::vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120>, T> { typedef boost::type_of::vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class T> struct push_back<boost::type_of::vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121>, T> { typedef boost::type_of::vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class T> struct push_back<boost::type_of::vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122>, T> { typedef boost::type_of::vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class T> struct push_back<boost::type_of::vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123>, T> { typedef boost::type_of::vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class T> struct push_back<boost::type_of::vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124>, T> { typedef boost::type_of::vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class T> struct push_back<boost::type_of::vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125>, T> { typedef boost::type_of::vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class T> struct push_back<boost::type_of::vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126>, T> { typedef boost::type_of::vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class T> struct push_back<boost::type_of::vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127>, T> { typedef boost::type_of::vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class T> struct push_back<boost::type_of::vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128>, T> { typedef boost::type_of::vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class T> struct push_back<boost::type_of::vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129>, T> { typedef boost::type_of::vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class T> struct push_back<boost::type_of::vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130>, T> { typedef boost::type_of::vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class T> struct push_back<boost::type_of::vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131>, T> { typedef boost::type_of::vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class T> struct push_back<boost::type_of::vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132>, T> { typedef boost::type_of::vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class T> struct push_back<boost::type_of::vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133>, T> { typedef boost::type_of::vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class T> struct push_back<boost::type_of::vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134>, T> { typedef boost::type_of::vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class T> struct push_back<boost::type_of::vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135>, T> { typedef boost::type_of::vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class T> struct push_back<boost::type_of::vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136>, T> { typedef boost::type_of::vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class T> struct push_back<boost::type_of::vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137>, T> { typedef boost::type_of::vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class T> struct push_back<boost::type_of::vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138>, T> { typedef boost::type_of::vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class T> struct push_back<boost::type_of::vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139>, T> { typedef boost::type_of::vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class T> struct push_back<boost::type_of::vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140>, T> { typedef boost::type_of::vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class T> struct push_back<boost::type_of::vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141>, T> { typedef boost::type_of::vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class T> struct push_back<boost::type_of::vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142>, T> { typedef boost::type_of::vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class T> struct push_back<boost::type_of::vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143>, T> { typedef boost::type_of::vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class T> struct push_back<boost::type_of::vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144>, T> { typedef boost::type_of::vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class T> struct push_back<boost::type_of::vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145>, T> { typedef boost::type_of::vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class T> struct push_back<boost::type_of::vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146>, T> { typedef boost::type_of::vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class T> struct push_back<boost::type_of::vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147>, T> { typedef boost::type_of::vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class T> struct push_back<boost::type_of::vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148>, T> { typedef boost::type_of::vector150< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , T > type; };
+}}
--- /dev/null
+
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+// Preprocessed code, do not edit manually !
+
+
+namespace boost { namespace type_of {
+ template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter;
+ template<class V> struct v_iter<V, mpl::int_<0> > { typedef typename V::item0 type; typedef v_iter<V, mpl::int_<0 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<1> > { typedef typename V::item1 type; typedef v_iter<V, mpl::int_<1 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<2> > { typedef typename V::item2 type; typedef v_iter<V, mpl::int_<2 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<3> > { typedef typename V::item3 type; typedef v_iter<V, mpl::int_<3 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<4> > { typedef typename V::item4 type; typedef v_iter<V, mpl::int_<4 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<5> > { typedef typename V::item5 type; typedef v_iter<V, mpl::int_<5 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<6> > { typedef typename V::item6 type; typedef v_iter<V, mpl::int_<6 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<7> > { typedef typename V::item7 type; typedef v_iter<V, mpl::int_<7 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<8> > { typedef typename V::item8 type; typedef v_iter<V, mpl::int_<8 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<9> > { typedef typename V::item9 type; typedef v_iter<V, mpl::int_<9 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<10> > { typedef typename V::item10 type; typedef v_iter<V, mpl::int_<10 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<11> > { typedef typename V::item11 type; typedef v_iter<V, mpl::int_<11 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<12> > { typedef typename V::item12 type; typedef v_iter<V, mpl::int_<12 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<13> > { typedef typename V::item13 type; typedef v_iter<V, mpl::int_<13 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<14> > { typedef typename V::item14 type; typedef v_iter<V, mpl::int_<14 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<15> > { typedef typename V::item15 type; typedef v_iter<V, mpl::int_<15 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<16> > { typedef typename V::item16 type; typedef v_iter<V, mpl::int_<16 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<17> > { typedef typename V::item17 type; typedef v_iter<V, mpl::int_<17 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<18> > { typedef typename V::item18 type; typedef v_iter<V, mpl::int_<18 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<19> > { typedef typename V::item19 type; typedef v_iter<V, mpl::int_<19 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<20> > { typedef typename V::item20 type; typedef v_iter<V, mpl::int_<20 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<21> > { typedef typename V::item21 type; typedef v_iter<V, mpl::int_<21 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<22> > { typedef typename V::item22 type; typedef v_iter<V, mpl::int_<22 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<23> > { typedef typename V::item23 type; typedef v_iter<V, mpl::int_<23 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<24> > { typedef typename V::item24 type; typedef v_iter<V, mpl::int_<24 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<25> > { typedef typename V::item25 type; typedef v_iter<V, mpl::int_<25 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<26> > { typedef typename V::item26 type; typedef v_iter<V, mpl::int_<26 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<27> > { typedef typename V::item27 type; typedef v_iter<V, mpl::int_<27 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<28> > { typedef typename V::item28 type; typedef v_iter<V, mpl::int_<28 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<29> > { typedef typename V::item29 type; typedef v_iter<V, mpl::int_<29 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<30> > { typedef typename V::item30 type; typedef v_iter<V, mpl::int_<30 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<31> > { typedef typename V::item31 type; typedef v_iter<V, mpl::int_<31 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<32> > { typedef typename V::item32 type; typedef v_iter<V, mpl::int_<32 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<33> > { typedef typename V::item33 type; typedef v_iter<V, mpl::int_<33 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<34> > { typedef typename V::item34 type; typedef v_iter<V, mpl::int_<34 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<35> > { typedef typename V::item35 type; typedef v_iter<V, mpl::int_<35 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<36> > { typedef typename V::item36 type; typedef v_iter<V, mpl::int_<36 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<37> > { typedef typename V::item37 type; typedef v_iter<V, mpl::int_<37 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<38> > { typedef typename V::item38 type; typedef v_iter<V, mpl::int_<38 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<39> > { typedef typename V::item39 type; typedef v_iter<V, mpl::int_<39 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<40> > { typedef typename V::item40 type; typedef v_iter<V, mpl::int_<40 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<41> > { typedef typename V::item41 type; typedef v_iter<V, mpl::int_<41 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<42> > { typedef typename V::item42 type; typedef v_iter<V, mpl::int_<42 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<43> > { typedef typename V::item43 type; typedef v_iter<V, mpl::int_<43 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<44> > { typedef typename V::item44 type; typedef v_iter<V, mpl::int_<44 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<45> > { typedef typename V::item45 type; typedef v_iter<V, mpl::int_<45 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<46> > { typedef typename V::item46 type; typedef v_iter<V, mpl::int_<46 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<47> > { typedef typename V::item47 type; typedef v_iter<V, mpl::int_<47 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<48> > { typedef typename V::item48 type; typedef v_iter<V, mpl::int_<48 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<49> > { typedef typename V::item49 type; typedef v_iter<V, mpl::int_<49 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<50> > { typedef typename V::item50 type; typedef v_iter<V, mpl::int_<50 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<51> > { typedef typename V::item51 type; typedef v_iter<V, mpl::int_<51 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<52> > { typedef typename V::item52 type; typedef v_iter<V, mpl::int_<52 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<53> > { typedef typename V::item53 type; typedef v_iter<V, mpl::int_<53 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<54> > { typedef typename V::item54 type; typedef v_iter<V, mpl::int_<54 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<55> > { typedef typename V::item55 type; typedef v_iter<V, mpl::int_<55 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<56> > { typedef typename V::item56 type; typedef v_iter<V, mpl::int_<56 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<57> > { typedef typename V::item57 type; typedef v_iter<V, mpl::int_<57 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<58> > { typedef typename V::item58 type; typedef v_iter<V, mpl::int_<58 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<59> > { typedef typename V::item59 type; typedef v_iter<V, mpl::int_<59 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<60> > { typedef typename V::item60 type; typedef v_iter<V, mpl::int_<60 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<61> > { typedef typename V::item61 type; typedef v_iter<V, mpl::int_<61 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<62> > { typedef typename V::item62 type; typedef v_iter<V, mpl::int_<62 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<63> > { typedef typename V::item63 type; typedef v_iter<V, mpl::int_<63 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<64> > { typedef typename V::item64 type; typedef v_iter<V, mpl::int_<64 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<65> > { typedef typename V::item65 type; typedef v_iter<V, mpl::int_<65 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<66> > { typedef typename V::item66 type; typedef v_iter<V, mpl::int_<66 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<67> > { typedef typename V::item67 type; typedef v_iter<V, mpl::int_<67 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<68> > { typedef typename V::item68 type; typedef v_iter<V, mpl::int_<68 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<69> > { typedef typename V::item69 type; typedef v_iter<V, mpl::int_<69 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<70> > { typedef typename V::item70 type; typedef v_iter<V, mpl::int_<70 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<71> > { typedef typename V::item71 type; typedef v_iter<V, mpl::int_<71 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<72> > { typedef typename V::item72 type; typedef v_iter<V, mpl::int_<72 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<73> > { typedef typename V::item73 type; typedef v_iter<V, mpl::int_<73 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<74> > { typedef typename V::item74 type; typedef v_iter<V, mpl::int_<74 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<75> > { typedef typename V::item75 type; typedef v_iter<V, mpl::int_<75 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<76> > { typedef typename V::item76 type; typedef v_iter<V, mpl::int_<76 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<77> > { typedef typename V::item77 type; typedef v_iter<V, mpl::int_<77 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<78> > { typedef typename V::item78 type; typedef v_iter<V, mpl::int_<78 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<79> > { typedef typename V::item79 type; typedef v_iter<V, mpl::int_<79 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<80> > { typedef typename V::item80 type; typedef v_iter<V, mpl::int_<80 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<81> > { typedef typename V::item81 type; typedef v_iter<V, mpl::int_<81 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<82> > { typedef typename V::item82 type; typedef v_iter<V, mpl::int_<82 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<83> > { typedef typename V::item83 type; typedef v_iter<V, mpl::int_<83 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<84> > { typedef typename V::item84 type; typedef v_iter<V, mpl::int_<84 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<85> > { typedef typename V::item85 type; typedef v_iter<V, mpl::int_<85 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<86> > { typedef typename V::item86 type; typedef v_iter<V, mpl::int_<86 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<87> > { typedef typename V::item87 type; typedef v_iter<V, mpl::int_<87 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<88> > { typedef typename V::item88 type; typedef v_iter<V, mpl::int_<88 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<89> > { typedef typename V::item89 type; typedef v_iter<V, mpl::int_<89 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<90> > { typedef typename V::item90 type; typedef v_iter<V, mpl::int_<90 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<91> > { typedef typename V::item91 type; typedef v_iter<V, mpl::int_<91 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<92> > { typedef typename V::item92 type; typedef v_iter<V, mpl::int_<92 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<93> > { typedef typename V::item93 type; typedef v_iter<V, mpl::int_<93 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<94> > { typedef typename V::item94 type; typedef v_iter<V, mpl::int_<94 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<95> > { typedef typename V::item95 type; typedef v_iter<V, mpl::int_<95 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<96> > { typedef typename V::item96 type; typedef v_iter<V, mpl::int_<96 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<97> > { typedef typename V::item97 type; typedef v_iter<V, mpl::int_<97 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<98> > { typedef typename V::item98 type; typedef v_iter<V, mpl::int_<98 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<99> > { typedef typename V::item99 type; typedef v_iter<V, mpl::int_<99 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<100> > { typedef typename V::item100 type; typedef v_iter<V, mpl::int_<100 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<101> > { typedef typename V::item101 type; typedef v_iter<V, mpl::int_<101 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<102> > { typedef typename V::item102 type; typedef v_iter<V, mpl::int_<102 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<103> > { typedef typename V::item103 type; typedef v_iter<V, mpl::int_<103 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<104> > { typedef typename V::item104 type; typedef v_iter<V, mpl::int_<104 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<105> > { typedef typename V::item105 type; typedef v_iter<V, mpl::int_<105 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<106> > { typedef typename V::item106 type; typedef v_iter<V, mpl::int_<106 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<107> > { typedef typename V::item107 type; typedef v_iter<V, mpl::int_<107 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<108> > { typedef typename V::item108 type; typedef v_iter<V, mpl::int_<108 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<109> > { typedef typename V::item109 type; typedef v_iter<V, mpl::int_<109 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<110> > { typedef typename V::item110 type; typedef v_iter<V, mpl::int_<110 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<111> > { typedef typename V::item111 type; typedef v_iter<V, mpl::int_<111 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<112> > { typedef typename V::item112 type; typedef v_iter<V, mpl::int_<112 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<113> > { typedef typename V::item113 type; typedef v_iter<V, mpl::int_<113 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<114> > { typedef typename V::item114 type; typedef v_iter<V, mpl::int_<114 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<115> > { typedef typename V::item115 type; typedef v_iter<V, mpl::int_<115 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<116> > { typedef typename V::item116 type; typedef v_iter<V, mpl::int_<116 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<117> > { typedef typename V::item117 type; typedef v_iter<V, mpl::int_<117 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<118> > { typedef typename V::item118 type; typedef v_iter<V, mpl::int_<118 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<119> > { typedef typename V::item119 type; typedef v_iter<V, mpl::int_<119 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<120> > { typedef typename V::item120 type; typedef v_iter<V, mpl::int_<120 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<121> > { typedef typename V::item121 type; typedef v_iter<V, mpl::int_<121 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<122> > { typedef typename V::item122 type; typedef v_iter<V, mpl::int_<122 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<123> > { typedef typename V::item123 type; typedef v_iter<V, mpl::int_<123 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<124> > { typedef typename V::item124 type; typedef v_iter<V, mpl::int_<124 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<125> > { typedef typename V::item125 type; typedef v_iter<V, mpl::int_<125 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<126> > { typedef typename V::item126 type; typedef v_iter<V, mpl::int_<126 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<127> > { typedef typename V::item127 type; typedef v_iter<V, mpl::int_<127 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<128> > { typedef typename V::item128 type; typedef v_iter<V, mpl::int_<128 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<129> > { typedef typename V::item129 type; typedef v_iter<V, mpl::int_<129 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<130> > { typedef typename V::item130 type; typedef v_iter<V, mpl::int_<130 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<131> > { typedef typename V::item131 type; typedef v_iter<V, mpl::int_<131 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<132> > { typedef typename V::item132 type; typedef v_iter<V, mpl::int_<132 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<133> > { typedef typename V::item133 type; typedef v_iter<V, mpl::int_<133 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<134> > { typedef typename V::item134 type; typedef v_iter<V, mpl::int_<134 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<135> > { typedef typename V::item135 type; typedef v_iter<V, mpl::int_<135 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<136> > { typedef typename V::item136 type; typedef v_iter<V, mpl::int_<136 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<137> > { typedef typename V::item137 type; typedef v_iter<V, mpl::int_<137 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<138> > { typedef typename V::item138 type; typedef v_iter<V, mpl::int_<138 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<139> > { typedef typename V::item139 type; typedef v_iter<V, mpl::int_<139 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<140> > { typedef typename V::item140 type; typedef v_iter<V, mpl::int_<140 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<141> > { typedef typename V::item141 type; typedef v_iter<V, mpl::int_<141 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<142> > { typedef typename V::item142 type; typedef v_iter<V, mpl::int_<142 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<143> > { typedef typename V::item143 type; typedef v_iter<V, mpl::int_<143 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<144> > { typedef typename V::item144 type; typedef v_iter<V, mpl::int_<144 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<145> > { typedef typename V::item145 type; typedef v_iter<V, mpl::int_<145 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<146> > { typedef typename V::item146 type; typedef v_iter<V, mpl::int_<146 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<147> > { typedef typename V::item147 type; typedef v_iter<V, mpl::int_<147 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<148> > { typedef typename V::item148 type; typedef v_iter<V, mpl::int_<148 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<149> > { typedef typename V::item149 type; typedef v_iter<V, mpl::int_<149 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<150> > { typedef typename V::item150 type; typedef v_iter<V, mpl::int_<150 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<151> > { typedef typename V::item151 type; typedef v_iter<V, mpl::int_<151 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<152> > { typedef typename V::item152 type; typedef v_iter<V, mpl::int_<152 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<153> > { typedef typename V::item153 type; typedef v_iter<V, mpl::int_<153 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<154> > { typedef typename V::item154 type; typedef v_iter<V, mpl::int_<154 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<155> > { typedef typename V::item155 type; typedef v_iter<V, mpl::int_<155 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<156> > { typedef typename V::item156 type; typedef v_iter<V, mpl::int_<156 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<157> > { typedef typename V::item157 type; typedef v_iter<V, mpl::int_<157 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<158> > { typedef typename V::item158 type; typedef v_iter<V, mpl::int_<158 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<159> > { typedef typename V::item159 type; typedef v_iter<V, mpl::int_<159 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<160> > { typedef typename V::item160 type; typedef v_iter<V, mpl::int_<160 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<161> > { typedef typename V::item161 type; typedef v_iter<V, mpl::int_<161 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<162> > { typedef typename V::item162 type; typedef v_iter<V, mpl::int_<162 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<163> > { typedef typename V::item163 type; typedef v_iter<V, mpl::int_<163 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<164> > { typedef typename V::item164 type; typedef v_iter<V, mpl::int_<164 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<165> > { typedef typename V::item165 type; typedef v_iter<V, mpl::int_<165 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<166> > { typedef typename V::item166 type; typedef v_iter<V, mpl::int_<166 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<167> > { typedef typename V::item167 type; typedef v_iter<V, mpl::int_<167 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<168> > { typedef typename V::item168 type; typedef v_iter<V, mpl::int_<168 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<169> > { typedef typename V::item169 type; typedef v_iter<V, mpl::int_<169 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<170> > { typedef typename V::item170 type; typedef v_iter<V, mpl::int_<170 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<171> > { typedef typename V::item171 type; typedef v_iter<V, mpl::int_<171 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<172> > { typedef typename V::item172 type; typedef v_iter<V, mpl::int_<172 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<173> > { typedef typename V::item173 type; typedef v_iter<V, mpl::int_<173 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<174> > { typedef typename V::item174 type; typedef v_iter<V, mpl::int_<174 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<175> > { typedef typename V::item175 type; typedef v_iter<V, mpl::int_<175 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<176> > { typedef typename V::item176 type; typedef v_iter<V, mpl::int_<176 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<177> > { typedef typename V::item177 type; typedef v_iter<V, mpl::int_<177 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<178> > { typedef typename V::item178 type; typedef v_iter<V, mpl::int_<178 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<179> > { typedef typename V::item179 type; typedef v_iter<V, mpl::int_<179 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<180> > { typedef typename V::item180 type; typedef v_iter<V, mpl::int_<180 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<181> > { typedef typename V::item181 type; typedef v_iter<V, mpl::int_<181 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<182> > { typedef typename V::item182 type; typedef v_iter<V, mpl::int_<182 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<183> > { typedef typename V::item183 type; typedef v_iter<V, mpl::int_<183 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<184> > { typedef typename V::item184 type; typedef v_iter<V, mpl::int_<184 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<185> > { typedef typename V::item185 type; typedef v_iter<V, mpl::int_<185 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<186> > { typedef typename V::item186 type; typedef v_iter<V, mpl::int_<186 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<187> > { typedef typename V::item187 type; typedef v_iter<V, mpl::int_<187 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<188> > { typedef typename V::item188 type; typedef v_iter<V, mpl::int_<188 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<189> > { typedef typename V::item189 type; typedef v_iter<V, mpl::int_<189 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<190> > { typedef typename V::item190 type; typedef v_iter<V, mpl::int_<190 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<191> > { typedef typename V::item191 type; typedef v_iter<V, mpl::int_<191 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<192> > { typedef typename V::item192 type; typedef v_iter<V, mpl::int_<192 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<193> > { typedef typename V::item193 type; typedef v_iter<V, mpl::int_<193 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<194> > { typedef typename V::item194 type; typedef v_iter<V, mpl::int_<194 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<195> > { typedef typename V::item195 type; typedef v_iter<V, mpl::int_<195 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<196> > { typedef typename V::item196 type; typedef v_iter<V, mpl::int_<196 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<197> > { typedef typename V::item197 type; typedef v_iter<V, mpl::int_<197 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<198> > { typedef typename V::item198 type; typedef v_iter<V, mpl::int_<198 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<199> > { typedef typename V::item199 type; typedef v_iter<V, mpl::int_<199 + 1> > next; };
+}}
+namespace boost { namespace type_of {
+ template< class T = void> struct vector0 { typedef v_iter<vector0<>, boost::mpl::int_<0> > begin; typedef mpl::int_<1> item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 > struct vector1 { typedef v_iter<vector1< P0>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 > struct vector2 { typedef v_iter<vector2< P0 , P1>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 > struct vector3 { typedef v_iter<vector3< P0 , P1 , P2>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 > struct vector4 { typedef v_iter<vector4< P0 , P1 , P2 , P3>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 > struct vector5 { typedef v_iter<vector5< P0 , P1 , P2 , P3 , P4>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 > struct vector6 { typedef v_iter<vector6< P0 , P1 , P2 , P3 , P4 , P5>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 > struct vector7 { typedef v_iter<vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 > struct vector8 { typedef v_iter<vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 > struct vector9 { typedef v_iter<vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 > struct vector10 { typedef v_iter<vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 > struct vector11 { typedef v_iter<vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 > struct vector12 { typedef v_iter<vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 > struct vector13 { typedef v_iter<vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 > struct vector14 { typedef v_iter<vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 > struct vector15 { typedef v_iter<vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 > struct vector16 { typedef v_iter<vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 > struct vector17 { typedef v_iter<vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 > struct vector18 { typedef v_iter<vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 > struct vector19 { typedef v_iter<vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 > struct vector20 { typedef v_iter<vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 > struct vector21 { typedef v_iter<vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 > struct vector22 { typedef v_iter<vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 > struct vector23 { typedef v_iter<vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 > struct vector24 { typedef v_iter<vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 > struct vector25 { typedef v_iter<vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 > struct vector26 { typedef v_iter<vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 > struct vector27 { typedef v_iter<vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 > struct vector28 { typedef v_iter<vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 > struct vector29 { typedef v_iter<vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 > struct vector30 { typedef v_iter<vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 > struct vector31 { typedef v_iter<vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 > struct vector32 { typedef v_iter<vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 > struct vector33 { typedef v_iter<vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 > struct vector34 { typedef v_iter<vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 > struct vector35 { typedef v_iter<vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 > struct vector36 { typedef v_iter<vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 > struct vector37 { typedef v_iter<vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 > struct vector38 { typedef v_iter<vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 > struct vector39 { typedef v_iter<vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 > struct vector40 { typedef v_iter<vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 > struct vector41 { typedef v_iter<vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 > struct vector42 { typedef v_iter<vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 > struct vector43 { typedef v_iter<vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 > struct vector44 { typedef v_iter<vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 > struct vector45 { typedef v_iter<vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 > struct vector46 { typedef v_iter<vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 > struct vector47 { typedef v_iter<vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 > struct vector48 { typedef v_iter<vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 > struct vector49 { typedef v_iter<vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 > struct vector50 { typedef v_iter<vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 > struct vector51 { typedef v_iter<vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 > struct vector52 { typedef v_iter<vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 > struct vector53 { typedef v_iter<vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 > struct vector54 { typedef v_iter<vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 > struct vector55 { typedef v_iter<vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 > struct vector56 { typedef v_iter<vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 > struct vector57 { typedef v_iter<vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 > struct vector58 { typedef v_iter<vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 > struct vector59 { typedef v_iter<vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 > struct vector60 { typedef v_iter<vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 > struct vector61 { typedef v_iter<vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 > struct vector62 { typedef v_iter<vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 > struct vector63 { typedef v_iter<vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 > struct vector64 { typedef v_iter<vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 > struct vector65 { typedef v_iter<vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 > struct vector66 { typedef v_iter<vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 > struct vector67 { typedef v_iter<vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 > struct vector68 { typedef v_iter<vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 > struct vector69 { typedef v_iter<vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 > struct vector70 { typedef v_iter<vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 > struct vector71 { typedef v_iter<vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 > struct vector72 { typedef v_iter<vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 > struct vector73 { typedef v_iter<vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 > struct vector74 { typedef v_iter<vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 > struct vector75 { typedef v_iter<vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 > struct vector76 { typedef v_iter<vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 > struct vector77 { typedef v_iter<vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 > struct vector78 { typedef v_iter<vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 > struct vector79 { typedef v_iter<vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 > struct vector80 { typedef v_iter<vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 > struct vector81 { typedef v_iter<vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 > struct vector82 { typedef v_iter<vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 > struct vector83 { typedef v_iter<vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 > struct vector84 { typedef v_iter<vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 > struct vector85 { typedef v_iter<vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 > struct vector86 { typedef v_iter<vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 > struct vector87 { typedef v_iter<vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 > struct vector88 { typedef v_iter<vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 > struct vector89 { typedef v_iter<vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 > struct vector90 { typedef v_iter<vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 > struct vector91 { typedef v_iter<vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 > struct vector92 { typedef v_iter<vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 > struct vector93 { typedef v_iter<vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 > struct vector94 { typedef v_iter<vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 > struct vector95 { typedef v_iter<vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 > struct vector96 { typedef v_iter<vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 > struct vector97 { typedef v_iter<vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 > struct vector98 { typedef v_iter<vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 > struct vector99 { typedef v_iter<vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 > struct vector100 { typedef v_iter<vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 > struct vector101 { typedef v_iter<vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 > struct vector102 { typedef v_iter<vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 > struct vector103 { typedef v_iter<vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 > struct vector104 { typedef v_iter<vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 > struct vector105 { typedef v_iter<vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 > struct vector106 { typedef v_iter<vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 > struct vector107 { typedef v_iter<vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 > struct vector108 { typedef v_iter<vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 > struct vector109 { typedef v_iter<vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 > struct vector110 { typedef v_iter<vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 > struct vector111 { typedef v_iter<vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 > struct vector112 { typedef v_iter<vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 > struct vector113 { typedef v_iter<vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 > struct vector114 { typedef v_iter<vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 > struct vector115 { typedef v_iter<vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 > struct vector116 { typedef v_iter<vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 > struct vector117 { typedef v_iter<vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 > struct vector118 { typedef v_iter<vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 > struct vector119 { typedef v_iter<vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 > struct vector120 { typedef v_iter<vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 > struct vector121 { typedef v_iter<vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 > struct vector122 { typedef v_iter<vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 > struct vector123 { typedef v_iter<vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 > struct vector124 { typedef v_iter<vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 > struct vector125 { typedef v_iter<vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 > struct vector126 { typedef v_iter<vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 > struct vector127 { typedef v_iter<vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 > struct vector128 { typedef v_iter<vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 > struct vector129 { typedef v_iter<vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 > struct vector130 { typedef v_iter<vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 > struct vector131 { typedef v_iter<vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 > struct vector132 { typedef v_iter<vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 > struct vector133 { typedef v_iter<vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 > struct vector134 { typedef v_iter<vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 > struct vector135 { typedef v_iter<vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 > struct vector136 { typedef v_iter<vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 > struct vector137 { typedef v_iter<vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 > struct vector138 { typedef v_iter<vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 > struct vector139 { typedef v_iter<vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 > struct vector140 { typedef v_iter<vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 > struct vector141 { typedef v_iter<vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 > struct vector142 { typedef v_iter<vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 > struct vector143 { typedef v_iter<vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 > struct vector144 { typedef v_iter<vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 > struct vector145 { typedef v_iter<vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 > struct vector146 { typedef v_iter<vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 > struct vector147 { typedef v_iter<vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 > struct vector148 { typedef v_iter<vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 > struct vector149 { typedef v_iter<vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 > struct vector150 { typedef v_iter<vector150< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 > struct vector151 { typedef v_iter<vector151< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 > struct vector152 { typedef v_iter<vector152< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 > struct vector153 { typedef v_iter<vector153< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 > struct vector154 { typedef v_iter<vector154< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 > struct vector155 { typedef v_iter<vector155< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 > struct vector156 { typedef v_iter<vector156< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 > struct vector157 { typedef v_iter<vector157< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 > struct vector158 { typedef v_iter<vector158< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 > struct vector159 { typedef v_iter<vector159< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 > struct vector160 { typedef v_iter<vector160< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 > struct vector161 { typedef v_iter<vector161< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 > struct vector162 { typedef v_iter<vector162< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 > struct vector163 { typedef v_iter<vector163< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 > struct vector164 { typedef v_iter<vector164< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 > struct vector165 { typedef v_iter<vector165< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 > struct vector166 { typedef v_iter<vector166< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 > struct vector167 { typedef v_iter<vector167< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 > struct vector168 { typedef v_iter<vector168< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 > struct vector169 { typedef v_iter<vector169< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 > struct vector170 { typedef v_iter<vector170< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 > struct vector171 { typedef v_iter<vector171< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 > struct vector172 { typedef v_iter<vector172< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 > struct vector173 { typedef v_iter<vector173< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 > struct vector174 { typedef v_iter<vector174< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 > struct vector175 { typedef v_iter<vector175< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 > struct vector176 { typedef v_iter<vector176< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 > struct vector177 { typedef v_iter<vector177< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 > struct vector178 { typedef v_iter<vector178< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 > struct vector179 { typedef v_iter<vector179< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 > struct vector180 { typedef v_iter<vector180< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 > struct vector181 { typedef v_iter<vector181< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 > struct vector182 { typedef v_iter<vector182< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 > struct vector183 { typedef v_iter<vector183< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 > struct vector184 { typedef v_iter<vector184< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 > struct vector185 { typedef v_iter<vector185< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 > struct vector186 { typedef v_iter<vector186< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 > struct vector187 { typedef v_iter<vector187< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 > struct vector188 { typedef v_iter<vector188< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 > struct vector189 { typedef v_iter<vector189< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 > struct vector190 { typedef v_iter<vector190< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 > struct vector191 { typedef v_iter<vector191< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 > struct vector192 { typedef v_iter<vector192< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 > struct vector193 { typedef v_iter<vector193< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 > struct vector194 { typedef v_iter<vector194< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 > struct vector195 { typedef v_iter<vector195< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 > struct vector196 { typedef v_iter<vector196< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef P195 item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 > struct vector197 { typedef v_iter<vector197< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef P195 item195; typedef P196 item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class P197 > struct vector198 { typedef v_iter<vector198< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef P195 item195; typedef P196 item196; typedef P197 item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class P197 , class P198 > struct vector199 { typedef v_iter<vector199< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197 , P198>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef P195 item195; typedef P196 item196; typedef P197 item197; typedef P198 item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class P197 , class P198 , class P199 > struct vector200 { typedef v_iter<vector200< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197 , P198 , P199>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef P195 item195; typedef P196 item196; typedef P197 item197; typedef P198 item198; typedef P199 item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+}}
+namespace boost { namespace type_of {
+ template<class V, class T> struct push_back {
+ typedef V type;
+ };
+ template< class T> struct push_back<boost::type_of::vector0<>, T> { typedef boost::type_of::vector1< T > type; };
+ template< class P0 , class T> struct push_back<boost::type_of::vector1< P0>, T> { typedef boost::type_of::vector2< P0 , T > type; };
+ template< class P0 , class P1 , class T> struct push_back<boost::type_of::vector2< P0 , P1>, T> { typedef boost::type_of::vector3< P0 , P1 , T > type; };
+ template< class P0 , class P1 , class P2 , class T> struct push_back<boost::type_of::vector3< P0 , P1 , P2>, T> { typedef boost::type_of::vector4< P0 , P1 , P2 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class T> struct push_back<boost::type_of::vector4< P0 , P1 , P2 , P3>, T> { typedef boost::type_of::vector5< P0 , P1 , P2 , P3 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class T> struct push_back<boost::type_of::vector5< P0 , P1 , P2 , P3 , P4>, T> { typedef boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class T> struct push_back<boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , P5>, T> { typedef boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class T> struct push_back<boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, T> { typedef boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class T> struct push_back<boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, T> { typedef boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class T> struct push_back<boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, T> { typedef boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class T> struct push_back<boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, T> { typedef boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class T> struct push_back<boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, T> { typedef boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class T> struct push_back<boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, T> { typedef boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class T> struct push_back<boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, T> { typedef boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class T> struct push_back<boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, T> { typedef boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class T> struct push_back<boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, T> { typedef boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class T> struct push_back<boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, T> { typedef boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class T> struct push_back<boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, T> { typedef boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class T> struct push_back<boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, T> { typedef boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class T> struct push_back<boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, T> { typedef boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class T> struct push_back<boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, T> { typedef boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class T> struct push_back<boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, T> { typedef boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class T> struct push_back<boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, T> { typedef boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class T> struct push_back<boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, T> { typedef boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class T> struct push_back<boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, T> { typedef boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class T> struct push_back<boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, T> { typedef boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class T> struct push_back<boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, T> { typedef boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class T> struct push_back<boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, T> { typedef boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class T> struct push_back<boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, T> { typedef boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class T> struct push_back<boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, T> { typedef boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class T> struct push_back<boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, T> { typedef boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class T> struct push_back<boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, T> { typedef boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class T> struct push_back<boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, T> { typedef boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class T> struct push_back<boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, T> { typedef boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class T> struct push_back<boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, T> { typedef boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class T> struct push_back<boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, T> { typedef boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class T> struct push_back<boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, T> { typedef boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class T> struct push_back<boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, T> { typedef boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class T> struct push_back<boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, T> { typedef boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class T> struct push_back<boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, T> { typedef boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class T> struct push_back<boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, T> { typedef boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class T> struct push_back<boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, T> { typedef boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class T> struct push_back<boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, T> { typedef boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class T> struct push_back<boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, T> { typedef boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class T> struct push_back<boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, T> { typedef boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class T> struct push_back<boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, T> { typedef boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class T> struct push_back<boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, T> { typedef boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class T> struct push_back<boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, T> { typedef boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class T> struct push_back<boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, T> { typedef boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class T> struct push_back<boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, T> { typedef boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class T> struct push_back<boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, T> { typedef boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class T> struct push_back<boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, T> { typedef boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class T> struct push_back<boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, T> { typedef boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class T> struct push_back<boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, T> { typedef boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class T> struct push_back<boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, T> { typedef boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class T> struct push_back<boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, T> { typedef boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class T> struct push_back<boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, T> { typedef boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class T> struct push_back<boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, T> { typedef boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class T> struct push_back<boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, T> { typedef boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class T> struct push_back<boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, T> { typedef boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class T> struct push_back<boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, T> { typedef boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class T> struct push_back<boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, T> { typedef boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class T> struct push_back<boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, T> { typedef boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class T> struct push_back<boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, T> { typedef boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class T> struct push_back<boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, T> { typedef boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class T> struct push_back<boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, T> { typedef boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class T> struct push_back<boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, T> { typedef boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class T> struct push_back<boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, T> { typedef boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class T> struct push_back<boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, T> { typedef boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class T> struct push_back<boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, T> { typedef boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class T> struct push_back<boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, T> { typedef boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class T> struct push_back<boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, T> { typedef boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class T> struct push_back<boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, T> { typedef boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class T> struct push_back<boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, T> { typedef boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class T> struct push_back<boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, T> { typedef boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class T> struct push_back<boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, T> { typedef boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class T> struct push_back<boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, T> { typedef boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class T> struct push_back<boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, T> { typedef boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class T> struct push_back<boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, T> { typedef boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class T> struct push_back<boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, T> { typedef boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class T> struct push_back<boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, T> { typedef boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class T> struct push_back<boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, T> { typedef boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class T> struct push_back<boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, T> { typedef boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class T> struct push_back<boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, T> { typedef boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class T> struct push_back<boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, T> { typedef boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class T> struct push_back<boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, T> { typedef boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class T> struct push_back<boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, T> { typedef boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class T> struct push_back<boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, T> { typedef boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class T> struct push_back<boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, T> { typedef boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class T> struct push_back<boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, T> { typedef boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class T> struct push_back<boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, T> { typedef boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class T> struct push_back<boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, T> { typedef boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class T> struct push_back<boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, T> { typedef boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class T> struct push_back<boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, T> { typedef boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class T> struct push_back<boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, T> { typedef boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class T> struct push_back<boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, T> { typedef boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class T> struct push_back<boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, T> { typedef boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class T> struct push_back<boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, T> { typedef boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class T> struct push_back<boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, T> { typedef boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class T> struct push_back<boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, T> { typedef boost::type_of::vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class T> struct push_back<boost::type_of::vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99>, T> { typedef boost::type_of::vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class T> struct push_back<boost::type_of::vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100>, T> { typedef boost::type_of::vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class T> struct push_back<boost::type_of::vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101>, T> { typedef boost::type_of::vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class T> struct push_back<boost::type_of::vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102>, T> { typedef boost::type_of::vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class T> struct push_back<boost::type_of::vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103>, T> { typedef boost::type_of::vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class T> struct push_back<boost::type_of::vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104>, T> { typedef boost::type_of::vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class T> struct push_back<boost::type_of::vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105>, T> { typedef boost::type_of::vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class T> struct push_back<boost::type_of::vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106>, T> { typedef boost::type_of::vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class T> struct push_back<boost::type_of::vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107>, T> { typedef boost::type_of::vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class T> struct push_back<boost::type_of::vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108>, T> { typedef boost::type_of::vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class T> struct push_back<boost::type_of::vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109>, T> { typedef boost::type_of::vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class T> struct push_back<boost::type_of::vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110>, T> { typedef boost::type_of::vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class T> struct push_back<boost::type_of::vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111>, T> { typedef boost::type_of::vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class T> struct push_back<boost::type_of::vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112>, T> { typedef boost::type_of::vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class T> struct push_back<boost::type_of::vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113>, T> { typedef boost::type_of::vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class T> struct push_back<boost::type_of::vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114>, T> { typedef boost::type_of::vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class T> struct push_back<boost::type_of::vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115>, T> { typedef boost::type_of::vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class T> struct push_back<boost::type_of::vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116>, T> { typedef boost::type_of::vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class T> struct push_back<boost::type_of::vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117>, T> { typedef boost::type_of::vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class T> struct push_back<boost::type_of::vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118>, T> { typedef boost::type_of::vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class T> struct push_back<boost::type_of::vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119>, T> { typedef boost::type_of::vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class T> struct push_back<boost::type_of::vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120>, T> { typedef boost::type_of::vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class T> struct push_back<boost::type_of::vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121>, T> { typedef boost::type_of::vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class T> struct push_back<boost::type_of::vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122>, T> { typedef boost::type_of::vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class T> struct push_back<boost::type_of::vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123>, T> { typedef boost::type_of::vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class T> struct push_back<boost::type_of::vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124>, T> { typedef boost::type_of::vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class T> struct push_back<boost::type_of::vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125>, T> { typedef boost::type_of::vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class T> struct push_back<boost::type_of::vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126>, T> { typedef boost::type_of::vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class T> struct push_back<boost::type_of::vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127>, T> { typedef boost::type_of::vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class T> struct push_back<boost::type_of::vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128>, T> { typedef boost::type_of::vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class T> struct push_back<boost::type_of::vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129>, T> { typedef boost::type_of::vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class T> struct push_back<boost::type_of::vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130>, T> { typedef boost::type_of::vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class T> struct push_back<boost::type_of::vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131>, T> { typedef boost::type_of::vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class T> struct push_back<boost::type_of::vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132>, T> { typedef boost::type_of::vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class T> struct push_back<boost::type_of::vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133>, T> { typedef boost::type_of::vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class T> struct push_back<boost::type_of::vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134>, T> { typedef boost::type_of::vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class T> struct push_back<boost::type_of::vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135>, T> { typedef boost::type_of::vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class T> struct push_back<boost::type_of::vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136>, T> { typedef boost::type_of::vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class T> struct push_back<boost::type_of::vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137>, T> { typedef boost::type_of::vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class T> struct push_back<boost::type_of::vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138>, T> { typedef boost::type_of::vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class T> struct push_back<boost::type_of::vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139>, T> { typedef boost::type_of::vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class T> struct push_back<boost::type_of::vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140>, T> { typedef boost::type_of::vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class T> struct push_back<boost::type_of::vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141>, T> { typedef boost::type_of::vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class T> struct push_back<boost::type_of::vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142>, T> { typedef boost::type_of::vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class T> struct push_back<boost::type_of::vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143>, T> { typedef boost::type_of::vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class T> struct push_back<boost::type_of::vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144>, T> { typedef boost::type_of::vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class T> struct push_back<boost::type_of::vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145>, T> { typedef boost::type_of::vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class T> struct push_back<boost::type_of::vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146>, T> { typedef boost::type_of::vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class T> struct push_back<boost::type_of::vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147>, T> { typedef boost::type_of::vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class T> struct push_back<boost::type_of::vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148>, T> { typedef boost::type_of::vector150< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class T> struct push_back<boost::type_of::vector150< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149>, T> { typedef boost::type_of::vector151< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class T> struct push_back<boost::type_of::vector151< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150>, T> { typedef boost::type_of::vector152< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class T> struct push_back<boost::type_of::vector152< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151>, T> { typedef boost::type_of::vector153< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class T> struct push_back<boost::type_of::vector153< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152>, T> { typedef boost::type_of::vector154< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class T> struct push_back<boost::type_of::vector154< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153>, T> { typedef boost::type_of::vector155< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class T> struct push_back<boost::type_of::vector155< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154>, T> { typedef boost::type_of::vector156< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class T> struct push_back<boost::type_of::vector156< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155>, T> { typedef boost::type_of::vector157< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class T> struct push_back<boost::type_of::vector157< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156>, T> { typedef boost::type_of::vector158< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class T> struct push_back<boost::type_of::vector158< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157>, T> { typedef boost::type_of::vector159< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class T> struct push_back<boost::type_of::vector159< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158>, T> { typedef boost::type_of::vector160< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class T> struct push_back<boost::type_of::vector160< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159>, T> { typedef boost::type_of::vector161< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class T> struct push_back<boost::type_of::vector161< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160>, T> { typedef boost::type_of::vector162< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class T> struct push_back<boost::type_of::vector162< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161>, T> { typedef boost::type_of::vector163< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class T> struct push_back<boost::type_of::vector163< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162>, T> { typedef boost::type_of::vector164< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class T> struct push_back<boost::type_of::vector164< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163>, T> { typedef boost::type_of::vector165< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class T> struct push_back<boost::type_of::vector165< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164>, T> { typedef boost::type_of::vector166< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class T> struct push_back<boost::type_of::vector166< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165>, T> { typedef boost::type_of::vector167< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class T> struct push_back<boost::type_of::vector167< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166>, T> { typedef boost::type_of::vector168< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class T> struct push_back<boost::type_of::vector168< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167>, T> { typedef boost::type_of::vector169< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class T> struct push_back<boost::type_of::vector169< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168>, T> { typedef boost::type_of::vector170< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class T> struct push_back<boost::type_of::vector170< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169>, T> { typedef boost::type_of::vector171< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class T> struct push_back<boost::type_of::vector171< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170>, T> { typedef boost::type_of::vector172< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class T> struct push_back<boost::type_of::vector172< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171>, T> { typedef boost::type_of::vector173< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class T> struct push_back<boost::type_of::vector173< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172>, T> { typedef boost::type_of::vector174< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class T> struct push_back<boost::type_of::vector174< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173>, T> { typedef boost::type_of::vector175< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class T> struct push_back<boost::type_of::vector175< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174>, T> { typedef boost::type_of::vector176< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class T> struct push_back<boost::type_of::vector176< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175>, T> { typedef boost::type_of::vector177< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class T> struct push_back<boost::type_of::vector177< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176>, T> { typedef boost::type_of::vector178< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class T> struct push_back<boost::type_of::vector178< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177>, T> { typedef boost::type_of::vector179< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class T> struct push_back<boost::type_of::vector179< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178>, T> { typedef boost::type_of::vector180< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class T> struct push_back<boost::type_of::vector180< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179>, T> { typedef boost::type_of::vector181< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class T> struct push_back<boost::type_of::vector181< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180>, T> { typedef boost::type_of::vector182< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class T> struct push_back<boost::type_of::vector182< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181>, T> { typedef boost::type_of::vector183< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class T> struct push_back<boost::type_of::vector183< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182>, T> { typedef boost::type_of::vector184< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class T> struct push_back<boost::type_of::vector184< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183>, T> { typedef boost::type_of::vector185< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class T> struct push_back<boost::type_of::vector185< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184>, T> { typedef boost::type_of::vector186< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class T> struct push_back<boost::type_of::vector186< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185>, T> { typedef boost::type_of::vector187< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class T> struct push_back<boost::type_of::vector187< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186>, T> { typedef boost::type_of::vector188< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class T> struct push_back<boost::type_of::vector188< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187>, T> { typedef boost::type_of::vector189< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class T> struct push_back<boost::type_of::vector189< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188>, T> { typedef boost::type_of::vector190< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class T> struct push_back<boost::type_of::vector190< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189>, T> { typedef boost::type_of::vector191< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class T> struct push_back<boost::type_of::vector191< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190>, T> { typedef boost::type_of::vector192< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class T> struct push_back<boost::type_of::vector192< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191>, T> { typedef boost::type_of::vector193< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class T> struct push_back<boost::type_of::vector193< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192>, T> { typedef boost::type_of::vector194< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class T> struct push_back<boost::type_of::vector194< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193>, T> { typedef boost::type_of::vector195< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class T> struct push_back<boost::type_of::vector195< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194>, T> { typedef boost::type_of::vector196< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class T> struct push_back<boost::type_of::vector196< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195>, T> { typedef boost::type_of::vector197< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class T> struct push_back<boost::type_of::vector197< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196>, T> { typedef boost::type_of::vector198< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class P197 , class T> struct push_back<boost::type_of::vector198< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197>, T> { typedef boost::type_of::vector199< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class P197 , class P198 , class T> struct push_back<boost::type_of::vector199< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197 , P198>, T> { typedef boost::type_of::vector200< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197 , P198 , T > type; };
+}}
--- /dev/null
+
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+// Preprocessed code, do not edit manually !
+
+
+namespace boost { namespace type_of {
+ template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter;
+ template<class V> struct v_iter<V, mpl::int_<0> > { typedef typename V::item0 type; typedef v_iter<V, mpl::int_<0 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<1> > { typedef typename V::item1 type; typedef v_iter<V, mpl::int_<1 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<2> > { typedef typename V::item2 type; typedef v_iter<V, mpl::int_<2 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<3> > { typedef typename V::item3 type; typedef v_iter<V, mpl::int_<3 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<4> > { typedef typename V::item4 type; typedef v_iter<V, mpl::int_<4 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<5> > { typedef typename V::item5 type; typedef v_iter<V, mpl::int_<5 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<6> > { typedef typename V::item6 type; typedef v_iter<V, mpl::int_<6 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<7> > { typedef typename V::item7 type; typedef v_iter<V, mpl::int_<7 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<8> > { typedef typename V::item8 type; typedef v_iter<V, mpl::int_<8 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<9> > { typedef typename V::item9 type; typedef v_iter<V, mpl::int_<9 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<10> > { typedef typename V::item10 type; typedef v_iter<V, mpl::int_<10 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<11> > { typedef typename V::item11 type; typedef v_iter<V, mpl::int_<11 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<12> > { typedef typename V::item12 type; typedef v_iter<V, mpl::int_<12 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<13> > { typedef typename V::item13 type; typedef v_iter<V, mpl::int_<13 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<14> > { typedef typename V::item14 type; typedef v_iter<V, mpl::int_<14 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<15> > { typedef typename V::item15 type; typedef v_iter<V, mpl::int_<15 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<16> > { typedef typename V::item16 type; typedef v_iter<V, mpl::int_<16 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<17> > { typedef typename V::item17 type; typedef v_iter<V, mpl::int_<17 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<18> > { typedef typename V::item18 type; typedef v_iter<V, mpl::int_<18 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<19> > { typedef typename V::item19 type; typedef v_iter<V, mpl::int_<19 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<20> > { typedef typename V::item20 type; typedef v_iter<V, mpl::int_<20 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<21> > { typedef typename V::item21 type; typedef v_iter<V, mpl::int_<21 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<22> > { typedef typename V::item22 type; typedef v_iter<V, mpl::int_<22 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<23> > { typedef typename V::item23 type; typedef v_iter<V, mpl::int_<23 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<24> > { typedef typename V::item24 type; typedef v_iter<V, mpl::int_<24 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<25> > { typedef typename V::item25 type; typedef v_iter<V, mpl::int_<25 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<26> > { typedef typename V::item26 type; typedef v_iter<V, mpl::int_<26 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<27> > { typedef typename V::item27 type; typedef v_iter<V, mpl::int_<27 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<28> > { typedef typename V::item28 type; typedef v_iter<V, mpl::int_<28 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<29> > { typedef typename V::item29 type; typedef v_iter<V, mpl::int_<29 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<30> > { typedef typename V::item30 type; typedef v_iter<V, mpl::int_<30 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<31> > { typedef typename V::item31 type; typedef v_iter<V, mpl::int_<31 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<32> > { typedef typename V::item32 type; typedef v_iter<V, mpl::int_<32 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<33> > { typedef typename V::item33 type; typedef v_iter<V, mpl::int_<33 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<34> > { typedef typename V::item34 type; typedef v_iter<V, mpl::int_<34 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<35> > { typedef typename V::item35 type; typedef v_iter<V, mpl::int_<35 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<36> > { typedef typename V::item36 type; typedef v_iter<V, mpl::int_<36 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<37> > { typedef typename V::item37 type; typedef v_iter<V, mpl::int_<37 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<38> > { typedef typename V::item38 type; typedef v_iter<V, mpl::int_<38 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<39> > { typedef typename V::item39 type; typedef v_iter<V, mpl::int_<39 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<40> > { typedef typename V::item40 type; typedef v_iter<V, mpl::int_<40 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<41> > { typedef typename V::item41 type; typedef v_iter<V, mpl::int_<41 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<42> > { typedef typename V::item42 type; typedef v_iter<V, mpl::int_<42 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<43> > { typedef typename V::item43 type; typedef v_iter<V, mpl::int_<43 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<44> > { typedef typename V::item44 type; typedef v_iter<V, mpl::int_<44 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<45> > { typedef typename V::item45 type; typedef v_iter<V, mpl::int_<45 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<46> > { typedef typename V::item46 type; typedef v_iter<V, mpl::int_<46 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<47> > { typedef typename V::item47 type; typedef v_iter<V, mpl::int_<47 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<48> > { typedef typename V::item48 type; typedef v_iter<V, mpl::int_<48 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<49> > { typedef typename V::item49 type; typedef v_iter<V, mpl::int_<49 + 1> > next; };
+}}
+namespace boost { namespace type_of {
+ template< class T = void> struct vector0 { typedef v_iter<vector0<>, boost::mpl::int_<0> > begin; typedef mpl::int_<1> item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 > struct vector1 { typedef v_iter<vector1< P0>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 > struct vector2 { typedef v_iter<vector2< P0 , P1>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 > struct vector3 { typedef v_iter<vector3< P0 , P1 , P2>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 > struct vector4 { typedef v_iter<vector4< P0 , P1 , P2 , P3>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 > struct vector5 { typedef v_iter<vector5< P0 , P1 , P2 , P3 , P4>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 > struct vector6 { typedef v_iter<vector6< P0 , P1 , P2 , P3 , P4 , P5>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 > struct vector7 { typedef v_iter<vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 > struct vector8 { typedef v_iter<vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 > struct vector9 { typedef v_iter<vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 > struct vector10 { typedef v_iter<vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 > struct vector11 { typedef v_iter<vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 > struct vector12 { typedef v_iter<vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 > struct vector13 { typedef v_iter<vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 > struct vector14 { typedef v_iter<vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 > struct vector15 { typedef v_iter<vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 > struct vector16 { typedef v_iter<vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 > struct vector17 { typedef v_iter<vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 > struct vector18 { typedef v_iter<vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 > struct vector19 { typedef v_iter<vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 > struct vector20 { typedef v_iter<vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 > struct vector21 { typedef v_iter<vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 > struct vector22 { typedef v_iter<vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 > struct vector23 { typedef v_iter<vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 > struct vector24 { typedef v_iter<vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 > struct vector25 { typedef v_iter<vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 > struct vector26 { typedef v_iter<vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 > struct vector27 { typedef v_iter<vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 > struct vector28 { typedef v_iter<vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 > struct vector29 { typedef v_iter<vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 > struct vector30 { typedef v_iter<vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 > struct vector31 { typedef v_iter<vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 > struct vector32 { typedef v_iter<vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 > struct vector33 { typedef v_iter<vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 > struct vector34 { typedef v_iter<vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 > struct vector35 { typedef v_iter<vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 > struct vector36 { typedef v_iter<vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 > struct vector37 { typedef v_iter<vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 > struct vector38 { typedef v_iter<vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 > struct vector39 { typedef v_iter<vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 > struct vector40 { typedef v_iter<vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 > struct vector41 { typedef v_iter<vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 > struct vector42 { typedef v_iter<vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 > struct vector43 { typedef v_iter<vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 > struct vector44 { typedef v_iter<vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 > struct vector45 { typedef v_iter<vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 > struct vector46 { typedef v_iter<vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 > struct vector47 { typedef v_iter<vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 > struct vector48 { typedef v_iter<vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 > struct vector49 { typedef v_iter<vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 > struct vector50 { typedef v_iter<vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+}}
+namespace boost { namespace type_of {
+ template<class V, class T> struct push_back {
+ typedef V type;
+ };
+ template< class T> struct push_back<boost::type_of::vector0<>, T> { typedef boost::type_of::vector1< T > type; };
+ template< class P0 , class T> struct push_back<boost::type_of::vector1< P0>, T> { typedef boost::type_of::vector2< P0 , T > type; };
+ template< class P0 , class P1 , class T> struct push_back<boost::type_of::vector2< P0 , P1>, T> { typedef boost::type_of::vector3< P0 , P1 , T > type; };
+ template< class P0 , class P1 , class P2 , class T> struct push_back<boost::type_of::vector3< P0 , P1 , P2>, T> { typedef boost::type_of::vector4< P0 , P1 , P2 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class T> struct push_back<boost::type_of::vector4< P0 , P1 , P2 , P3>, T> { typedef boost::type_of::vector5< P0 , P1 , P2 , P3 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class T> struct push_back<boost::type_of::vector5< P0 , P1 , P2 , P3 , P4>, T> { typedef boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class T> struct push_back<boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , P5>, T> { typedef boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class T> struct push_back<boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, T> { typedef boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class T> struct push_back<boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, T> { typedef boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class T> struct push_back<boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, T> { typedef boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class T> struct push_back<boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, T> { typedef boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class T> struct push_back<boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, T> { typedef boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class T> struct push_back<boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, T> { typedef boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class T> struct push_back<boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, T> { typedef boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class T> struct push_back<boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, T> { typedef boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class T> struct push_back<boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, T> { typedef boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class T> struct push_back<boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, T> { typedef boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class T> struct push_back<boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, T> { typedef boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class T> struct push_back<boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, T> { typedef boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class T> struct push_back<boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, T> { typedef boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class T> struct push_back<boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, T> { typedef boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class T> struct push_back<boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, T> { typedef boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class T> struct push_back<boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, T> { typedef boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class T> struct push_back<boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, T> { typedef boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class T> struct push_back<boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, T> { typedef boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class T> struct push_back<boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, T> { typedef boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class T> struct push_back<boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, T> { typedef boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class T> struct push_back<boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, T> { typedef boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class T> struct push_back<boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, T> { typedef boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class T> struct push_back<boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, T> { typedef boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class T> struct push_back<boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, T> { typedef boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class T> struct push_back<boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, T> { typedef boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class T> struct push_back<boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, T> { typedef boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class T> struct push_back<boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, T> { typedef boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class T> struct push_back<boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, T> { typedef boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class T> struct push_back<boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, T> { typedef boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class T> struct push_back<boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, T> { typedef boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class T> struct push_back<boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, T> { typedef boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class T> struct push_back<boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, T> { typedef boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class T> struct push_back<boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, T> { typedef boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class T> struct push_back<boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, T> { typedef boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class T> struct push_back<boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, T> { typedef boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class T> struct push_back<boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, T> { typedef boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class T> struct push_back<boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, T> { typedef boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class T> struct push_back<boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, T> { typedef boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class T> struct push_back<boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, T> { typedef boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class T> struct push_back<boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, T> { typedef boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class T> struct push_back<boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, T> { typedef boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class T> struct push_back<boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, T> { typedef boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class T> struct push_back<boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, T> { typedef boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , T > type; };
+}}
-// Copyright (C) 2002 Brad King (brad.king@kitware.com)
+// Copyright (C) 2002 Brad King (brad.king@kitware.com)
// Douglas Gregor (gregod@cs.rpi.edu)
//
// Copyright (C) 2002, 2008 Peter Dimov
template<class T> T * addressof( T & v )
{
-#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) )
+#if (defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) ) ) || defined( __SUNPRO_CC )
return boost::detail::addressof_impl<T>::f( v, 0 );
// boost utility/base_from_member.hpp header file --------------------------//
-// Copyright 2001, 2003, 2004 Daryle Walker. Use, modification, and
+// Copyright 2001, 2003, 2004, 2012 Daryle Walker. Use, modification, and
// distribution are subject to the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or a copy at
// <http://www.boost.org/LICENSE_1_0.txt>.)
#ifndef BOOST_UTILITY_BASE_FROM_MEMBER_HPP
#define BOOST_UTILITY_BASE_FROM_MEMBER_HPP
+#include <boost/config.hpp>
#include <boost/preprocessor/arithmetic/inc.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/utility/enable_if.hpp>
// Base-from-member arity configuration macro ------------------------------//
namespace boost
{
+namespace detail
+{
+
+// Type-unmarking class template -------------------------------------------//
+
+// Type-trait to get the raw type, i.e. the type without top-level reference nor
+// cv-qualification, from a type expression. Mainly for function arguments, any
+// reference part is stripped first.
+
+// Contributed by Daryle Walker
+
+template < typename T >
+struct remove_cv_ref
+{
+ typedef typename ::boost::remove_cv<typename
+ ::boost::remove_reference<T>::type>::type type;
+
+}; // boost::detail::remove_cv_ref
+
+// Unmarked-type comparison class template ---------------------------------//
+
+// Type-trait to check if two type expressions have the same raw type.
+
+// Contributed by Daryle Walker, based on a work-around by Luc Danton
+
+template < typename T, typename U >
+struct is_related
+ : public ::boost::is_same<
+ typename ::boost::detail::remove_cv_ref<T>::type,
+ typename ::boost::detail::remove_cv_ref<U>::type >
+{};
+
+// Enable-if-on-unidentical-unmarked-type class template -------------------//
+
+// Enable-if on the first two type expressions NOT having the same raw type.
+
+// Contributed by Daryle Walker, based on a work-around by Luc Danton
+
+#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
+template<typename ...T>
+struct enable_if_unrelated
+ : public ::boost::enable_if_c<true>
+{};
+
+template<typename T, typename U, typename ...U2>
+struct enable_if_unrelated<T, U, U2...>
+ : public ::boost::disable_if< ::boost::detail::is_related<T, U> >
+{};
+#endif
+
+} // namespace boost::detail
+
+
// Base-from-member class template -----------------------------------------//
// Helper to initialize a base object so a derived class can use this
protected:
MemberType member;
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \
+ !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \
+ !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && \
+ !(defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4))
+ template <typename ...T, typename EnableIf = typename
+ ::boost::detail::enable_if_unrelated<base_from_member, T...>::type>
+ explicit BOOST_CONSTEXPR base_from_member( T&& ...x )
+ BOOST_NOEXCEPT_IF( BOOST_NOEXCEPT_EXPR(::new ((void*) 0) MemberType(
+ static_cast<T&&>(x)... )) ) // no std::is_nothrow_constructible...
+ : member( static_cast<T&&>(x)... ) // ...nor std::forward needed
+ {}
+#else
base_from_member()
: member()
{}
BOOST_PP_REPEAT_FROM_TO( 1, BOOST_PP_INC(BOOST_BASE_FROM_MEMBER_MAX_ARITY),
BOOST_PRIVATE_CTR_DEF, _ )
+#endif
}; // boost::base_from_member
--- /dev/null
+// declval.hpp -------------------------------------------------------------//
+
+// Copyright 2010 Vicente J. Botet Escriba
+
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+#ifndef BOOST_UTILITY_DECLVAL_HPP
+#define BOOST_UTILITY_DECLVAL_HPP
+
+#include <boost/config.hpp>
+
+//----------------------------------------------------------------------------//
+
+#include <boost/type_traits/add_rvalue_reference.hpp>
+
+//----------------------------------------------------------------------------//
+// //
+// C++03 implementation of //
+// 20.2.4 Function template declval [declval] //
+// Written by Vicente J. Botet Escriba //
+// //
+// 1 The library provides the function template declval to simplify the
+// definition of expressions which occur as unevaluated operands.
+// 2 Remarks: If this function is used, the program is ill-formed.
+// 3 Remarks: The template parameter T of declval may be an incomplete type.
+// [ Example:
+//
+// template <class To, class From>
+// decltype(static_cast<To>(declval<From>())) convert(From&&);
+//
+// declares a function template convert which only participates in overloading
+// if the type From can be explicitly converted to type To. For another example
+// see class template common_type (20.9.7.6). -end example ]
+//----------------------------------------------------------------------------//
+
+namespace boost {
+
+ template <typename T>
+ typename add_rvalue_reference<T>::type declval() BOOST_NOEXCEPT; // as unevaluated operand
+
+} // namespace boost
+
+#endif // BOOST_UTILITY_DECLVAL_HPP
--- /dev/null
+// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2007, Tobias Schwinger.
+//
+// Use, modification, and distribution is subject to 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)
+//
+// See http://www.boost.org/libs/optional for documentation.
+//
+// You are welcome to contact the author at:
+// fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_04APR2007_HPP
+#define BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_04APR2007_HPP
+
+#include <new>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/punctuation/paren.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+
+#define BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT(z,n,_) BOOST_PP_CAT(m_a,n) BOOST_PP_LPAREN() BOOST_PP_CAT(a,n) BOOST_PP_RPAREN()
+#define BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL(z,n,_) BOOST_PP_CAT(A,n) const& BOOST_PP_CAT(m_a,n);
+
+#define BOOST_MAX_INPLACE_FACTORY_ARITY 10
+
+#undef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_04APR2007_HPP
+
+#endif
+
--- /dev/null
+// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2007, Tobias Schwinger.
+//
+// Use, modification, and distribution is subject to 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)
+//
+// See http://www.boost.org/libs/optional for documentation.
+//
+// You are welcome to contact the author at:
+// fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_04APR2007_HPP
+#define BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_04APR2007_HPP
+
+#undef BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT
+#undef BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL
+#undef BOOST_MAX_INPLACE_FACTORY_ARITY
+
+#undef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_04APR2007_HPP
+
+#endif
+
--- /dev/null
+// Boost result_of library
+
+// Copyright Douglas Gregor 2004. Use, modification and
+// distribution is subject to 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)
+
+// Copyright Daniel Walker, Eric Niebler, Michel Morin 2008-2012.
+// Use, modification and distribution is subject to 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)
+
+// For more information, see http://www.boost.org/libs/utility
+#if !defined(BOOST_PP_IS_ITERATING)
+# error Boost result_of - do not include this file!
+#endif
+
+// CWPro8 requires an argument in a function type specialization
+#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3002)) && BOOST_PP_ITERATION() == 0
+# define BOOST_RESULT_OF_ARGS void
+#else
+# define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)
+#endif
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
+template<typename F BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct tr1_result_of<F(BOOST_RESULT_OF_ARGS)>
+ : mpl::if_<
+ mpl::or_< is_pointer<F>, is_member_function_pointer<F> >
+ , boost::detail::tr1_result_of_impl<
+ typename remove_cv<F>::type,
+ typename remove_cv<F>::type(BOOST_RESULT_OF_ARGS),
+ (boost::detail::has_result_type<F>::value)>
+ , boost::detail::tr1_result_of_impl<
+ F,
+ F(BOOST_RESULT_OF_ARGS),
+ (boost::detail::has_result_type<F>::value)> >::type { };
+#endif
+
+#ifdef BOOST_RESULT_OF_USE_DECLTYPE
+template<typename F BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct result_of<F(BOOST_RESULT_OF_ARGS)>
+ : detail::cpp0x_result_of<F(BOOST_RESULT_OF_ARGS)> { };
+#endif // BOOST_RESULT_OF_USE_DECLTYPE
+
+#ifdef BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK
+template<typename F BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct result_of<F(BOOST_RESULT_OF_ARGS)>
+ : mpl::if_<mpl::or_<detail::has_result_type<F>, detail::has_result<F> >,
+ tr1_result_of<F(BOOST_RESULT_OF_ARGS)>,
+ detail::cpp0x_result_of<F(BOOST_RESULT_OF_ARGS)> >::type { };
+#endif // BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK
+
+#if defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK)
+
+namespace detail {
+
+template<typename F BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct cpp0x_result_of<F(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T))>
+ : mpl::if_<
+ is_member_function_pointer<F>
+ , detail::tr1_result_of_impl<
+ typename remove_cv<F>::type,
+ typename remove_cv<F>::type(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)), false
+ >
+ , detail::cpp0x_result_of_impl<
+ F(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T))
+ >
+ >::type
+{};
+
+#ifdef BOOST_NO_SFINAE_EXPR
+
+template<typename F>
+struct BOOST_PP_CAT(result_of_callable_fun_2_, BOOST_PP_ITERATION());
+
+template<typename R BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(), typename T)>
+struct BOOST_PP_CAT(result_of_callable_fun_2_, BOOST_PP_ITERATION())<R(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), T))> {
+ R operator()(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), T)) const;
+ typedef result_of_private_type const &(*pfn_t)(...);
+ operator pfn_t() const volatile;
+};
+
+template<typename F>
+struct BOOST_PP_CAT(result_of_callable_fun_, BOOST_PP_ITERATION());
+
+template<typename F>
+struct BOOST_PP_CAT(result_of_callable_fun_, BOOST_PP_ITERATION())<F *>
+ : BOOST_PP_CAT(result_of_callable_fun_2_, BOOST_PP_ITERATION())<F>
+{};
+
+template<typename F>
+struct BOOST_PP_CAT(result_of_callable_fun_, BOOST_PP_ITERATION())<F &>
+ : BOOST_PP_CAT(result_of_callable_fun_2_, BOOST_PP_ITERATION())<F>
+{};
+
+template<typename F>
+struct BOOST_PP_CAT(result_of_select_call_wrapper_type_, BOOST_PP_ITERATION())
+ : mpl::eval_if<
+ is_class<typename remove_reference<F>::type>,
+ result_of_wrap_callable_class<F>,
+ mpl::identity<BOOST_PP_CAT(result_of_callable_fun_, BOOST_PP_ITERATION())<typename remove_cv<F>::type> >
+ >
+{};
+
+template<typename F BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(), typename T)>
+struct BOOST_PP_CAT(result_of_is_callable_, BOOST_PP_ITERATION()) {
+ typedef typename BOOST_PP_CAT(result_of_select_call_wrapper_type_, BOOST_PP_ITERATION())<F>::type wrapper_t;
+ static const bool value = (
+ sizeof(result_of_no_type) == sizeof(detail::result_of_is_private_type(
+ (boost::declval<wrapper_t>()(BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_ITERATION(), boost::declval<T, >() BOOST_PP_INTERCEPT)), result_of_weird_type())
+ ))
+ );
+ typedef mpl::bool_<value> type;
+};
+
+template<typename F BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct cpp0x_result_of_impl<F(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)), true>
+ : lazy_enable_if<
+ BOOST_PP_CAT(result_of_is_callable_, BOOST_PP_ITERATION())<F BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(), T)>
+ , cpp0x_result_of_impl<F(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)), false>
+ >
+{};
+
+template<typename F BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct cpp0x_result_of_impl<F(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)), false>
+{
+ typedef decltype(
+ boost::declval<F>()(
+ BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_ITERATION(), boost::declval<T, >() BOOST_PP_INTERCEPT)
+ )
+ ) type;
+};
+
+#else // BOOST_NO_SFINAE_EXPR
+
+template<typename F BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct cpp0x_result_of_impl<F(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)),
+ typename result_of_always_void<decltype(
+ boost::declval<F>()(
+ BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_ITERATION(), boost::declval<T, >() BOOST_PP_INTERCEPT)
+ )
+ )>::type> {
+ typedef decltype(
+ boost::declval<F>()(
+ BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_ITERATION(), boost::declval<T, >() BOOST_PP_INTERCEPT)
+ )
+ ) type;
+};
+
+#endif // BOOST_NO_SFINAE_EXPR
+
+} // namespace detail
+
+#else // defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK)
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
+template<typename F BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct result_of<F(BOOST_RESULT_OF_ARGS)>
+ : tr1_result_of<F(BOOST_RESULT_OF_ARGS)> { };
+#endif
+
+#endif // defined(BOOST_RESULT_OF_USE_DECLTYPE)
+
+#undef BOOST_RESULT_OF_ARGS
+
+#if BOOST_PP_ITERATION() >= 1
+
+namespace detail {
+
+template<typename R, typename FArgs BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct tr1_result_of_impl<R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)), FArgs, false>
+{
+ typedef R type;
+};
+
+template<typename R, typename FArgs BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct tr1_result_of_impl<R (&)(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T)), FArgs, false>
+{
+ typedef R type;
+};
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
+template<typename R, typename FArgs BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct tr1_result_of_impl<R (T0::*)
+ (BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ITERATION(),T)),
+ FArgs, false>
+{
+ typedef R type;
+};
+
+template<typename R, typename FArgs BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct tr1_result_of_impl<R (T0::*)
+ (BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ITERATION(),T))
+ const,
+ FArgs, false>
+{
+ typedef R type;
+};
+
+template<typename R, typename FArgs BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct tr1_result_of_impl<R (T0::*)
+ (BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ITERATION(),T))
+ volatile,
+ FArgs, false>
+{
+ typedef R type;
+};
+
+template<typename R, typename FArgs BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),typename T)>
+struct tr1_result_of_impl<R (T0::*)
+ (BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ITERATION(),T))
+ const volatile,
+ FArgs, false>
+{
+ typedef R type;
+};
+#endif
+
+}
+#endif
--- /dev/null
+// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2007, Tobias Schwinger.
+//
+// Use, modification, and distribution is subject to 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)
+//
+// See http://www.boost.org/libs/optional for documentation.
+//
+// You are welcome to contact the author at:
+// fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_UTILITY_INPLACE_FACTORY_04APR2007_HPP
+#ifndef BOOST_PP_IS_ITERATING
+
+#include <boost/utility/detail/in_place_factory_prefix.hpp>
+
+namespace boost {
+
+class in_place_factory_base {} ;
+
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_MAX_INPLACE_FACTORY_ARITY)
+#define BOOST_PP_FILENAME_1 <boost/utility/in_place_factory.hpp>
+#include BOOST_PP_ITERATE()
+
+} // namespace boost
+
+#include <boost/utility/detail/in_place_factory_suffix.hpp>
+
+#define BOOST_UTILITY_INPLACE_FACTORY_04APR2007_HPP
+#else
+#define N BOOST_PP_ITERATION()
+
+#if N
+template< BOOST_PP_ENUM_PARAMS(N, class A) >
+#endif
+class BOOST_PP_CAT(in_place_factory,N)
+ :
+ public in_place_factory_base
+{
+public:
+
+ explicit BOOST_PP_CAT(in_place_factory,N)
+ ( BOOST_PP_ENUM_BINARY_PARAMS(N,A,const& a) )
+#if N > 0
+ : BOOST_PP_ENUM(N, BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT, _)
+#endif
+ {}
+
+ template<class T>
+ void* apply(void* address
+ BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) const
+ {
+ return new(address) T( BOOST_PP_ENUM_PARAMS(N, m_a) );
+ }
+
+ template<class T>
+ void* apply(void* address, std::size_t n
+ BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) const
+ {
+ for(char* next = address = this->BOOST_NESTED_TEMPLATE apply<T>(address);
+ !! --n;)
+ this->BOOST_NESTED_TEMPLATE apply<T>(next = next+sizeof(T));
+ return address;
+ }
+
+ BOOST_PP_REPEAT(N, BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL, _)
+};
+
+#if N > 0
+template< BOOST_PP_ENUM_PARAMS(N, class A) >
+inline BOOST_PP_CAT(in_place_factory,N)< BOOST_PP_ENUM_PARAMS(N, A) >
+in_place( BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& a) )
+{
+ return BOOST_PP_CAT(in_place_factory,N)< BOOST_PP_ENUM_PARAMS(N, A) >
+ ( BOOST_PP_ENUM_PARAMS(N, a) );
+}
+#else
+inline in_place_factory0 in_place()
+{
+ return in_place_factory0();
+}
+#endif
+
+#undef N
+#endif
+#endif
+
--- /dev/null
+// Boost result_of library
+
+// Copyright Douglas Gregor 2004. Use, modification and
+// distribution is subject to 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)
+
+// For more information, see http://www.boost.org/libs/utility
+#ifndef BOOST_RESULT_OF_HPP
+#define BOOST_RESULT_OF_HPP
+
+#include <boost/config.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#include <boost/preprocessor/facilities/intercept.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/mpl/has_xxx.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_member_function_pointer.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/utility/declval.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#ifndef BOOST_RESULT_OF_NUM_ARGS
+# define BOOST_RESULT_OF_NUM_ARGS 16
+#endif
+
+// Use the decltype-based version of result_of by default if the compiler
+// supports N3276 <http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3276.pdf>.
+// The user can force the choice by defining BOOST_RESULT_OF_USE_DECLTYPE,
+// BOOST_RESULT_OF_USE_TR1, or BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK but not more than one!
+#if (defined(BOOST_RESULT_OF_USE_DECLTYPE) && defined(BOOST_RESULT_OF_USE_TR1)) || \
+ (defined(BOOST_RESULT_OF_USE_DECLTYPE) && defined(BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK)) || \
+ (defined(BOOST_RESULT_OF_USE_TR1) && defined(BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK))
+# error More than one of BOOST_RESULT_OF_USE_DECLTYPE, BOOST_RESULT_OF_USE_TR1 and \
+ BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK cannot be defined at the same time.
+#endif
+
+#if defined(BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK) && defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
+# error Cannot fallback to decltype if BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE is not defined.
+#endif
+
+#ifndef BOOST_RESULT_OF_USE_TR1
+# ifndef BOOST_RESULT_OF_USE_DECLTYPE
+# ifndef BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK
+# ifndef BOOST_NO_CXX11_DECLTYPE_N3276 // this implies !defined(BOOST_NO_CXX11_DECLTYPE)
+# define BOOST_RESULT_OF_USE_DECLTYPE
+# else
+# define BOOST_RESULT_OF_USE_TR1
+# endif
+# endif
+# endif
+#endif
+
+namespace boost {
+
+template<typename F> struct result_of;
+template<typename F> struct tr1_result_of; // a TR1-style implementation of result_of
+
+#if !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+namespace detail {
+
+BOOST_MPL_HAS_XXX_TRAIT_DEF(result_type)
+
+BOOST_MPL_HAS_XXX_TEMPLATE_DEF(result)
+
+template<typename F, typename FArgs, bool HasResultType> struct tr1_result_of_impl;
+
+template<typename F> struct cpp0x_result_of;
+
+#ifdef BOOST_NO_SFINAE_EXPR
+
+// There doesn't seem to be any other way to turn this off such that the presence of
+// the user-defined operator,() below doesn't cause spurious warning all over the place,
+// so unconditionally turn it off.
+#if BOOST_MSVC
+# pragma warning(disable: 4913) // user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used
+#endif
+
+struct result_of_private_type {};
+
+struct result_of_weird_type {
+ friend result_of_private_type operator,(result_of_private_type, result_of_weird_type);
+};
+
+typedef char result_of_yes_type; // sizeof(result_of_yes_type) == 1
+typedef char (&result_of_no_type)[2]; // sizeof(result_of_no_type) == 2
+
+template<typename T>
+result_of_no_type result_of_is_private_type(T const &);
+result_of_yes_type result_of_is_private_type(result_of_private_type);
+
+template<typename C>
+struct result_of_callable_class : C {
+ result_of_callable_class();
+ typedef result_of_private_type const &(*pfn_t)(...);
+ operator pfn_t() const volatile;
+};
+
+template<typename C>
+struct result_of_wrap_callable_class {
+ typedef result_of_callable_class<C> type;
+};
+
+template<typename C>
+struct result_of_wrap_callable_class<C const> {
+ typedef result_of_callable_class<C> const type;
+};
+
+template<typename C>
+struct result_of_wrap_callable_class<C volatile> {
+ typedef result_of_callable_class<C> volatile type;
+};
+
+template<typename C>
+struct result_of_wrap_callable_class<C const volatile> {
+ typedef result_of_callable_class<C> const volatile type;
+};
+
+template<typename C>
+struct result_of_wrap_callable_class<C &> {
+ typedef typename result_of_wrap_callable_class<C>::type &type;
+};
+
+template<typename F, bool TestCallability = true> struct cpp0x_result_of_impl;
+
+#else // BOOST_NO_SFINAE_EXPR
+
+template<typename T>
+struct result_of_always_void
+{
+ typedef void type;
+};
+
+template<typename F, typename Enable = void> struct cpp0x_result_of_impl {};
+
+#endif // BOOST_NO_SFINAE_EXPR
+
+template<typename F>
+struct result_of_void_impl
+{
+ typedef void type;
+};
+
+template<typename R>
+struct result_of_void_impl<R (*)(void)>
+{
+ typedef R type;
+};
+
+template<typename R>
+struct result_of_void_impl<R (&)(void)>
+{
+ typedef R type;
+};
+
+// Determine the return type of a function pointer or pointer to member.
+template<typename F, typename FArgs>
+struct result_of_pointer
+ : tr1_result_of_impl<typename remove_cv<F>::type, FArgs, false> { };
+
+template<typename F, typename FArgs>
+struct tr1_result_of_impl<F, FArgs, true>
+{
+ typedef typename F::result_type type;
+};
+
+template<typename FArgs>
+struct is_function_with_no_args : mpl::false_ {};
+
+template<typename F>
+struct is_function_with_no_args<F(void)> : mpl::true_ {};
+
+template<typename F, typename FArgs>
+struct result_of_nested_result : F::template result<FArgs>
+{};
+
+template<typename F, typename FArgs>
+struct tr1_result_of_impl<F, FArgs, false>
+ : mpl::if_<is_function_with_no_args<FArgs>,
+ result_of_void_impl<F>,
+ result_of_nested_result<F, FArgs> >::type
+{};
+
+} // end namespace detail
+
+#define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_RESULT_OF_NUM_ARGS,<boost/utility/detail/result_of_iterate.hpp>))
+#include BOOST_PP_ITERATE()
+
+#else
+# define BOOST_NO_RESULT_OF 1
+#endif
+
+}
+
+#endif // BOOST_RESULT_OF_HPP
// BOOST_VERSION / 100 % 1000 is the minor version
// BOOST_VERSION / 100000 is the major version
-#define BOOST_VERSION 104400
+#define BOOST_VERSION 105500
//
// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
// number, y is the minor version number, and z is the patch level if not 0.
// This is used by <config/auto_link.hpp> to select which library version to link to.
-#define BOOST_LIB_VERSION "1_44"
+#define BOOST_LIB_VERSION "1_55"
#endif
-
-
-